如果找不到元素节点,那么这个循环就一直进行下去?
while (x && x.nodeType!=1)必须写!必须判断x为真 并且x.nodeType!=1才执行循环。你试着将var x=document.getElementsByTagName("li")[2];while (x && x.nodeType!=1)和while (x.nodeType!=1),就能看出有差别了,<li id="c">html</li>的下一个子节点是空白符再下一个就没有了,是null(火狐浏览器),null属于false,如果不判断x是否为真,只写while(x.nodeType!=1)是错误的语句,null是没有nodeType属性的,这里就出错了,停住了,不在执行下面的return x;
x的意识是:“一个节点” ; && 这个符号是逻辑操作符 “且”的意识;x.nodeType!=1 这个的意识是:这个节点的类型不是元素类型。
合起来:x && x.nodeType!=1 的意识是,节点并且这个节点的类型不是元素类型,条件为true,执行操作,如果条件为false 不执行!
不会的,首先你要理解x && x.nodeType!=1的意思,它等价于x且x.nodeType!=1;x和x.nodeType!=1是独立的,没有任何关系。如果找不到下一个节点,x会返回null,那么x的判断为false,跳出循环。