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

x && x.nodeType!=1这个并且把我弄晕了,还有这个return x也不是很懂,求解答

 x.nodeType!=1 并且x也不等于1吗?

提问者:风风无 2016-08-31 08:43

个回答

  • feelrt
    2016-08-31 11:12:32
    已采纳

    首先你要知道 while是什么意思 这个方式其实是用来避免IE会忽略空白造成的错误 比如下一个节点 (x && x.nodeType!=1 )其实意思是 存在下一个节点,并且这个节点的类型不为1(类型唯一就是文本,而这个函数要找的是下一个元素节点!比如P标签,H标签什么的。)好了,当满足类型不为1的时候,把这个元素赋值给X,然后输出X  输出并不是打印的意思。 return 意思是 输出给函数外部使用。 你如果不return,鬼知道你这个函数要给什么给外部? 当然 你也可以不输出 直接在函数里面 write ,就靠函数本身打印。


  • any_do
    2016-08-31 15:25:42

    1、x && x.nodeType!=1 这个表达式貌似有点问题, x=n.nextSibling;x的返回值是一个节点或者是空,节点或空值不可能等于1!

    楼主可以把它等价于:x.nodeType!=1,翻译过来就是:x的节点的节点类型不等于1,当节点的类型为1的时候,该节点是个元素节点,比如li p div什么的。

    while (x.nodeType!=1){ x=x.nextSibling; },当x的节点的节点类型不等于1的时候,也就是x不是元素节点的时候,查找x的下一个节点,再对下一个节点的nodeType进行判断,是否等于1,一直循环下去。

    2、 return x,是函数的返回值,也就是这个函数的计算结果,在该函数中返回的是:下一个节点,这个返回值会被外部调用,如果不调用,那就没有多大意义

             


  • any_do
    2016-08-31 15:07:55

    楼上的仁兄,不输出返回值的话,下面的代码就都没法执行了!

  • 乄小安静
    2016-08-31 10:46:02

    同问!http://img.mukewang.com/57c644e20001919007200345.jpg