相关疑难解决方法(0)

为什么在将一种元素替换为另一种元素时,replaceChild()表现得很奇怪?

我在javascript上比较新,发现了一个我今天无法解释的有趣行为.我<hr>在网站上有一个自定义(有一个图像),在IE7及以下显示奇怪.为了克服这个问题,我想replaceChild()结合使用getElementsByTag().最初,我只是试图遍历列表,所以:

var hrules = document.getElementsByTagName('hr');
for (var i=0; i < hrules.length; i++) {

   var newHrule = document.createElement("div");
   newHrule.className = 'myHr';

   hrules[i].parentNode.replaceChild(newHrule, hrules[i]);

   document.write(i);
}
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用:它实际上只获得了一半的元素,跳过了其他元素.打印i给出<hr>文档中实际元素数量的半整数值(例如,如果有7个<hr/>元素,则打印4个.相比之下,以下操作:

var hrules = document.getElementsByTagName('hr');
var i = 0;
while (i < hrules.length) {

   var newHrule = document.createElement("div");
   newHrule.className = 'myHr';

   hrules[i].parentNode.replaceChild(newHrule, hrules[i]);

   document.write(i);
}
Run Code Online (Sandbox Code Playgroud)

i打印的次数与文档中的hrules相同(但当然总是0,因为我没有递增),并且正确更换了hrules.我认识到while这里也可能while(true)- 直到它耗尽<hr>元素,但似乎在此之后停止(它不再打印0).

我已经尝试了许多不同类型的元素,并观察到只有在用一种元素替换另一种元素时才会发生这种情况.即,替换p …

javascript

5
推荐指数
1
解决办法
2356
查看次数

标签 统计

javascript ×1