猿问

这段代码中setTimeout的用法是什么

书中作者在HTML页面中使用setTimeout来重置表单,但是我在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');


开满天机
浏览 174回答 3
3回答

繁星点点滴滴

那么,为什么函数“setTimeout()”可以重置表单呢?它没有,它只是等待在其中运行代码,直到处理完由按钮单击触发的事件之后。您尚未显示 HTML,但我猜该id="reset"按钮也是type="reset",它确实会重置表单(标准 HTML 功能,无需编写脚本)。因此,通过等待调用countChecked直到重置之后,代码会在重置完成后显示状态。

达令说

setTimeout(function,0) 或 setTimeout(function),零是可选的,两者都将要执行的代码放置在当前正在执行的代码的末尾,并且在浏览器可能有任何更新后挂起。这在 ES6 之前非常有用,可以为需要很长时间才能完成的脚本解除浏览器的封锁。只需在循环的每次迭代中使用 setTimeout 即可。例如setTimeout(function() { console.log(2) }); // will log 2 after this script finishsconsole.log(1)将放入控制台日志 1 然后 2,而不是 2 然后 1。我看不出这样做的意义&nbsp; &nbsp; countChecked();//initial&nbsp; &nbsp; $("select").change();//initial在显示的代码之后,完成了吗?
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答