Javascript setTimeout игнорируя параметр времени - PullRequest
1 голос
/ 12 октября 2011

Я не первый раз использую setTimeout (), но я не могу понять, в чем проблема. Часть кода setTimeout () выполняется правильно, но выполняется немедленно без задержки. Если кто-то может увидеть проблему, это поможет. Вот код:

if(token==1){
    img1.src=ssImages[imgNum];
    num1=0;
    num2=10;
    setTimeout('crossFade()',2500);
}

Ответы [ 2 ]

4 голосов
/ 12 октября 2011

Вы уверены, что это код? Если он выполняется немедленно, обычно есть две причины:

  1. Разработчик подумал, что время указано в секундах, но 2500 - это нормально, это 2,5 секунды.
  2. Он вызывает функцию немедленно (например, setTimeout(foo(), 1234));

Но ни одна из причин не относится к вашему коду, поэтому проверьте остальную часть кода, если есть какие-либо другие вызовы этой функции.


В любом случае, вы должны действительно передать функцию вместо строки:

setTimeout(crossFade, 2500);

Или, если вам нужно указать какие-либо аргументы:

setTimeout(function() {
    crossFade(...);
}, 2500);
0 голосов
/ 12 октября 2011

Я согласен с Тейфмастером.Окно.Метод setTimeout принимает два аргумента:

1) Функция ИЛИ выражение 2) Время в мс

В своем коде вы предоставляете строку или выражение:

setTimeout ('crossFade () ', ....)

Обычно не рекомендуется использовать eval.Вы должны передать функцию - либо с именем:

setTimeout (crossFade, ....)

ИЛИ как предложено анонимно:

setTimeout (function () {crossFade ()}, ....

Это все, что вы можете сделать для устранения неполадок в этом коде, если вы не предоставите пример ok jsfiddle, чтобы мы могли увидеть контекст, который он называется.

...