书中作者在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');
3 回答
繁星点点滴滴
TA贡献1803条经验 获得超3个赞
那么,为什么函数“setTimeout()”可以重置表单呢?
它没有,它只是等待在其中运行代码,直到处理完由按钮单击触发的事件之后。
您尚未显示 HTML,但我猜该id="reset"
按钮也是type="reset"
,它确实会重置表单(标准 HTML 功能,无需编写脚本)。因此,通过等待调用countChecked
直到重置之后,代码会在重置完成后显示状态。
达令说
TA贡献1821条经验 获得超6个赞
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
在显示的代码之后,完成了吗?
添加回答
举报
0/150
提交
取消