为了账号安全,请及时绑定邮箱和手机立即绑定

哪里出错了

otest.insertBefore(newnode,otest[i]);    这句话错了?

正在回答

4 回答

回复 lpn121:刚没认真看,你代码还是很有问题的
这么写才是正确的
var otest = document.getElementsByTagName("ul")[0];
var newnode = document.createElement("li");
newnode.innerHTML="PHP";
for(var i=0;i<otest.childNodes.length;i++){
    if(otest.childNodes[i].innerHTML=="HTML"){
       otest.insertBefore(newnode,otest.childNodes[i]);        
    }else{
       document.write("no");
    }
}

0 回复 有任何疑惑可以回复我~
#1

Crazy丶魂

insertBefore() 方法是在指定的已有子节点之前插入新的子节点
2015-03-31 回复 有任何疑惑可以回复我~

otest.insertBefore(newnode,otest[i]);  改成otest[i].parentNode.insertBefore(newnode,otest[i]);  

0 回复 有任何疑惑可以回复我~
#1

lpn121 提问者

返回父节点
2015-04-01 回复 有任何疑惑可以回复我~

var otest = document.getElementsByTagName("ul")[0].childNodes;

把后面的.childNodes去了,insertBefore你必须明确指出哪个节点,childNodes返回的是子节点NodeList

0 回复 有任何疑惑可以回复我~
#1

lpn121 提问者

var a=document.getElementById("test"); a.insertBefore(newnode,otest[i]); 在for循环里面加多了这一句。是不是var otest = document.getElementsByTagName("ul")[0].childNodes; 之后otest变成了<ul>的子节点?
2015-03-31 回复 有任何疑惑可以回复我~
#2

Crazy丶魂 回复 lpn121 提问者

是的,childNodes这个方法就是取的所有孩子节点
2015-03-31 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       468046    人
  • 解答问题       21891    个

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

进入课程

哪里出错了

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信