Есть много причин, по которым eval
следует избегать, потому что он нарушает область видимости - одна из них.Передача строки в setTimeout приводит к eval
ed, когда таймер заканчивается.
Вы должны вместо этого передать функцию.
window.setTimeout(rotateImages(start+1),3000);
Это немедленно вызывает rotateImages
, затем передаетего возвращаемое значение до setTimeout
.Это не помогает, поскольку rotateImages
не возвращает функцию.
Возможно, вы захотите:
window.setTimeout(rotateImages,3000,[start+1]);
Или создайте анонимную функцию, которая оборачивает замыкание вокруг начала и передает его вместо:
window.setTimeout(function () { rotateImages(start + 1); },3000);
Последний вариант лучше поддерживается браузерами.