e.target.files
, вероятно, не настоящий Array
, поэтому он не имеет метода forEach()
. Я предполагаю, что это объект FileList
.
Возможно, вам придется выполнить итерацию самостоятельно или косвенно применить методы массива.
var files = e.target.files;
for (var i = 0; i < files.length; i++) {
myfunction(files[i]);
}
FYI, он является общим для DOM использовать псевдо-тип массивов структур данных, которые имеют свойство .length
и может быть проиндексированы с [index]
, но не являются фактическими Array
объектов так, чтобы они не имеют все остальные методы массива. NodeList
- это еще один подобный Array объект, используемый DOM, который не является фактическим массивом.
Можно также скопировать этот псевэд-массив в фактический массив или применить к нему некоторые методы массива, используя .call()
или .apply()
, но я не вижу этого, как необходимо здесь. Я бы попросил простую петлю for
выше, так как это приятно и понятно, что происходит.
Независимо от 'e.target.files', он не имеет метода' forEach() '. –
Попробуйте '[] .forEach.call (e.target.files, function() {})' – elclanrs