Ответ 1
Вы можете использовать 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;
}
... (через пару секунд):
A: 0 D: 1 B: 2 C: 3
Обратите внимание на вторую строку этого. Остальная часть кода foo
выполняется перед любой из запланированных функций, поэтому мы видим строку D
до строки B
.
setTimeout
возвращает дескриптор (который является ненулевым числом), который вы могли бы использовать для отмены обратного вызова до его возникновения:
var handle = setTimeout(myFunction, 5000);
// Do this before it runs, and it'll never run
clearTimeout(handle);
Также есть связанный setInterval
/clearInterval
, который делает то же самое, но несколько раз в указанном вами интервале (пока вы не остановите его).