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

不太懂两次赋值

这样不是变成x的下两个节点了?

function get_nextSibling(n){

        var x=n.nextSibling;

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

            x=x.nextSibling;

        }

        return x;

    }

问题如题。。


提问者:qq_混沌肆虐_0 2015-11-02 17:17

个回答

  • DeepNet
    2015-11-03 22:29:13
    已采纳

    <script type="text/javascript">

        function get_nextSibling(n){

        document.write("n的值为:"+n.value);

            var x=n.nextSibling;

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

                x=x.nextSibling;

            }

            return x;

        }


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

        document.write("x的值为:"+x.value+"<br/>"+x.nodeValue+"<br/>"+x.nodeName+"<br/>"+x.nodeType+"<br/>");

    y=get_nextSibling(x);

    </script>


  • 十nian
    2015-11-09 23:35:57

    我的看法应该是兼容性问题吧,因为在谷歌和火狐下,空白的地方也算是一个节点,ie下空白则不会算是个节点,可以alert一下节点的个数看下

  • 三国之编程
    2015-11-03 01:53:47

    我是这么理解不知道对不对,你可以参考下:

    function get_nextSibling(n){

            var x=n.nextSibling;   //这条语句是当下面的while循环不成立时返回的给return的值。

            while (x && x.nodeType!=1){     //当循环while成立时,即两个条件满足(while 会循环到返回的nodeType=1才会停止,并给x赋停止前得到的值)

                x=x.nextSibling;    //给x重新赋值(新值会覆盖旧值),给return返回这个新的值。

            }           

            return x;  //所以这里返回的x的值取决于while循环是否成立;

        }