代码之家  ›  专栏  ›  技术社区  ›  Dean

javascript splice()导致“arrayname.splice()不是函数”错误

  •  4
  • Dean  · 技术社区  · 14 年前

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

    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不是函数

    我尝试的任何其他数组方法也会发生这种情况。我怎么修这个?

    1 回复  |  直到 14 年前
        1
  •  6
  •   Nikhil    14 年前

    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]);
        }
    }