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

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

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

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等于它自身后面的兄弟元素。


提问者:Y习惯你管 2015-09-18 16:25

个回答

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

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

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

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