javascript splice() 导致 "arrayName.splice() is not a function"错误

标签 javascript arrays

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

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 显示以下错误并且脚本不起作用。

allFields.splice is not a function

这也发生在我尝试过的任何其他 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/

相关文章:

javascript,diff函数返回相同的字符串

javascript - 如何在 MySQL 中安全地存储 HTML 数据?

javascript - 如何根据对象的两个值对填充有对象的数组进行排序?

javascript - 记录数组原型(prototype)上的所有方法

Javascript/ES6 查找唯一元素并在数组中对它们进行计数

c# - 数组 C# 中的递增计数器

javascript - 按与第二个数组中的字符串相同的对象属性值对数组进行排序

php - 动态日期选择(Php/JS)

javascript - pageshow后刷新jquery mobile中的页面

javascript - 如何将 bluebird Promise 应用于我现有的 javascript 遍历和基于递归的逻辑?