DaWang
2015-08-13 17:04
为什么 申明了x,而且给x赋值了,var x=n.nextSibling; 在while循环中又赋值一次,岂不是为兄弟节点的兄弟节点了??难道我理解错了?
function get_nextSibling(n){ var x=n.nextSibling; while (x && x.nodeType!=1){ x=x.nextSibling; } return x; }
在while之前是为了获得下一个兄弟节点,【因为Internet Explorer 会忽略节点间生成的空白文本节点(例如,换行符号),而其它浏览器不会忽略。】并不知道是元素节点,还是文本节点,所以在while循环中只筛选出了元素节点,只是排除了不是元素节点的情况,并没有再次给x赋值。
这里在函数里 var x,代表x是局部变量,只在函数体内部有效。出了函数体外就不起作用了。或者你先这样理解
把函数体里的x换成其他字母。
function get_nextSibling(n){
var a=n.nextSibling;
while (a && a.nodeType!=1){
a=a.nextSibling;
}
return a;
}
只是想说,函数里的x因为在函数体内var了,所以和函数体外的x是完全不同的变量。你可以看一下全局变量和局部变量的内容。
PS。本人也是菜鸟,说的不对,敬请谅解。
加油
JavaScript进阶篇
468194 学习 · 21891 问题
相似问题