x.nodeType!=1不就是说x不是元素节点了吗?x.nodeType==1才是元素节点啊?那为什么while里面的(x.nodeType!=1)就把x的下一个节点赋给x。既然x不是元素节点了,那应该直接输出,当满足x.nodeType=1的时候才应该x=x.nextSibling
nodeType值=1,代表是元素节点,目标就是元素节点
while (x && x.nodeType!=1) 这里面,有两个条件,一个是(x),表示为真。另一个条件是x.nodeType != 1,表示
当nodeType不为1,也就是当不是元素节点时,x=x.nextSibling; 要再跳到下一个,兄弟节点。当然,这个兄弟节点,也有可能不为1,那么,再跳下个。直到nodeType==1时。。。。
我也不懂为什么 要这样写这句判断
hgfhfu092090-
我跟你一样的疑惑,你弄懂了吗?
“x不是元素节点了,那应该直接输出“。这句话什么意思啊 ,x不是元素节点的不是应该继续找吗 因为要找的是元素节点啊
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的节点,不满足循环条件,跳出循环,返回节点(得到元素节点)。