我正在尝试将数组的每个元素传递给我的函数:
e.target.files.forEach(myfunction);
但是我收到了这个错误:
未捕获的TypeError:对象#没有方法'forEach'
我在它上面做了一个控制台登录,并确认该数组不是空的。
答案 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不是数组的默认方法。如果您复制了此代码,请验证要添加的文件。