我一整个早上都在想这个问题。我在HTML代码中有一个包含a-j字母的列表,并希望在其中一个被点击时将其打印到控制台中。
我创建了一个for循环来查找节点列表,我可以让脚本将要点击的元素的数字打印到控制台,但是当我尝试获取innerHTML或类似内容时,它会返回未定义。
但是当我只是在控制台中输入el[3].innerHTML时,它会返回所需的字母。
请帮助我理解为什么只是因为通过for循环就使其变为未定义?
我不仅要寻找解决方案,还想了解发生这种情况的原因,以便成为更好的编码者。
谢谢!
代码:
我创建了一个for循环来查找节点列表,我可以让脚本将要点击的元素的数字打印到控制台,但是当我尝试获取innerHTML或类似内容时,它会返回未定义。
但是当我只是在控制台中输入el[3].innerHTML时,它会返回所需的字母。
请帮助我理解为什么只是因为通过for循环就使其变为未定义?
我不仅要寻找解决方案,还想了解发生这种情况的原因,以便成为更好的编码者。
谢谢!
代码:
var list = document.getElementsByTagName('ul')[0];
var el = list.getElementsByTagName('li');
for(var i = 0; i < el.length; i++ ) {
el[i].addEventListener('click', function(f) {
return function(event) {
event.preventDefault();
console.log(f.innerHTML);
}
}(i));
}
f === i
且i
为整数,但其不具备该属性。 - Teemu