voglio ritardare l'esecuzione in betwen codici follwoing:Come ritardare l'esecuzione tra il seguente nel mio javascript
$("#myName").val("Tom");
///delay by 3s
$("#YourName").val("Jerry");
//delay by 3s
$("#hisName").val("Kids");
voglio ritardare l'esecuzione in betwen codici follwoing:Come ritardare l'esecuzione tra il seguente nel mio javascript
$("#myName").val("Tom");
///delay by 3s
$("#YourName").val("Jerry");
//delay by 3s
$("#hisName").val("Kids");
È possibile utilizzare setTimeout
per questo:
setTimeout(function() {
// Your code here
}, delayInMilliseconds);
esempio:
$("#myName").val("Tom");
/// wait 3 seconds
setTimeout(function() {
$("#YourName").val("Jerry");
/// wait 3 seconds
setTimeout(function() {
$("#hisName").val("Kids");
}, 3000);
}, 3000);
setTimeout
pianifica una funzione da eseguire (una sola volta) dopo un intervallo. Il codice che la chiama continua, e ad un certo punto nel futuro (dopo circa il tempo specificato, anche se non precisamente) la funzione viene chiamata dal browser.
Supponiamo quindi di avere una funzione denominata output
che aggiunge testo alla pagina. L'uscita di questo:
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;
}
... è (dopo un paio di secondi):
A: 0 D: 1 B: 2 C: 3
Nota la seconda linea di questo. Il resto del codice di foo
viene eseguito prima di una delle funzioni pianificate e quindi vediamo la riga D
prima della riga B
.
setTimeout
restituisce un handle (che è un numero diverso da zero) si potrebbe usare per annullare la richiamata prima che accada:
var handle = setTimeout(myFunction, 5000);
// Do this before it runs, and it'll never run
clearTimeout(handle);
C'è anche la relativa setInterval
/clearInterval
che fa la stessa cosa, ma più volte nell'intervallo specificato (fino a quando non lo si interrompe).
È possibile utilizzare la funzione setTimeout. Penso che la sintassi sia
window.setTimeout('$("#YourName").val("Jerry")',3000);
Non è possibile "ritardare" in JavaScript senza bloccare il browser; l'utente non può spostare il mouse o fare clic su qualsiasi cosa (indesiderabile per 3+ secondi!).
Invece, si dovrebbe guardare a stabilire un timeout, che eseguirà designato codice po 'di tempo in futuro ...
$("#myName").val("Tom");
setTimeout(function() {
$("#YourName").val("Jerry");
setTimeout(function() {
$("#hisName").val("Kids");
}, 3000);
}, 3000);
È possibile controllare la documentazione per setTimeout
qui: https://developer.mozilla.org/en/window.setTimeout. Le basi di ciò sono che si passa a una funzione di riferimento oa una stringa (che dovrebbe essere comunque evitata), come primo parametro, con il secondo parametro che specifica quanti millisecondi il codice deve essere ritardato.
Se il ritardo è sempre lo stesso (3s nel tuo esempio), si può evitare il codice nidificato e utilizzare setInterval
invece di 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);
[Eventuali duplicati] (http://stackoverflow.com/questions/ 951021/javascript-sleep) - Javascript sleep –