2012/08/26(日)JavaScriptの無名function内にバインドされる変数のスコープがC#と違う
ボタンをスクリプトでたくさん作って、それぞれの clickイベントの function を作るときに、
そのfunctionの外側で宣言された変数がどうbindしたらいいのか。
<div id="test"></div>
<script>
for (var i = 0; i < 10; i++) {
var input = document.createElement('input');
var j = i;
input.type = 'button';
input.value = input.id = 'button_' + i;
input.addEventListener('click', function() { alert(j); });
document.getElementById('test').appendChild(input);
}
</script>
やりたいことはわかってもらえると思う?
でも、どのボタンを押しても表示されるのは9。これじゃあだめ。
というか、一瞬自分の書いたスクリプトに馬鹿にされてる気がしてきた。9的な意味で。
どーやるんだろう。