再码一段
2017-03-22 17:50
while (x && x.nodeType!=1)
这里已经判断节点的上个兄弟节点存在了
那么为什么还要 if(y!=null)这句
y!=null是节点存在 还是 不为空节点 的意思
是不是首先判断节点存在再判断节点不是空节点我猜的
上面x!=null是提供了一个方法,只是确保函数一定运行,后面判断y!=null是判断var x=document.getElementsByTagName("li")[0];有没有前一个节点的,判断的内容不是同一个,我也是弄了两天才弄明白的,首先你要分开看,不要揉在一起想,把每一段为什么要这样写的目的搞清楚了,你就对这个代码有全新认识了。
第一段:
function get_previousSibling(n){
var x=n.previousSibling;
while (x && x.nodeType!=1){
x=x.previousSibling;
}
return x;
}
第二段:
var x=document.getElementsByTagName("li")[1];
document.write(x.nodeName);
document.write(" = ");
document.write(x.innerHTML);
第三段:
var y=get_previousSibling(x);
if(y!=null){
document.write("<br />previoussibling: ");
document.write(y.nodeName);
document.write(" = ");
document.write(y.innerHTML);
}else{
document.write("<br>已经是最后一个节点");
}
把每段为什么这样写的目的弄清楚了就OK了
可以看成是x!=null,保证x一定存在,为了保证代码严谨
其实你想多了,你仔细看看if else这个判断语句,因为var y=get_previousSibling(x);是获得 var x=document.getElementsByTagName("li")[1];的向上一个节点,所以设var x=document.getElementsByTagName("li")[0];已经是第一个节点了,就不可能还有向上节点。就输出else这个语句了,你没有读懂这个代码的意思而已
JavaScript进阶篇
468061 学习 · 21891 问题
相似问题
回答 3
回答 2