hi,朋友們你見到過window.setTimeout(fn, 0)的代碼嗎?那該語句是什么作用呢?答:延時函數(shù)fn的執(zhí)行(ps 也就是把fn放入事件循環(huán)隊列,隊列是后進后出喲)。那在什么場合下需要延時執(zhí)行函數(shù)fn且時延參數(shù)為呢?
栗子:
<input type="text" onkeydown = "document.getElementById('a').innerHTML = 'input is:'+this.value;" />
<div id="a">input is:</div>
運行結(jié)果如下圖:

為什么輸入123,輸出的結(jié)果是12呢?
因為輸入3時所觸發(fā)的事件級聯(lián)中,keydown事件的順序先于給input對象value屬性賦值的默認事件,所以輸出結(jié)果慢了一拍。
針對此問題,解決方案為把onkeydown屬性值改為onkeydown="setTimeout(function(){document.getElementById('a').innerHTML= 'input is:'+this.value;},0)"即延遲keydown事件執(zhí)行。