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


Автор: GIK 8.12.2005, 14:06
Ни где не нашол полной инфы по таймерам.
Как правильно использовать таймеры, и какой алгоритм их действия, останавливают ли они выполнение других таймеров и функций. smile
В этом простеньком, но не работающем коде я расположил несколько таймеров и прерываний их действия.
Скорее всего не правильно?
Код

<html>
 <head>
 <style type="text/css">
  #div1{
  position: absolute;
  left: 120px;
  top: 120px; 
  visibility: hidden; 
 }
  #div2{
  position: absolute;
  left: 340px;
  top: 340px; 
  visibility: hidden; 
 }
 </style>
  <script type="text/javascript">
  <!--  
    setTime1 = window.setInterval("fff1()", 1000); 

    function fff1()  
   { 
    document.getElementById("div1").style.visibility="visible";
    setTime1.clearInterval();
    setTime2 = window.setInterval("fff2()", 1000);
    
   }

    function fff2() 
   { 
     document.getElementById("div2").style.visibility="visible";
     setTime2.clearInterval();
   }
   //-->
  </script>
 </head>
<body>
  <div id="div1">
    <img src="1.jpg" id="foto1" height=120 width=120 alt="Фото №1">
  </div> 
  <div id="div2">
    <img src="2.jpg" id="foto2" height=120 width=120 alt="Фото №2">
  </div> 
</body>
</html>

Автор: Ciber SLasH 8.12.2005, 15:29
Цитата
clearInterval(intervalID)

Выключает интервальный цикл, упомянутый параметром intervalID.

Автор: GIK 8.12.2005, 15:46
Я не профи.....
Как понять выше изложенное?

Автор: GIK 8.12.2005, 16:01
Все понял. smile
И все же, есть какая нибуть подробная информация по таймерам.

Автор: Ciber SLasH 8.12.2005, 17:31
Цитата(GIK @ 8.12.2005, 16:01)
И все же, есть какая нибуть подробная информация по таймерам.

Качни ман из моей подписе и ищи по Ctrl+F по слову clearInterval

Автор: Sardar 9.12.2005, 00:27
Не менее двух раз писал как работают таймеры и почему бывают не явные задержки, при чём один раз специально для тебя или для Иль было smile

В поиск бежать лень, кратко: таймеры устанавливают паузу на выполнение некоторой функции. JS никогда не выполняеться постоянно, только по событиям, одним из таких событий это таймер. Пока исполняеться какой либо код, таймеры простаивают. А придумана эта бредовая модель нетскейповцами в виду криворукости, с тех пор, вероятно из-за совместимости, ничего не менялось.

Автор: GIK 9.12.2005, 12:03
Цитата
таймеры устанавливают паузу на выполнение некоторой функции

Все понятно.
Вот только вопрос по логике. Правильно ли я расставил прерывания и вызов следующего таймера, может стоило прерывание и вызо сделать вне функций???
Да и еще проблемка с картинками, они не подгружаются.
Вобщем это типа слайд шой, немного коряво, не ругать за это smile , сам знаю
Код

