为了账号安全,请及时绑定邮箱和手机立即绑定

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


正在回答

3 回答

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

0 回复 有任何疑惑可以回复我~
#1

imSeveNyU

x && x.nodeType!=1这里的x是指是否存在,x.nodeType判断节点的类型,返回值用12个数值常量来表示,1的意思是元素节点。换句话说,这里判断是空白节点,如回车,空格。
2015-10-01 回复 有任何疑惑可以回复我~
#2

慕瓜1048528 回复 imSeveNyU

x.nodeType有什么用?它都有值的。还有是(x&&x.nodeType)!=1,这样运算的吗?
2015-10-03 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信