本文共 983 字,大约阅读时间需要 3 分钟。
先看个函数: function selectUnleave() { var idobj = document.leaveform.id; var LeaveBtobj = document.leaveform.LeaveBt; for (var i=0;i<idobj.length;i++) { idobj[i].checked = false; if (LeaveBtobj[i].disabled==false) { idobj[i].checked = true; } } } 该函数功能根据name为“LeaveBt”的按钮的“disabled”与否确定是否对name为“id”的checkbox进行checked动作。乍一看,似乎没有什么问题,运行一下也没报错,但是在form仅一条记录时该函数无法触发。原来是因为当仅一条记录时,元素的length并不等于1,而是无定义undefined!这相当于getelementbyid了,很奇怪的一个现象。document.leaveform.LeaveBt这样的做法也不是一个标准取值方法,但是太多人用了,而且也确实方便,如何避免这个问题呢?可以参考如下函数: function selectUnleave(){ var idobj = document.leaveform.id; var LeaveBtobj = document.leaveform.LeaveBt; if (typeof(idobj.length)=="undefined") { idobj.checked = false; if (LeaveBtobj.disabled==false) { idobj.checked = true; } } else { for (var i=0;i<idobj.length;i++) { idobj[i].checked = false; if (LeaveBtobj[i].disabled==false) { idobj[i].checked = true; } } } } 通过typeof(idobj.length)=="undefined"可以得知记录是否只有一个,然后进行处理。 转载于:https://my.oschina.net/chenfengzhan/blog/65170