9-11章 访问兄弟节点,断断续续弄了好几天没搞懂,有几个点,需要大家解惑
function fn(a){
var x=1;
while (x && x.nodeType!=1){
x=3;
}
return x;
}
fn(4);这段代码,和下面的代码,
function get_nextSibling(n){
var a=n.nextSibling;
while (a && a.nodeType!=1){
a=a.nextSibling;
}
return a;
}
如果把获取兄弟节点改成number数字,来写的话, 1、第一段代码中的运行原理和第二段相同么。2、第一段代码运行不了,服务器崩溃,问题出在哪里。3
var x=1;
while (x && x.nodeType!=1){
x=3;
}
return x;和
var a=n.nextSibling;
while (a && a.nodeType!=1){
a=a.nextSibling;
}
return a;
中,已经申明了局部函数,并进行了初始化 赋值,那while里的 x=3;和a=a.nextSibling;又是什么意思 ,我觉得 应该是执行while循环,如果条件成立,那么将变量 重新赋值,但是,第一种 运行不了,第二种我还没看懂。求各位大大科普
ok.
第一段代码你给x赋值之后他不就是文本节点了么,总之肯定不是元素节点,所以x的nodeType肯定不是1,那么只要x不是0,这个循环就会永远持续下去,而事实上他也确实不会为0,这是一个死循环;
第二段代码段的意义是为了找出n的下一个元素节点。默认传入的参数n是一个节点,那么进来之后先将n的下一个节点赋给a,而n的下一个节点a可能是属性、可能是文本、也可能是元素,还可能是空的,这就需要进入循环进行判断找出下一个元素节点。a&&a.nodetype!=1是指,如果a不为空且a的节点类型不为1时,进入循环(元素节点的节点类型才是1),一直往下循环,直至找到一个元素节点,并将其作为返回值。
这一段基础内容在9-7章,需要好好看一下。