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

<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:1
List: 1 |LI:null:1
List: 2 |LI:null:1

上面会比var i in List多输出下面的:

List: length |undefined:undefined:undefined
List: item |undefined:undefined:undefined
List: namedItem |undefined:undefined:undefined

慕后端3562752
浏览 4709回答 3
3回答

业余奶茶品鉴师

如图所示:用 var List=document.getElementsByTagName("li");获得的 List 是个对象,每个对象都有一个"__proto__" 属性,所以循环了6次,就有了下面那些。记得采纳

Yexiaomo

以前没注意,今天才发现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 为这个对象集合就是这个了 ,注意是集合 不是数组
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript