问答详情
源自:9-4 区别getElementByID,getElementsByName,getElementsByTagName

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

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

提问者:孙Xuan 2016-08-02 11:28

个回答

  • 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循环哦