javascriptの中で3つのボタンをクリックして異なる値を弾きます.
814 ワード
一回の面接で出会ったのは、実は簡単です.
普通の書き方はこうです.
簡単な解決方法
方法の1:varをletに変えて、okayラララ
方法2:もちろん、es 6のletがない前に、クローズドで解決します.
クローズドを理解するには何が必要ですか?見てください. クローズドとは何か、理解しています.
普通の書き方はこうです.
Document
var btn=document.getElementsByTagName("button");
function box() {
for(var i=0; i<3; i++) {
btn[i].onclick = function (){
alert(i);
}
}
}
box();
ですが、このようにすれば、弾くのは全部3です.これはjsのvarがブロックレベルの作用領域ではないからです.簡単な解決方法
方法の1:varをletに変えて、okayラララ
方法2:もちろん、es 6のletがない前に、クローズドで解決します.
function box() {
for(var i=0; i<3; i++) {
btn[i].onclick = (function (num){
return function() {
alert(num);
}
})(i);
}
}
であれば、numは指定された値に留まることができます.クローズドを理解するには何が必要ですか?見てください. クローズドとは何か、理解しています.