Я хочу отложить выполнение в следующих кодах:
$("#myName").val("Tom");
///delay by 3s
$("#YourName").val("Jerry");
//delay by 3s
$("#hisName").val("Kids");
Я хочу отложить выполнение в следующих кодах:
$("#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;
}
... (через пару секунд):
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
, который делает то же самое, но несколько раз в указанном вами интервале (пока вы не остановите его).
Вы можете использовать функцию setTimeout. Я думаю, что синтаксис
window.setTimeout('$("#YourName").val("Jerry")',3000);
Если задержка всегда одинаковая (3s в вашем примере), вы можете избежать вложенного кода и использовать 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);
Вы не можете "задерживать" 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. Основой этого является то, что вы передаете либо ссылку на функцию, либо строку (чего следует избегать) в качестве первого параметра, а второй параметр, определяющий, сколько миллисекунд следует отложить для кода.