[問題] function 裡的 setTimeout 與 變數
最近寫了一個 javascript function,
目的是為了避免使用者連按兩次 button,
而且在 button disabled 後,還要能再變回 enabled,
發現了以下的問題:
參數:
oBtn = 傳入的 button object
sec = 倒數的秒數
flag = 是否變動 oBtn.value。true:要 / false:不要
function waitClick(oBtn, sec, flag) {
if (oBtn==null) { return false; }
if (sec==null) { sec = 5; }
if (flag==null) { flag = false; }
var descN = oBtn.value;
var descT = descN;
oBtn.disabled = true;
for (var i=sec; i>0; i--) {
if (flag) {
descT = descN+"("+i+")";
}
setTimeout(function() {
oBtn.value = descT;
//問題出在上面這行,descT 只會抓到前面 i=1 的值。
//不知道是否有高手可解惑?
}, (sec-i)*1000);
}
setTimeout(function() {
oBtn.value=descN;
oBtn.disabled = false;
}, sec*1000);
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.84.8.189
推
10/03 13:24, , 1F
10/03 13:24, 1F
→
10/03 13:25, , 2F
10/03 13:25, 2F
→
10/03 16:19, , 3F
10/03 16:19, 3F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 6 篇):