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

看不懂,有没有大神帮忙解释一下这段代码,主要是while的条件看不懂,谢谢

function get_previousSibling(n)
{
var x=n.previousSibling;
while (x && x.nodeType!=1)
  {
  x=x.previousSibling;
  }
return x;
}

提问者:慕斯6055237 2018-10-05 14:38

个回答

  • 凌微阳
    2018-10-08 10:06:00
    已采纳

    主要是判断之前紧跟的节点是不是空,Internet Explorer 会忽略节点间生成的空白文本节点(例如,换行符号),而其它浏览器不会忽略,所以要判断一下。如果nodeType==1就说明是元素节点,就可返回x结束函数,如果不等于1就再向前找一个节点来跳过这个空白文本节点( x=x.previousSibling;)

  • 慕圣3571134
    2018-11-24 23:13:34

    while里面的条件x已经被赋值n.previousSibling,也就是说x为n节点的前一个节点,如果前面没有节点的话,就返回null,根据数据自动转换类型规则,x=null;null=false;所以x=false那么条件不成立,就不执行循环体内的代码了。我想后面的x.nodeType!=1你应该理解的吧。

  • weibo_慕丝3052053
    2018-11-14 11:10:57

    你好,n.previousSibling中的previousSibling是什么意思