【发布时间】:2013-09-06 04:25:18
【问题描述】:
尝试删除表单中所有选中的复选框时,我不断收到错误消息。
"Uncaught TypeError: Cannot read property 'checked' of undefined"
运行时
// remove only the 'checked' tasks
function remChecked() {
var nList = document.forms["theForm"].getElementsByTagName("input");
for (var i = 0, l = nList.length; i < l; i = i + 1) {
var list = nList[i];
if (list.checked == true) {
list.parentNode.removeChild(list);
}
}
}
var el3 = document.getElementById("removeChecked");
el3.addEventListener("click", remChecked, false);
错误是指上面带有“if”的行。
当只有一个带有checked=true 属性的复选框输入时,它可以正常工作。
任何帮助将不胜感激!
【问题讨论】:
-
所有输入元素都是复选框还是单选按钮?如果有任何隐藏、文本、密码等。它们将没有选中的属性。
-
您还预先确定了输入列表的长度,但 nList 是 实时 NodeList...取决于您删除/满足您的条件的项目数量,您可能会结束出现索引越界错误。
标签: javascript dom nodes