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

通过检测nodeType是不是element node

for(var i=0;i<len;i++){

      if(x.childNodes[i].nodeType==1){

        document.write("div的第一个子节点:"+x.firstChild+"<br>"); break; 

      }

  }

 if(x.childNodes[i].nodeType==1)中的nodeType总会报错啊

正在回答

2 回答

x.childNodes[i].nodeType=="1"

if 判断里面那个type 显示是1,不是数字,而是字符串

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

爱上慕婉清6262634

var x=document.getElementById("con"); for(i=0;i<x.childNodes.length;i++){ if(x.childNodes[i].nodeType=="1"){ document.write(x.childNodes[i].nodeName); } }
2017-09-26 回复 有任何疑惑可以回复我~
#2

慕码人4387445 提问者 回复 爱上慕婉清6262634

不对吧,我看红皮书上说的就是与数字值比较啊,而且w3c上也是说的是字符串值啊: 技术细节 返回值: 字符串值,代表节点的节点类型。 DOM 版本 Core Level 1 Node Object
2017-09-28 回复 有任何疑惑可以回复我~
#3

爱上慕婉清6262634 回复 慕码人4387445 提问者

搞错了,我用typeof测试了一下返回值确实是number。然后把你的代码中的break;命令去掉后就正确了
2017-10-09 回复 有任何疑惑可以回复我~

应该不会报错

你是不是循环的长度没有赋值呢,i<len 应该是i < x.childNodes.length

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

慕码人4387445 提问者

len变量我是在前面就赋值了
2017-09-24 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

通过检测nodeType是不是element node

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