В этой ситуации я бы вообще не использовал каждый метод. Я бы использовал setTimeout, массив объектов, который содержит информацию о вашем изображении / href, и значение, которое говорит вам, где вы находитесь в массиве изображений. Когда вы доберетесь до конца массива, сбросьте значение (следующий код упрощен для ясности и не проверен):
var index = 0;
var images = // array of image containing objects here.
function RunSlideShow()
{
// modify the following line to perform any effects, etc, and other attribute settings you need.
$("#rimg").attr("src", images[index].image);
index = index + 1;
if (index = images.length)
index = 0;
window.setTimeout('RunSlideShow();', 5000);
}
RunSlideShow();
Каждый раз, когда вызывается функция в вашем объекте слайд-шоу, вам действительно нужно, чтобы эта функция загружала следующий слайд перед его выходом. Проблема с каждым перезапуском, когда он сделан, это вопрос: «Когда он остановится?» Если вы предварительно загрузите все изображения, чтобы продолжать вечно, вы будете вызывать бесконечный цикл и, скорее всего, вылетит браузер. Вам нужна та же функция, чтобы установить изображение, затем подготовить следующее изображение для показа, но в будущем оно должно выглядеть не дальше, чем следующее изображение. Каждый раз, когда вы пытаетесь пойти дальше, вы рискуете создать постоянно растущую коллекцию предметов, которые никогда не остановятся.