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]);}} 为什么同时改变两个,要点两次按钮才出效果呢?
当你点击第一次的时候,将第一个元素进行替换,此时获取的 oldnode.length 减1 ,第二个元素 xx[1] 现在变成了 xx[0],而现在 i ++ 后变为了1,所以后续的循环并没有对第二个元素进行操作。
到此次循环结束后,即第二次点击按钮,重新开始从xx[0]进行操作,第二个元素进行替换。
这个是浏览器兼容问题,跟在前面9.8章中说有空白节点有关