以下の動作はわかりません。ループ内のカウンタを変数に代入しても、現在の値は保持されません。
私は次の操作を行うには、以下のスクリプトを期待しています:
- すると、ユーザーがクリック
- の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>
どうしてですか?どのようにして目的の動作を達成できますか?
あなたは閉鎖を形成する必要があります! –
@ClydeLoboその質問は*します*私の質問に答えますが、この質問をする前に私はクロージャを探すことさえ考えなかったでしょう。 – Scribblemacher