내 함수에 배열의 모든 요소를 전달하기 위해 노력하고있어 :전화 기능
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
개체라고 추측합니다.
직접 반복하거나 배열 방법을 간접적으로 적용해야 할 수 있습니다. 그들은 다른 모든이없는 때문에 DOM이 Array
객체를 .length
속성을 가지고 [index]
으로 인덱싱 할 수 있지만, 실제하지 않은 데이터 구조의 의사 배열 형식을 사용하는
var files = e.target.files;
for (var i = 0; i < files.length; i++) {
myfunction(files[i]);
}
참고로, 그것은 일반적이다 배열 메소드. NodeList
은 실제 어레이가 아닌 DOM에서 사용되는 또 다른 Array-like 오브젝트입니다.
이 가상 어레이를 실제 배열에 복사하거나 .call()
또는 .apply()
을 사용하여 일부 배열 메소드를 적용하는 것도 가능하지만 여기서는 필요하지 않습니다. 위의 간단한 루프는 위의 루프를 참조하십시오.
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