setTimeout(fn,0)的作用

作者: 小睿7777777 | 来源:发表于2016-03-31 23:14 被阅读647次

    hi,朋友们你见到过window.setTimeout(fn, 0)的代码吗?那该语句是什么作用呢?答:延时函数fn的执行(ps 也就是把fn放入事件循环队列,队列是后进后出哟)。那在什么场合下需要延时执行函数fn且时延参数为呢?

    栗子:

    <input type="text" onkeydown = "document.getElementById('a').innerHTML = 'input is:'+this.value;" />

    <div id="a">input is:</div>

    运行结果如下图:

    为什么输入123,输出的结果是12呢?

    因为输入3时所触发的事件级联中,keydown事件的顺序先于给input对象value属性赋值的默认事件,所以输出结果慢了一拍。

    针对此问题,解决方案为把onkeydown属性值改为onkeydown="setTimeout(function(){document.getElementById('a').innerHTML= 'input is:'+this.value;},0)"即延迟keydown事件执行。

    相关文章

      网友评论

      • mervynyang:那具体的一些系统事件的优先级呢
      • 清水芦苇:`keydown事件(处理程序)的(执行)顺序先于给input对象value属性赋值的操作`这句话说得很好啊

        <input type="text" onkeydown = "console.log(this.value);" />
      • 249efa81dd6e:有
        小睿7777777:@249efa81dd6e 好巧我也前端小白 求粉一下 :relaxed:
      • 小睿7777777:有前端小白在吗

      本文标题:setTimeout(fn,0)的作用

      本文链接:https://www.haomeiwen.com/subject/cmtylttx.html