在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML5  HTML/ 關(guān)于js函數(shù)去抖

關(guān)于js函數(shù)去抖

頁面很簡單,就一個input框

<input type="text" v-model="keyword" @keyup="search($event)">

js:

methods:{
    //鍵盤按下事件
    search:function(e){
        var timer;
        if(e.keyCode != 32){ //空格
            clearTimeout(timer);
            timer = setTimeout(()=>{
                console.log("這里寫交互");
            }, 1000)
        }
    }
}

當(dāng)我輸入“123”時,打印了3次

clipboard.png

我想要的效果:
當(dāng)我輸入“123”時,就打印了1次

回答
編輯回答
冷咖啡

var timer; 定義在search外邊 要不每次觸發(fā)都新定義了一個timer 就不是上次settime的handle了

2017年3月14日 12:12
編輯回答
伴謊

因為你的timer每次點擊的時候都重新聲明了一下,把timer聲明放到外部就好了

2018年4月24日 06:45
編輯回答
愛是癌
search:function(e){
        var timer; // 你函數(shù)每次觸發(fā),都重新聲明了timer,也就是說你每次clearTimeout的time是一個undefined,我是這樣理解的,把這行注釋掉,再看看效果。
        if(e.keyCode != 32){ //空格
            clearTimeout(timer);
            timer = setTimeout(()=>{
                console.log("這里寫交互");
            }, 1000)
        }
    }
2018年4月16日 10:04