Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Автоматическая смена фоновой картинки


Автор: ressac 1.12.2007, 15:18
задача такова : каждую секунду должна меняться фоновая картинка.

вот моё решение
Код



    <script language="JavaScript">

        var x=0;
        var pix=new Array("http://www.le.ac.uk/ph/faulkes/web/images/stars.jpg",
                      "http://redravine.files.wordpress.com/2007/06/rainbow-in-the-sky-adjusted.jpg",
                  "http://www.sissa.it/ap/img/galaxy.jpg");

        function chgBgd()
        {    
            if(x>2)
              x=0;

            document.body.background = pix[x++];
            setTimeout("chgBgd()",1000);
        }

    </script>

    <body onLoad="chgBgd()">


но СетТайм находится внутри функции что имхо не выгодная ибо память жрёт, какая-та бесконечная рекурсивность выходит

если я вынесу setTimeout("chgBgd()",500); в конец всего скрипа и плюс засуну его в while(1), то броузер ругается.
что-же делать? как правильно сделать задачу?

Автор: SelenIT 1.12.2007, 16:26
Цитата(ressac @  1.12.2007,  15:18 Найти цитируемый пост)
о СетТайм находится внутри функции что имхо не выгодная ибо память жрёт, какая-та бесконечная рекурсивность выходит

С какой стати? Таймер - это ж как напоминалка в мобильнике. Функция вызвалась, сделала  свое дело, поставила таймер, умерла. Пришел срок - таймер сработал, функция вызвалась... ну и т.д. Это не настоящая рекурсия, а лишь ее подобие. Для JS - вполне нормальный, если не сказать общепринятый подход. Альтернатива - setInterval.

Автор: ressac 1.12.2007, 17:01
понятно, спасиб smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)