我是 javascript 新手并试图了解此代码的行为,该代码尝试将唯一的 onclick 处理程序分配给数组 myElements[] 中的不同 DOM 元素:
(function handleClicks(){
for (var i = 0; i < 100; ++i) {
myElements[i].onclick = function() {
alert( 'You clicked on: ' + i );
};
})();
我的理解是,每次单击 DOM 元素时,浏览器都应提醒“您单击了 100”,因为一旦函数完成,javascript 将使用i的值
我有两个问题:
- 如果i仅在函数 handleClicks() 中具有作用域,一旦函数完成,浏览器如何访问i - 肯定i不再存在?
- 我通过将两个 HTML 元素放入数组中来尝试此代码
var myElements = [];
myElements.push( document.getElementById('1');
myElements.push( document.getElementById('2');
http://jsfiddle.net/bramong/fS7qE/
但是当程序运行时,它会为每个单击的元素提醒“您点击了:2”。
为什么它不提醒“您点击了:100”。因为一旦函数完成运行,这肯定是 i 的值?