javascript - 在 IE8 中遍历 DOM 中断的递归 JavaScript 函数

标签 javascript internet-explorer-8

我一直没有在这里发帖,因为我觉得我还没有达到回馈社区的技能水平,但是这个让我完全难住了。

我有一个递归的 JavaScript 函数,它将一个计数器附加到节点树中所有 id 和 name 元素的末尾。该功能适用​​于 FF、Chrome、Safari 和 IE9,但不适用于 IE8。

function counterAppend(nodes,counter)
{
    var newField = nodes.childNodes;
    for (var i=0;i<newField.length;i++)
    {
        var theName = newField[i].name;
        if (theName)
        {
            newField[i].name = theName + counter;
        }
        var theId = newField[i].id;
        if (theId)
        {
            newField[i].id = theId + counter;
        }

        //recursive part
        if(newField[i].childNodes.length>0)
        {
            newField[i] = counterAppend(newField[i],counter);
        }
    }
    return nodes;
}

我在线上收到错误: newField[i] = counterAppend(newField[i],counter);

在调试中,它说: 中断 JS 运行时错误 - 对象不支持此属性或方法

IE8 和其他浏览器有什么不同,我该如何修改它来解决错误?

最佳答案

为什么要将函数的返回分配给 newField[i]?我不知道你希望它做什么。如果代码只是修改 ID/名称,则不需要返回值。我应该认为这是混淆 IE 的原因,我不确定为什么它不会混淆其他浏览器......

关于javascript - 在 IE8 中遍历 DOM 中断的递归 JavaScript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13885649/

相关文章:

javascript - 使用 Javascript 的 HTML5 音频

javascript - 对 IE8 的通用 HTML5 支持

Javascript react 组件条件菜单项显示

javascript - 为什么 jQuery 中的 $.put() 和 $.delete() 不是原生的?

javascript - 将变量从php传递到js?或者更好的方法?

html - IE 8 div 和 css 游标

jquery - 多个背景图片 IE8

javascript - 在ie8中jquery错误(属性 '$'的值为null或未定义,不是Function对象)

internet-explorer-8 - IE8开发人员工具Pin无效

javascript - 如何在 JavaScript 中清除 .appendChild