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

类型错误:…[i]未定义

  •  -1
  • Pepe  · 技术社区  · 6 年前

    脚本的这一部分有什么问题:

            function refreshLabels() {
    
                // loop through all document elements
                var allnodes = document.body.getElementsByTagName("*");
    
                for (var i=0, max=allnodes.length; i < max; i++) {
                    // get id current elements
                    var idname = allnodes[i].id;
                    // if id exists, set get id current elements
                    if (idname !== '') {
                        allnodes[i].textContent = multilang.get(idname);
                    }
                }
            }
    

    “类型错误:所有节点[i]未定义”

    我找不到任何解决办法来解决这个问题-这部分有问题吗?

    "for (var i=0, max=allnodes.length; i < max; i++)"
    

    顺便说一句,Chrome也这么说——所以这不仅仅是FF问题。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Ivan    6 年前

    更改textContent的问题是,实际上是在改变 allnodes 数组,从而也改变了

    textContent 正在做:

    function refreshLabels() {
    
      // loop through all document elements
      var allnodes = document.body.getElementsByTagName("*");
      console.log(allnodes.length)
    
      for (var i = 0, max = allnodes.length; i < max; i++) {
        // get id current elements
        var idname = allnodes[i].id;
        // if id exists, set get id current elements
        if (idname !== '') {
          allnodes[i].textContent = idname;
          console.log(allnodes.length)      // this length will change
        }
      }
    }