我试图从包含表单中的输入字段的数组中删除某些值:

allFields = theForm.getElementsByTagName("INPUT");

for(j = 0; j < allFields.length; j++) {
    if(allFields[j].className == "btn" || allFields[j].className == "lnk") {
        allFields.splice(j,1);
    }
}

它会导致错误。 Firebug 显示以下错误并且脚本不起作用。



这也发生在我尝试过的任何其他 Array 方法中。我怎样才能解决这个问题?

最佳答案

allFields 不是数组,而是 NodeList

如果要删除元素,请执行反向循环并使用 removeChild:

var allFields = theForm.getElementsByTagName("input");
for(var j=allFields.length-1; j>=0; j--){
    if(allFields[j].className == "btn" || allFields[j].className == "lnk"){
        allFields[j].parentNode.removeChild(allFields[j]);
    }
}

关于javascript splice() 导致 "arrayName.splice() is not a function"错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3574776/

10-11 17:23