在每个数组元素上调用函数

时间:2013-11-23 02:14:01

标签: javascript foreach compiler-errors

我正在尝试将数组的每个元素传递给我的函数:

e.target.files.forEach(myfunction);

但是我收到了这个错误:

  

未捕获的TypeError:对象#没有方法'forEach'

我在它上面做了一个控制台登录,并确认该数组不是空的。

2 个答案:

答案 0 :(得分:3)

e.target.files可能不是真正的Array,因此它没有forEach()方法。我猜这是一个FileList对象。

您可能需要自己迭代或间接应用数组方法。

var files = e.target.files;
for (var i = 0; i < files.length; i++) {
    myfunction(files[i]);
}

仅供参考,DOM通常使用伪数据类型的数据结构,这些数据结构具有.length属性并且可以使用[index]编制索引,但不是实际的Array个对象所以他们没有所有其他数组方法。 NodeList是DOM使用的另一个类似Array的对象,它不是实际的数组。

也可以将这个伪数组复制到一个实际的数组中,或者使用.call().apply()将一些数组方法应用于它,但是我没有在这里看到它。我想要上面的简单for循环,因为它很好并且清楚发生了什么。

答案 1 :(得分:-1)

Foreach不是数组的默认方法。如果您复制了此代码,请验证要添加的文件。