v2.5.2
Giriş yap

Javascript "this.files is not iterable Hatası" (Youtube Eğitim videosundaki yer)

noname
426 defa görüntülendi

Javascript this.files is not iterable hatası.
"Javascript ile Progress Barlı Multi Upload İşlemi" videosunu izledim. Hatayı videodaki yerde alıyorum.

Cevap yaz
Cevaplar (4)
noname
1276 gün önce

<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
}); 
```
noname
1276 gün önce

Ayrıca konsolda da <b>undefined</b> gözüküyor.

noname
1276 gün önce

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,
    });
  });
}

tayfunerbilen
1276 gün önce

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