长路漫浩浩
2017-08-19 16:21
function get_nextSibling(n){
var x=n.nextSibling;
while (x && x.nodeType!=1){
x=x.nextSibling;
}
return x;
}
这里括号里的 && x!=1 有必要吗?为什么?
操作符之间的优先级(高到低):
算术操作符 → 比较操作符 → 逻辑操作符 → "="赋值符号
所以这里并没有上面所说的x !=1,因为逻辑操作符的优先级是低于比较操作符的,也就是先比较在判断逻辑关系的
元素节点nodetype是1 如果不是就跳过 如果是就返回值。
加上x!=1判断X这个节点是否存在的意思
楼上回答是对的
因为有的浏览器不会忽略标签之间的空白符(浏览器的JavaScript解析器会把空白符也当节点去处理),空白符相当于字符串,字符串(Text)的nodeType类型是3.
加上这个x.nodeType!=1判断如果nodeType不是元素(Element)的话,就继续查找到正确的节点。
<li id="a">javascript</li>
<li id="b">jquery</li>
<li id="c">html</li>
像li标签这样换行的话就有些浏览器就会认为有空白符存在,所以把这些标签都挪成1行就没问题了(但是这样代码格式看起来就很难看)。
JavaScript进阶篇
468194 学习 · 21891 问题
相似问题