<html>
 <head>
  <script type="text/javascript">
  <!--  
    var mas=new Array();
    mas[0]=new Image();
    mas[1]=new Image();
    mas[2]=new Image();
    mas[3]=new Image();
    mas[4]=new Image();
    mas[5]=new Image();

    mas[0].src="1.jpg";
    mas[1].src="2.jpg";
    mas[2].src="3.jpg";
    mas[3].src="4.jpg";
    mas[4].src="5.jpg";
    mas[5].src="6.jpg";
    setTimeGou=window.setInterval("fff1()", 5000);
    function fff1()  
   { 
    document.getElementById("div1").style.visibility="visible";
    document.getElementById("foto1").src=mas[0];
    var txt="Саня говорит тост. Весь важный такой...";
    txt=txt.fontcolor("green");
    txt=txt.fontsize("3");
    document.getElementById("TextNod").innerHTML=txt;
    clearInterval(setTimeGou); //прерывание в функции
    setTimeGou2=window.setInterval("fff2()", 5000); //вызов следующей функции, запуск таймера
   }


    function fff2()
  { document.getElementById("foto1").src=mas[1];
    var txt="Это менеджеры фотостудии. Тоже ужу пьяные....";
    txt=txt.fontcolor("green");
    txt=txt.fontsize("3");
    document.getElementById("TextNod").innerHTML=txt;
    clearInterval(setTimeGou2);
    setTimeGou3=window.setInterval("fff3()", 5000);
    
   }
     function fff3()
{   document.getElementById("foto1").src=mas[2];
    var txt="Представители крайнего севера тоже приехали поздравить Саню";
    txt=txt.fontcolor("green");
    txt=txt.fontsize("3");
    document.getElementById("TextNod").innerHTML=txt;
    clearInterval(setTimeGou3);
    setTimeGou4=window.setInterval("fff4()", 5000);
}
    function fff4()
{  document.getElementById("foto1").src=mas[3];
    var txt="Слева-это инопланетянин, прилител чтобы поздравить Саню ";
    txt=txt.fontcolor("green");
    txt=txt.fontsize("3");
    document.getElementById("TextNod").innerHTML=txt;
    clearInterval(setTimeGou4);
    setTimeGou5=window.setInterval("fff5()", 5000);
    
}
   function fff5()
{   document.getElementById("foto1").src=mas[4];
    var txt="Это самый главный тамада. Про него я вообще промолчу";
    txt=txt.fontcolor("green");
    txt=txt.fontsize("3");
    document.getElementById("TextNod").innerHTML=txt;
    clearInterval(setTimeGou5);
    setTimeGou6=window.setInterval("fff6()", 5000);
   
    
}
    function fff6()
{   document.getElementById("foto1").src=mas[5];
    var txt="Так... А это кто??? Тфу блин, этож я САМ. ";
    txt=txt.fontcolor("green");
    txt=txt.fontsize("3");
    document.getElementById("TextNod").innerHTML=txt;
    clearInterval(setTimeGou6);
 }  
   //-->
  </script>
 </head>
<body>
  <div id="div1" style="position:absolute;top:140px;left:30px;border:0;border-style:solid;padding:6; visibility:hidden; wigth:100px; height=120px">
    <img src="1.jpg" id="foto1" height=420 width=420>
  </div> 

   <div style="position:absolute;top:340px;left:470px;border:1;border-style:solid;padding:6; visibility:visible; wigth:70px; height=70px">
 <pre id="TextNod">
  
</PRE></div>

</body>
</html>




Автор: Sardar 9.12.2005, 12:51
Млин нравиться тебе плодить функции smile

Загрузка картинок происходит, просто присваивать нужно не обьект картинку, её сорцы:
document.getElementById("foto1").src=mas[5].src;

По таймерам: зачем interval если твоя функция отрабатывает всего один раз? Забивай гвозди молотком, а не дрелью, setTimeout логичней и наглядней smile

А вообще бросай эту привычку плодить функции и писать не общий/абстрактный код, иначе после JS дорога тебе только в VB6, да и там нe очень будут рады smile

Автор: GIK 9.12.2005, 14:18
Цитата
А вообще бросай эту привычку плодить функции и писать не общий/абстрактный код, иначе после JS дорога тебе только в VB6, да и там нe очень будут рады

Да. Можно было использовать цикл for и массивы с натписями.
А насчет загрузки объектов, а не их src я не знал.

Автор: Sardar 9.12.2005, 15:12
Цитата(GIK @ 9.12.2005, 13:18)
Да. Можно было использовать цикл for и массивы с натписями.

Способов много, главное что бы было красиво и эффективно. Когда то писал статью о анимациях в JS, специально после того как ты в первый раз "раплодил" функций для простой анимации.

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