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

 if(y!=null) 这个是什么意思?

        while (x && x.nodeType!=1)

这里已经判断节点的上个兄弟节点存在了

那么为什么还要 if(y!=null)这句

y!=null是节点存在 还是 不为空节点 的意思

是不是首先判断节点存在再判断节点不是空节点我猜的

提问者:再码一段 2017-03-22 17:50

个回答

  • qq_北海道和风_0
    2017-03-23 15:07:57
    已采纳

    上面x!=null是提供了一个方法,只是确保函数一定运行,后面判断y!=null是判断var x=document.getElementsByTagName("li")[0];有没有前一个节点的,判断的内容不是同一个,我也是弄了两天才弄明白的,首先你要分开看,不要揉在一起想,把每一段为什么要这样写的目的搞清楚了,你就对这个代码有全新认识了。

    第一段:

     function get_previousSibling(n){

            var x=n.previousSibling;

            while (x && x.nodeType!=1){

                x=x.previousSibling;

            }

            return x;

        }

    第二段:

     var x=document.getElementsByTagName("li")[1];

        document.write(x.nodeName);

        document.write(" = ");

        document.write(x.innerHTML);

    第三段:

     var y=get_previousSibling(x);

        

        if(y!=null){

            document.write("<br />previoussibling: ");

            document.write(y.nodeName);

            document.write(" = ");

            document.write(y.innerHTML);

        }else{

          document.write("<br>已经是最后一个节点");      

        }

    把每段为什么这样写的目的弄清楚了就OK了

  • qq_北海道和风_0
    2017-03-23 14:03:35

    可以看成是x!=null,保证x一定存在,为了保证代码严谨

  • qq_北海道和风_0
    2017-03-23 11:31:46

    其实你想多了,你仔细看看if    else这个判断语句,因为var y=get_previousSibling(x);是获得 var x=document.getElementsByTagName("li")[1];的向上一个节点,所以设var x=document.getElementsByTagName("li")[0];已经是第一个节点了,就不可能还有向上节点。就输出else这个语句了,你没有读懂这个代码的意思而已