为什么同时改变两个,要点两次按钮才出效果呢?

来源:9-15 替换元素节点replaceChild()

天晴3313633

2016-06-02 13:45

function replaceMessage(){ var oldnode=document.getElementsByName("oldnode"); var xx=oldnode.length; var newnode=document.createElement("i");  for(var i=0 ;i<xx;i++){   newnode.innerHTML=oldnode[i].innerHTML;   oldnode[i].parentNode.replaceChild(newnode,oldnode[i]);}}     为什么同时改变两个,要点两次按钮才出效果呢?

写回答 关注

2回答

  • Cassie_yu
    2016-06-14 10:26:32

    当你点击第一次的时候,将第一个元素进行替换,此时获取的 oldnode.length 减1 ,第二个元素 xx[1] 现在变成了 xx[0],而现在 i ++ 后变为了1,所以后续的循环并没有对第二个元素进行操作。

    到此次循环结束后,即第二次点击按钮,重新开始从xx[0]进行操作,第二个元素进行替换。

  • 慕码人3019966
    2016-06-02 20:21:52

    这个是浏览器兼容问题,跟在前面9.8章中说有空白节点有关

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468194 学习 · 21891 问题

查看课程

相似问题