私はこのコードを書きました:
<html>
<button>Click</button>
<button>Click</button>
<button>Click</button>
<button>Click</button>
<button>Click</button>
<script>
var btn = document.getElementsByTagName("button");
for(var i = 0; i<5; i++){
btn[i].onclick = function(){alert(i)}
}
</script>
</html>
クリックするたびに、最後のi
値を参照する同じ結果が得られます
それから私はそれをclousreでラップしようとしました、そしてそれはうまくいきました:
<html>
<button>Click</button>
<button>Click</button>
<button>Click</button>
<button>Click</button>
<button>Click</button>
<script>
var btn = document.getElementsByTagName("button");
for(var i = 0; i<5; i++){
btn[i].onclick = createAlert(i)
}
function createAlert(i){
return function(){
alert(i)
}
}
</script>
</html>
舞台裏で何が起こっているのか、なぜそれが正常に機能しているのかを説明してもらえますか?