我想一个数组的每个元素传递给我的功能:呼叫功能
e.target.files.forEach(myfunction);
但我得到这个错误:
Uncaught TypeError: Object # has no method 'forEach'
我就做了一个控制台日志它并确认该数组不是空的。
我想一个数组的每个元素传递给我的功能:呼叫功能
e.target.files.forEach(myfunction);
但我得到这个错误:
Uncaught TypeError: Object # has no method 'forEach'
我就做了一个控制台日志它并确认该数组不是空的。
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使用的另一个类似数组的对象,它不是实际的数组。
也可以将此伪数组复制到实际数组中,或者使用.call()
或.apply()
对其应用一些数组方法,但我在此没有看到这一点。我想为简单的for
循环,因为它很好,清楚发生了什么。
Foreach不是数组的默认方法。如果您复制此代码,请确认添加了哪个文件。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/ forEach – elclanrs
'forEach'是自ECMAScript 5以来''Array'的标准方法。 –
无论'e.target.files'是什么,它都没有'forEach()'方法。 –
尝试'[] .forEach.call(e.target.files,function(){})' – elclanrs