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

来源:9-11 访问兄弟节点

再码一段

2017-03-22 17:50

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

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

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

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

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

写回答 关注

3回答

  • 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_北海道... 回复再码一段

    我个人认为,如果x=false,应该也就没有必要判断类型了,个人认为

    2017-03-23 22:32:29

    共 3 条回复 >

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

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

    再码一段

    所以啊就是这样,第二次执行函数时,最后返回给y的x,已经判断x一定存在了,y=x,还判断y!=null。这不是重复了吗?

    2017-03-23 14:59:06

    共 1 条回复 >

  • 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这个语句了,你没有读懂这个代码的意思而已

    再码一段

    那句while (x && x.nodeType!=1)是什么意思?后半段判断类型不等于一,就继续往上找上一个元素。前半句x判断什么?

    2017-03-23 13:12:14

    共 1 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468061 学习 · 21891 问题

查看课程

相似问题