<分区>
我不明白下面的行为。
我希望下面的脚本执行以下操作:
- 获取类为'button'的所有元素
- 为每个带有按钮的元素分配一个 onclick 事件
- 当用户点击一个按钮时,在分配 onclick 时会出现一个带有当前值
i
的警报。
所以我希望点击“按钮 1”会提示“我是按钮 1”。
相反,所有 3 个按钮都提示“我是按钮 3”。看起来 i
计数器的值没有被保留。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Test</title>
</head>
<body>
<p class="button">Button 0</p>
<p class="button">Button 1</p>
<p class="button">Button 2</p>
<script>
var buttons = document.getElementsByClassName('button');
for (var i=0 ; i < buttons.length ; i++){
buttons[i].onclick = function(){
alert("I am button " + i);
};
}
</script>
</body>
</html>
为什么会这样?我怎样才能达到预期的行为?