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

不懂x.nodeType!=1

x.nodeType!=1不就是说x不是元素节点了吗?x.nodeType==1才是元素节点啊?那为什么while里面的(x.nodeType!=1)就把x的下一个节点赋给x。既然x不是元素节点了,那应该直接输出,当满足x.nodeType=1的时候才应该x=x.nextSibling

正在回答

6 回答

nodeType值=1,代表是元素节点,目标就是元素节点

while (x && x.nodeType!=1) 这里面,有两个条件,一个是(x),表示为真。另一个条件是x.nodeType != 1,表示

当nodeType不为1,也就是当不是元素节点时,x=x.nextSibling; 要再跳到下一个,兄弟节点。当然,这个兄弟节点,也有可能不为1,那么,再跳下个。直到nodeType==1时。。。。

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

我也不懂为什么  要这样写这句判断

0 回复 有任何疑惑可以回复我~
hgfhfu092090-


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

我跟你一样的疑惑,你弄懂了吗?

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

“x不是元素节点了,那应该直接输出“。这句话什么意思啊 ,x不是元素节点的不是应该继续找吗 因为要找的是元素节点啊

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

function get_nextSibling(n){  //返回下一个元素节点     

var x=n.nextSibling; //定义X为下一个节点

while (x && x.nodeType!=1){   //不是元素节点及节点不为空就继续寻找下一个,是元素节点就跳出循环

x=x.nextSibling;       

}

return x; //返回节点

假如节点信息(nodeType)如下 : 1 3 1 3 1 3

假如现在是第一个1,找下一个1,那么X初值nodeType为3的节点,满足循环条件继续执行,X变为 nodeType为1的节点,不满足循环条件,跳出循环,返回节点(得到元素节点)。


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

慕前端1842812

你好,请问这里while里为什么要判断x节点不为空,不是很理解哈
2016-08-05 回复 有任何疑惑可以回复我~
#2

水里有条鱼 回复 慕前端1842812

x为空的话,就是说上一个节点已经是最后一个节点了,我这个节点已经超出范围了所以就是空节点,这个道理有点像数组,假如a=[1,2,1],那么a[3]就是空的(undefined),a[2]就是最后那个数了
2016-08-05 回复 有任何疑惑可以回复我~
#3

慕前端1842812 回复 水里有条鱼

原来如此!十分感谢!
2016-08-08 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

不懂x.nodeType!=1

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