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

为什么要连续操作两次nextSibling

我看示例代码,开始x = n.nextSibling;后来在while循环里 x=x.nextSibling又来一次,这样的话不是变成n的下一个的下一个了吗

提问者:hsbzzhz 2017-02-19 18:26

个回答

  • 一世渔樵
    2017-03-27 15:03:34

    function get_nextSibling(n){
            var x=n.nextSibling;
            while (x && x.nodeType!=1){//当x存在且x不是元素节点时,会执行下面的循环语句
                x=x.nextSibling;//满足上述条件,则继续查找下一个节点,直至找到nodeType值为1的元素节点,则继续执行函数,return x
            }
            return x;
        }

    答案我写成标注了

  • JY_YOLO
    2017-02-20 14:22:05

    var x=n.nextSibling;

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

                x=x.nextSibling;

            }

            return x;

    是这里的是吧  while这里的第二个是只有在第一个nextSibling的节点不符合条件(要求为兄弟节点 比如说是#text就不是本例中的li的兄弟节点)不符合的时候才执行while里即第二个nextSibling  符合要求的话 会直接到return x