Javascript - изображения, которые не вращаются / вращаются - PullRequest
0 голосов
/ 02 декабря 2011

Я работаю над сценарием для поворота / циклического перемещения изображений в javascript при соблюдении ограничения на количество циклов просмотра изображений.Вот что у меня есть:

<a id="imageurl"><img id="Rotating1" border="0"></img></a>

<script language="JavaScript">

var delay = 3000; //6000 = change to next image after 6 seconds
var cycles = 2;
var currentCycle = 0;

function RotateImages(Start, delay)
{
    var a = new Array("frown.gif","grim.gif","smile.gif", "bomb.gif");
    var c = new Array("url1", "url2", "url3", "url4");
    var b = document.getElementById('Rotating1');
    var d = document.getElementById('imageurl');
    var totalCycles = cycles * a.length;
//  alert ("currentCycle: " + currentCycle);
//  alert ("totalCycles: " + totalCycles);

        if (Start>=a.length) 
            Start=0;
        b.src = a[Start];
        d.href = c[Start];

        if (currentCycle < totalCycles) {
            window.setTimeout("RotateImages(" + (Start+1) + ")", delay);
            currentCycle++;
        }
}

RotateImages(0, delay);

</script>

Сценарий работает так, как будто он работает, когда я раскомментирую поля предупреждений.Когда я их комментирую, вращение кажется остановленным.Любые идеи о том, что на самом деле происходит и как это исправить?

Спасибо!

Ответы [ 2 ]

1 голос
/ 02 декабря 2011

Один фундаментальный вопрос, который следует учитывать, это setTimeout.Первый параметр может быть ссылкой на функцию, будь то фактическая ссылка или ссылка на строку, но вы не можете передавать параметры вместе с ней.

Чтобы сделать то, что вы хотите, вам нужно передать анонимную функцию в setTimeout.Кроме того, Рийоно прав, что вы также должны передать delay

setTimeout(function(){ RotateImages(Start++, delay) }, delay);

Что касается вашего предупреждения, я не знаю, что вам сказать.Но я знаю, что вышеупомянутое исправит некоторые проблемы.

1 голос
/ 02 декабря 2011

возможно, вы хотели бы изменить эту строку:

window.setTimeout("RotateImages(" + (Start+1) + ")", delay);

в

window.setTimeout("RotateImages(" + (Start+1) + ", " + delay + ")", delay);

чтобы при следующем вызове RotateImages задержка сохранялась.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...