Javascript "this.files is not iterable Hatası" (Youtube Eğitim videosundaki yer)
Javascript this.files is not iterable hatası.
"Javascript ile Progress Barlı Multi Upload İşlemi" videosunu izledim. Hatayı videodaki yerde alıyorum.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (4)
<h3>Tamam sorunu çözdüm :)</h3>
handleFiles fonksiyonu içerisindeki ```this```, ```input``` elementine bakıyor.
```javascript
const inputElement = document.getElementById("input");
inputElement.addEventListener("change", handleFiles);
function handleFiles() {
console.log(this.files) //sorunsuz çalışacak
}
```
Eğer arrow function yazsaydık ```this```, ```Window``` objesine bakardı. (Ben hatayı burada yaptım :))) )
```javascript
const inputElement = document.getElementById("input")
inputElement.addEventListener("change", () => {
console.log(this.files) // undefined
});
```
Hocam kodlarım bu şekilde
function showFiles() {
[...this.files].map((element) => {
let item = document.createElement("div");
item.className = "upload-item";
item.innerHTML = `
<div class="upload-content">
<div class="item-type">
<img src="./file_icons/${fileIcon(element.name)}.png" alt="" />
</div>
<div class="item-name">${element.name}</div>
</div>
<div class="upload-status"></div>`;
uploadBody.appendChild(item);
files.push({
file: element,
el: item,
});
});
}
yani döngüye sokamazsın diyor çünkü array değil Array.from(this.files)
ya da [...this.files]
ile mapleme yapman gerekir belki orada kaçırmışsındır dersi