此代码中setTimeout的用途是什么

时间:2019-06-08 14:07:54

标签: javascript jquery

在书中,作者使用“ setTimeout”来重置HTML页面中的表单。但是我在JS文档中找不到这种用法。那么,为什么函数“ setTimeout()”可以重置表单?

//reset
$("#reset").click(function(){
          setTimeout(function() {
            countChecked();//initial
            $("select").change();//initial
          },0);
      });
function countChecked() {
          var n = $("input:checked").length;
          $("div").eq(0).html("<strong>"+n+" elements are selected!</strong>");
      }
$("select").change(function () {
              var str = "";
              $("select :selected").each(function () {
                    str += $(this).text() + ",";
              });
              $("div").eq(1).html("<strong>you have selected:"+str+"</strong>");
      }).trigger('change');

3 个答案:

答案 0 :(得分:1)

  

那么,为什么函数“ setTimeout()”可以重置表单?

不是,它只是等待运行其中的代码,直到处理由按钮单击触发的事件为止。

您还没有显示HTML,但是我猜测id="reset"按钮也是type="reset"确实会重置表单(标准HTML功能,脚本)。因此,通过等待调用countChecked直到重置后 ,代码会在重置完成后显示状态。

答案 1 :(得分:0)

setTimeout()方法在指定的毫秒数后调用一个函数或计算一个表达式。

我看到时间设置为0,所以它不计数。

Window setTimeout()方法:https://www.w3schools.com/jsref/met_win_settimeout.asp

答案 2 :(得分:0)

setTimeout(function,0)或setTimeout(function),零是可选的,将代码待执行的代码放置在正在执行的当前代码的末尾,然后在更新浏览器后可能有待处理。

这对于在ES6之前阻止浏览器阻止花费很长时间才能完成的脚本很有用。只需将setTimeout用于循环的每次迭代即可,而不会产生延迟。

例如

setTimeout(function() { console.log(2) }); // will log 2 after this script finishs
console.log(1)

将控制台日志中的1,然后2,而不是2,然后1。

我不明白这样做的意义

    countChecked();//initial
    $("select").change();//initial

显示的代码完成之后吗?