0

ここにHTMLがあります

<body>
 <div>
   <button>
     Button 1
   </button>

   <button>
    Button 2
   </button>

   <button>
    Button 3
   </button>
 </div>
</body>    (script tag is in right place just left it out here)

これが私のコードです

(function () {

var button= document.getElementsByTagName("button");    

for (var i= 0, len= button.length; i < len ;i = i + 1) {

buttton[i].onclick = function () {
        alert(i)};

}
}()) 

それでは、各ボタンをクリックすると、なぜ 3 つすべてが 3 の値を返すのですか? ボタンごとに異なる値を返すべきではありませんか??????

4

3 に答える 3

3

ボタンのコレクションをループするときは、クリックしたときに実行する機能を各ボタンに割り当てます。この関数は、i の値を表示してアラートを出します。ループが完了すると、i の値が 3 に設定され、それが表示されます。各ボタンに独自の序数を表示する場合は、ループ内に属性を設定できます。

button[i].setAttribute("ordinal",i);

この属性を読み取るアラートを使用します。

button[i].onclick = function(){
    alert(this.getAttribute("ordinal"));
}
于 2013-07-29T14:12:22.360 に答える