昨天遇到一個問題:微信購物車頁面的數量增減按鈕點擊過快時,input里的值會亂跳
看了源代碼后發現,每次點擊增減按鈕后,整個購物車區域都通過ajax重新寫入,而ajax寫入是需要時間的,這就導致了點擊過快時頁面異步加載速度跟不上點擊的速度,故此input里面的值會亂跳;
解決方案:
1、在點擊事件外面申明一個變量
var iTime;
2、給ajax的觸發事件添加時間間隔,
iTime=setTimeout(fun,250);
3、每次點擊事件觸發時都清除之前的setTimeout事件
clearTimeout();
最后代碼如下:
var iTime;
element.onclick=function(){
clearTimeout(iTime);
iTime=setTimeout(fun,250);
}
其實上面這個方案所解決的就是事件被多次觸發時,只執行最后一次事件,核心思想就是通過設置定時器來控制,通過定時器觸發事件,在多次觸發事件時清除之前的定時器事件,最后給定時器重新賦值,那么不管怎樣都是只會運行最后一次的定時器事件。