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

为什么我这样写页面崩溃了

function get_previousSibling(i){
        var a = i.previousSibling;
        while(a && a.nodeType != 1){
            a= i.previousSibling;
        }
        return a;
    }
    var b = document.getElementsByTagName('li')[1];
    document.write(b.nodeName);
    document.write(' = ');
    document.write(b.innerHTML+'<br>');
    
    var c = get_previousSibling(b);
    if(c!=null){
        document.write(c.nodeName);
        document.write(' = ');
        document.write(c.innerHTML);
    }else{
        document.write('这个是空节点');
    }

我这样写页面崩溃了,我感觉没有啥问题.....看不出来问题,然后我把

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

改成

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

就不会崩溃  还可以运行

正在回答

3 回答

第四行:a = i.previousSibling; 改为 :a=a.previousSibiling;

因为你前面那种写法 如果a是文本的话  就会一直重复这句话而不是说跳过这个节点去判断前一个节点,

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

while(a && a.nodeType != 1)是排除非元素节点

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

while循环里面的a= i.previousSibling; 改为 a= a.previousSibling才对,while循环的目的就是寻找过滤非空白节点的,当满足while循环就说明a的previous是空白节点,所以应该再找a的previous的previous

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

举报

0/150
提交
取消

为什么我这样写页面崩溃了

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