遍历对象数组,用基本的for循环能实现,但for (x in array[])却实现不了

来源:9-4 区别getElementByID,getElementsByName,getElementsByTagName

孙Xuan

2016-08-02 11:28

使用for循环遍历input对象数组的时候下面这样写 var hobby = document.getElementsByTagName("input"); for(var i=0;i<hobby.length;i++) 可以实现,但是写for(i in hobby)就不行,为什么呢?

写回答 关注

3回答

  • To struggle—Dream
    2016-08-02 16:43:53

    for语句是固定形式啊。

  • 风满怀
    2016-08-02 14:53:48

    var hobby = document.getElementsByTagName("input");

    hobby并不是一个array

    这样转成array

    var arr = Array.prototype.slice.call(hobby);

  • 慕粉3718063
    2016-08-02 13:49:17

    是这样的: for in 并不是你理解的那种遍历效果。
    for in 遍历的不是数组,而是那个对象,也就是hobby 这个对象,它遍历访问的每个值其实是hobby的每个属性,而不是数组元素,不信你可以用
    for(var i in hobby){
    alert(i);
    }
    来看看每个i到底是谁,肯定不是数组元素。

    for 循环根据下标访问的才算真是的数组元素。

    所以for in 和for 是有区别的。
    并且,使用for in 的效率要远低于for循环哦

    孙Xuan

    我试了下,alert出来的果然不是数组元素。但是下面这段代码是为什么呢?慕课之前的课程是这样讲的。我以为这两段代码原理相同,结果发现行不通: <script type="text/javascript"> var x var mycars = new Array() mycars[0] = "Saab" mycars[1] = "Volvo" mycars[2] = "BMW" for (x in mycars) { document.write(mycars[x] + "<br />") } </script>

    2016-08-02 15:25:21

    共 1 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468061 学习 · 21891 问题

查看课程

相似问题