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)
就不会崩溃 还可以运行
第四行:a = i.previousSibling; 改为 :a=a.previousSibiling;
因为你前面那种写法 如果a是文本的话 就会一直重复这句话而不是说跳过这个节点去判断前一个节点,
while(a && a.nodeType != 1)是排除非元素节点
while循环里面的a= i.previousSibling; 改为 a= a.previousSibling才对,while循环的目的就是寻找过滤非空白节点的,当满足while循环就说明a的previous是空白节点,所以应该再找a的previous的previous