I'm trying to access id's of elements fetched by getElementsByTagName but I'm getting an error:
var divs=document.getElementsByTagName("div");
for(var i=0;i<divs.length;i++){
divs[i].onclick=function(){
alert(divs[i].id);
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<div id="1">1</div>
<div id="2">2</div>
<div id="3">3</div>
<div id="4">4</div>
<div id="5">5</div>
<div id="6">6</div>
</body>
</html>
The error is:
Uncaught TypeError: Cannot read property 'id' of undefined
When I change
alert(divs[i].id);
to
alert(this.id);
it works, but I don't understand why this happens.
alert(divs[i].id);, tryfor (var i = 0; i < divs.length; i++) { (function(i) { divs[i].onclick = function () { alert(divs[i].id); } })(i); }.