如何在我的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);