如何在我的javascript中延迟执行以下操作
我想在下面的代码中延迟执行:
$("#myName").val("Tom"); ///delay by 3s $("#YourName").val("Jerry"); //delay by 3s $("#hisName").val("Kids");
你可以使用setTimeout
:
setTimeout(function() { // Your code here }, delayInMilliseconds);
例如:
$("#myName").val("Tom"); /// wait 3 seconds setTimeout(function() { $("#YourName").val("Jerry"); /// wait 3 seconds setTimeout(function() { $("#hisName").val("Kids"); }, 3000); }, 3000);
setTimeout
计划在间隔之后运行(一次)的函数。 调用它的代码会继续,并且在将来的某个时间点(在您指定的大致时间之后,尽管不精确),该函数将由浏览器调用。
因此,假设您有一个名为output
的函数,它将文本附加到页面。 这个输出:
foo(); function foo() { var counter = 0; output("A: " + counter); ++counter; setTimeout(function() { output("B: " + counter); ++counter; setTimeout(function() { output("C: " + counter); ++counter; }, 1000); }, 1000); output("D: " + counter); ++counter; }
……(几秒钟后):
答:0 D:1 B:2 C:3
注意第二行。 foo
代码的其余部分在任一计划函数之前运行,因此我们在B
行之前看到D
行。
setTimeout
返回一个句柄(这是一个非零数字),您可以在它发生之前取消回调:
var handle = setTimeout(myFunction, 5000); // Do this before it runs, and it'll never run clearTimeout(handle);
还有相关的setInterval
/ clearInterval
,它执行相同的操作,但是以您指定的间隔重复执行(直到您停止它为止)。
您可以使用setTimeout函数。 我认为语法是
window.setTimeout('$("#YourName").val("Jerry")',3000);
在不锁定浏览器的情况下,您无法“延迟”JavaScript; 即用户不能移动鼠标或点击任何东西(不需要3秒钟!)。
相反,你应该考虑设置一个超时,它将在未来的某个时间执行指定的代码……
$("#myName").val("Tom"); setTimeout(function () { $("#YourName").val("Jerry"); setTimeout(function () { $("#hisName").val("Kids"); }, 3000); }, 3000);
您可以在此处查看setTimeout
的文档: https : //developer.mozilla.org/en/window.setTimeout 。 它的基础是你传递函数引用或字符串(但应该避免),作为第一个参数,第二个参数指定代码应该延迟多少毫秒。
如果延迟始终相同(在您的示例中为3秒),则可以避免嵌套代码并使用setInterval
而不是setTimeout
:
var i , ids = ["myName", "YourName", "hisName"] , names = ["Tom", "Jerry", "Kids"]; i = setInterval(function () { if (ids.length > 0) { $("#" + ids.shift()).val(names.shift()); } else { clearInterval(i); } }, 3000);