此问题已在此处找到答案:
循环内部javascript闭包–简单实用示例(44个答案)
两天前关门了。
我在js(附加代码)的第42行遇到这个错误。请帮忙。我是js的新手
let nums = document.getElementsByClassName("grid-items");
var i = 0,
num = 0;
for (i = 0; i < nums.length; i++) {
console.log(nums[i]);
nums[i].addEventListener("click", function() {
num = nums[i].innerHTML;
console.log(num);
})
}
<button class="grid-items" id="number0">0</button>
<button class="grid-items" id="number1">1</button>
<button class="grid-items" id="number2">2</button>
<button class="grid-items" id="number3">3</button>
<button class="grid-items" id="number4">4</button>
<button class="grid-items" id="number5">5</button>
<button class="grid-items" id="number6">6</button>
<button class="grid-items" id="number7">7</button>
<button class="grid-items" id="number8">8</button>
<button class="grid-items" id="number9">9</button>
此外,如果有人有更好的想法,从点击js打印数字,你可以帮助这一点。非常感谢。
3条答案
按热度按时间yuvru6vn1#
您可以使用以下选项:
2ledvvac2#
单击处理程序使用变量
i
从全局范围,在单击时(循环完成时),此变量指向数组边界的后面,这会导致异常。但是如果你把这个变量
i
本地到循环体,则每个处理程序都有自己的i
具有特定于每个迭代的值。注意使用
let
而不是var
,因为var
具有更大的范围,不会是局部循环。pjngdqdw3#
你可以用
forEach
循环以最小化代码并使其更干净。请参见=>
注:我用过
parseInt()
方法从返回的字符串中解析整数.innerText