Hiba egy elem lekérésekor JavaScriptben
Időnként a kezdő programozók hibát követnek el azzal,
hogy egyetlen DOM elem lekéréséhez
a querySelectorAll metódust használják a
querySelector metódus helyett.
Nézzük meg ennek a hibának a jellemző jellegzetességeit. Tegyük fel, hogy adott egy bekezdés:
<p>szöveg</p>
Egy programozó úgy döntött, hogy megkapja és megváltoztatja ennek a bekezdésnek a szövegét. Ehhez hivatkozást kapott erre a elemre egy változóba, de tévesen a rossz metódust használta:
let elem = document.querySelectorAll('p');
Majd a programozó megpróbálta megváltoztatni a bekezdés szövegét. Azonban a bekezdés szövege nem változott:
elem.textContent = '!!!'; // nem működött
Eközben semmilyen hiba nem jelent meg a konzolban. Az ok az, hogy egy megengedett műveletet hajtottak végre, de nem egy elemmel, hanem egy csoporttal. Viszont egy elemcsoport szövegét egyszerűen nem lehet olvasni vagy módosítani - csak egy ciklussal bejárva azokat, és minden egyes elemre külön-külön hivatkozva.
Hogyan fedezzük fel a hibát
Nézzük meg, hogy a programozónak hogyan kell eljárnia a hiba felderítéséhez. Valójában, némi tapasztalattal könnyű felismerni a jellemző jelei alapján.
Tegyük fel azonban, hogy ez nem történik meg. Akkor
a programozó első lépése a hibakeresés során
a változók értékeinek kiírása a konzolba kell, hogy legyen.
Az ő esetében csak egy változó van - a elem.
Ki kell írni ennek a változónak az értékét,
és meg kell nézni, hogy az
mi van benne:
let elem = document.querySelectorAll('p');
console.log(elem); // egy tömböt fog kiírni, nem egy elemet
A konzolon azonnal látható, hogy a változóban nem egy elem, hanem egy tömb található. Ez azonnal egy nyilvánvaló támpontot ad arról, hogy hiba történt az elem lekéréséhez használt metódusban.