Попробуйте удалить вызов setTimeout()
из функции и поместить вызов (скажем) setInterval(slideit,1000)
где-нибудь вне функции:
....
document.images.slide.src = preloaded[step].src;
if (step<10) step++;
else step=0;
}
setInterval(slideit,1000);
Это приведет к тому, что slideit()
будет вызываться каждые 1000 мс, вместо того, чтобы назначать несколько тайм-аутов каждый раз, когда вызывается функция.
Примечание. Я также удалил вызов eval()
и некоторые дополнительные кавычки из вашей строки preloaded[step].src
- это не повлияет на время ожидания, но вам не нужно указывать здесь eval, поскольку содержимое массива - просто строка (и по соображениям безопасности обычно лучше избегать использования eval()
, если можете).
Редактировать: Только что увидел, что вы хотите разные таймауты для каждого изображения. Я бы сделал это с помощью одного вызова setTimeout ():
....
document.images.slide.src = preloaded[step].src;
setTimeout(slideit,timeouts[step]);
if (step<10) step++;
else step=0;
}
Для этого решения вам нужно инициализировать массив с именем timeouts
, где каждая запись timeouts[x]
содержит количество миллисекунд для отображения изображения x
.