问答详情
源自:9-11 访问兄弟节点

x && x.nodeType!=1

如果找不到元素节点,那么这个循环就一直进行下去?

提问者:不要话说得好1 2016-03-31 22:21

个回答

  • hello清风
    2016-04-19 11:18:28

    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;

  • aid123321
    2016-04-01 11:39:41

    x的意识是:“一个节点” ;  && 这个符号是逻辑操作符 “且”的意识;x.nodeType!=1 这个的意识是:这个节点的类型不是元素类型。

    合起来:x && x.nodeType!=1   的意识是,节点并且这个节点的类型不是元素类型,条件为true,执行操作,如果条件为false  不执行!



  • recying5566
    2016-04-01 10:10:41

    不会的,首先你要理解x && x.nodeType!=1的意思,它等价于x且x.nodeType!=1;x和x.nodeType!=1是独立的,没有任何关系。如果找不到下一个节点,x会返回null,那么x的判断为false,跳出循环。