在书中,作者使用“ 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');
答案 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
显示的代码完成之后吗?