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

x && x.nodeType!=1这个并且把我弄晕了,还有这个return x也不是很懂,求解答

 x.nodeType!=1 并且x也不等于1吗?

正在回答

4 回答

首先你要知道 while是什么意思 这个方式其实是用来避免IE会忽略空白造成的错误 比如下一个节点 (x && x.nodeType!=1 )其实意思是 存在下一个节点,并且这个节点的类型不为1(类型唯一就是文本,而这个函数要找的是下一个元素节点!比如P标签,H标签什么的。)好了,当满足类型不为1的时候,把这个元素赋值给X,然后输出X  输出并不是打印的意思。 return 意思是 输出给函数外部使用。 你如果不return,鬼知道你这个函数要给什么给外部? 当然 你也可以不输出 直接在函数里面 write ,就靠函数本身打印。


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

风风无 提问者

非常感谢!
2016-08-31 回复 有任何疑惑可以回复我~
#2

哦gqgq_627

类型为1是元素节点哦 类型为3是文本 元素类型 节点类型 元素 1 属性 2 文本 3 注释 8 文档 9
2016-10-27 回复 有任何疑惑可以回复我~

1、x && x.nodeType!=1 这个表达式貌似有点问题, x=n.nextSibling;x的返回值是一个节点或者是空,节点或空值不可能等于1!

楼主可以把它等价于:x.nodeType!=1,翻译过来就是:x的节点的节点类型不等于1,当节点的类型为1的时候,该节点是个元素节点,比如li p div什么的。

while (x.nodeType!=1){ x=x.nextSibling; },当x的节点的节点类型不等于1的时候,也就是x不是元素节点的时候,查找x的下一个节点,再对下一个节点的nodeType进行判断,是否等于1,一直循环下去。

2、 return x,是函数的返回值,也就是这个函数的计算结果,在该函数中返回的是:下一个节点,这个返回值会被外部调用,如果不调用,那就没有多大意义

         


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

楼上的仁兄,不输出返回值的话,下面的代码就都没法执行了!

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

同问!http://img1.sycdn.imooc.com//57c644e20001919007200345.jpg

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

举报

0/150
提交
取消

x && x.nodeType!=1这个并且把我弄晕了,还有这个return x也不是很懂,求解答

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