关于while不明白的同学可以看看!

来源:9-11 访问兄弟节点

Y习惯你管

2015-09-18 16:25

看好多同学有疑问。解析下这个代码:

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

            x=x.nextSibling;

        }

        return x;

    }

首先,这个判定是在函数内部。函数的参数是n,n的值是在定义y的时候传给它的。即n=document.getElementsByTagName("li")[0]也就是所有li元素的第一个li。 传进来之后呢? 通过函数进行处理之后赋值给y。 函数怎么处理的呢?首先n被传入,函数内部定义x=n.nextSibling。这里就是第一个li元素后面的元素赋值给x。然后开始判断x是否等于1。不等于1呢?x=x.nextSibling; 不等于1就意味着后面的换行符被当作空白的节点那么这个节点后面的节点就是我们想要的。所以x=x.nextSibling,就是自身后面的节点赋值给自己。此时x就是这个空节点后面的兄弟节点。也就是第二个li元素。 如果等于1呢?x=n.nextSibling n是被传入第一个li元素节点了,那么n.nextSibling就是第一个li后面的兄弟元素(第二个li元素),并赋值给自己,此刻x等于它自身后面的兄弟元素。


写回答 关注

2回答

  • hu_h
    2015-09-26 11:51:56

    此中的1表示什么意思啊?是表示判断是否为空的意思吗?

    慕瓜1048... 回复imSeve...

    x.nodeType有什么用?它都有值的。还有是(x&&x.nodeType)!=1,这样运算的吗?

    2015-10-03 01:00:59

    共 2 条回复 >

  • 黑V先生
    2015-09-24 14:35:17

    如果连续两个空白节点呢?那这个while就没有效果了。有什么更好的判断方法么?

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468061 学习 · 21891 问题

查看课程

相似问题