setTimeout(slideIn(xslide), 20);
Это немедленно вызывает функцию slideIn
. Вы не передаете функцию slideIn
в setTimeout
, вы передаете значение, возвращаемое функцией slideIn
. Вы должны передать функцию в setTimeout
, что означает, что вы должны сделать что-то вроде этого:
setTimeout(slideIn, 20);
Однако, таким образом, вы не можете передать параметр. Таким образом, вы заключаете его в анонимную функцию, например:
setTimeout(function (){
slideIn(xslide);
}, 20);
Вы также можете дать функции имя для целей отладки, например:
setTimeout(function slideTimeout(){
slideIn(xslide);
}, 20);
Обычно, если вы запускаете typeof
для первого параметра того, что вы передаете setTimeout
или setInterval
, он должен вернуть 'function'
. То, что вы используете, вернет 'undefined'
, поскольку вы ничего не возвращаете.