精華區beta Ajax 關於我們 聯絡資訊
最近寫了一個 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
fillano:javascript是到執行function時才去抓descT的值喔。這時for 10/03 13:24
fillano:loop已經跑完了啦。 10/03 13:25
todau:這是javascript最基本的現象,原因就是fillano大所說 10/03 16:19