为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 申明了x,而且给x赋值了,var x=n.nextSibling; 在while循环中又赋值一次,岂不是为兄弟节点的兄弟节点了??

为什么   申明了x,而且给x赋值了,var x=n.nextSibling;  在while循环中又赋值一次,岂不是为兄弟节点的兄弟节点了??难道我理解错了?

    function get_nextSibling(n){
        var x=n.nextSibling;
        while (x && x.nodeType!=1){
           x=x.nextSibling;
        }
        return x;
    }


正在回答

2 回答

在while之前是为了获得下一个兄弟节点,【因为Internet Explorer 会忽略节点间生成的空白文本节点(例如,换行符号),而其它浏览器不会忽略。】并不知道是元素节点,还是文本节点,所以在while循环中只筛选出了元素节点,只是排除了不是元素节点的情况,并没有再次给x赋值。

0 回复 有任何疑惑可以回复我~

这里在函数里 var x,代表x是局部变量,只在函数体内部有效。出了函数体外就不起作用了。或者你先这样理解

把函数体里的x换成其他字母。

function get_nextSibling(n){

        var a=n.nextSibling;

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

           a=a.nextSibling;

        }

        return a;

    }

只是想说,函数里的x因为在函数体内var了,所以和函数体外的x是完全不同的变量。你可以看一下全局变量和局部变量的内容。

PS。本人也是菜鸟,说的不对,敬请谅解。

加油

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么 申明了x,而且给x赋值了,var x=n.nextSibling; 在while循环中又赋值一次,岂不是为兄弟节点的兄弟节点了??

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信