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

for循环里var i in List和var i in List输出结果不一样

for循环里var i in List和var i in List输出结果不一样

慕后端3562752 2017-07-28 16:27:22
<body>  <ul>     <li>javascript</li>     <li>HTML/CSS</li>     <li>jQuery</li>       </ul>  <script type="text/javascript">    var List=document.getElementsByTagName("li");    for(var i in List){        document.write("List: "+i+"  |");        document.write(List[i].nodeName+":"+List[i].nodeValue+":"+List[i].nodeType+"<br/>");    }  </script></body>原来该输出:List: 0 |LI:null:1List: 1 |LI:null:1List: 2 |LI:null:1上面会比var i in List多输出下面的:List: length |undefined:undefined:undefinedList: item |undefined:undefined:undefinedList: namedItem |undefined:undefined:undefined
查看完整描述

3 回答

已采纳
?
业余奶茶品鉴师

TA贡献260条经验 获得超388个赞

//img1.sycdn.imooc.com//597b04d6000171e018781450.jpg

如图所示:

用 

var List=document.getElementsByTagName("li");

获得的 List 是个对象,每个对象都有一个"__proto__" 属性,所以循环了6次,就有了下面那些。

记得采纳

查看完整回答
2 反对 回复 2017-07-28
?
Yexiaomo

TA贡献152条经验 获得超157个赞

以前没注意,今天才发现QAQ

查询文档知:getElementsByTagName() 方法可返回带有指定标签名的对象的集合

说是带有指定标签的对象, 自己测试了一下,如下

<script type="text/javascript">
    var List=document.getElementsByTagName("li");
    for(var i in List){
        l = List[i];
        console.log(i+':'+l);
    }
  </script>

1.控制台打印情况如下,

0:[object HTMLLIElement]
1:[object HTMLLIElement]
2:[object HTMLLIElement]
length:3
item:function item() { [native code] }
namedItem:function namedItem() { [native code] }

2.调试程序发现 List 为

//img.imooc.com/597b04990001312f04920389.jpg

这个对象集合就是这个了 ,注意是集合 不是数组

查看完整回答
1 反对 回复 2017-07-28
  • 3 回答
  • 0 关注
  • 4708 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信