JavaScript හි මූලද්රව්ය ලබාගැනීමේ දෝෂය
සමහර විට ආරම්භක වැඩසටහන්කරුවන් වැරද්දක් කරයි,
DOM මූලද්රව්ය කණ්ඩායමක් ලබාගැනීම සඳහා
querySelectorAll ක්රමය වෙනුවට
querySelector ක්රමය භාවිතා කරමින්.
අපි මෙම දෝෂයේ ලක්ෂණ සලකා බලමු. අපට යම් ඡේද ලබා දී ඇතැයි සිතමු:
<p>1</p>
<p>2</p>
<p>3</p>
යම් වැඩසටහන්කරුවෙක් මෙම ඡේදවල ලියැවිලි ලබාගෙන කොන්සෝලයට ප්රතිදානය කිරීමට තීරණය කළේය. මේ සඳහා ඔහු මෙම මූලද්රව්යවලට සම්බන්ධක ලබාගත්තේ විචල්යයකට, නමුත් වැරදි ක්රමයක් භාවිතා කරමින්:
let elems = document.querySelector('p');
ඉන්පසු ඔහු ඡේද අනුක්රමණය කර එක් එක් ඡේදයේ ලියැවිලි කොන්සෝලයට ප්රතිදානය කිරීමට තීරණය කළේය:
for (let elem of elems) {
console.log(elem.textContent);
}
එහි ප්රතිඵලයක් ලෙස කොන්සෝලයේ ලක්ෂණ සහිත
දෝෂයක් පෙනේනවා elems is not iterable. එය පවසන්නේ,
elems විචල්යය අනුක්රමණය කළ නොහැකි බවයි,
එනම් එය අරාවක් හෝ for-of ලූපය මගින්
අනුක්රමණය කළ හැකි යමක් නොවේ.