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

为什么这个代码一提交就卡了

//前一个节点

    function get_previousSibling(n){

        

        var a=n.previousSibling;

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

            a=n.previousSibling;

        }

        return a;

    }

    var a = document.getElementsByTagName("li")[4];

    document.write(a.nodeName);

    document.write(" = ");

    document.write(a.innerHTML);

    

    var b = get_previousSibling(a);

    

    if(b!=null){

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

        document.write(b.nodeName);

        document.write(" = ");

        document.write(b.innerHTML+'<br>');

    }


正在回答

1 回答

卡了一般都是你代码死循环  导致浏览器崩溃了

你代码唯一能崩溃的就是 while那里的循环

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

            a=n.previousSibling;

        }

只要a且a的类型不为1的时候  

a等于n的上一个节点

只要满足  只要a且a的类型不为1的时候   这里a就一直等于n的上一个节点

   死循环了


正确的是

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

            a=a.previousSibling;

        }

只要满足  只要a且a的类型不为1的时候   这里a就一直等于a的上一个节点

a就一直向上跳  直到找到类型不为1 或者a不存在的的时候就停止了



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

举报

0/150
提交
取消

为什么这个代码一提交就卡了

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