測試用例
function cprint(str) {
console.log(str);
}
function temp() {
for(var i=0; i<3; i++) {
$("#bt"+i).click(function() {
cprint(i);
});
}
}
上邊方法的目的是給三個bt綁定點擊事件,預期的結果是
bt0 click: 0
bt1 click: 1
bt2 click: 2
但是執行後的結果是,點擊三個按鈕輸出的都是3。
bt被點擊後回調綁定的click中的方法,回調方法直接使用了外部變量i,而不是自己設置臨時變量保存i的結果。
解決辦法
function temp() {
for(var i=0; i<3; i++) {
click(i);
}
}
function click(i) {
$("#bt"+i).click(function() {
cprint(i);
});
}