我一直没有在这里发帖,因为我觉得我还没有达到回馈社区的技能水平,但是这个让我完全难住了。
我有一个递归的 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/