Автор Тема: Да спреш ротатор  (Прочетена 3228 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

zareva_rositsa

  • Full Member
  • ***
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 149
Да спреш ротатор
« -: 25 Октомври 2010, 20:43:57 »
Здравейте,

написах си един ротатор за  въртене на картинки, ползвам setInterval(); Искам обаче да мога да го управлявам, да го спирам, като кликна на нещо. Четох във интернет, обаче този параметър на clearInterval(); не знам откъде да го уловя. Като го създам там, където извиквам clearInterval(); не върши работа, защото ротатора не се спира. Вече пробвах как ли не :), някой има ли просветена идея :)?

Код:

var i = 1;
function change(){
var next = i+1;
var massif = $( " .rot li " );
$( " .rot li " ).hide();
massif.eq(i).fadeIn(1000);
//alert(massive.length);

$( ' #show ' ).html(i +  "  /  "  +next);
i++;
if(i == massif.length)
{
i = 0;
}
}

function rotate(){
setInterval( ' change() ' ,1000);


}
$(function(){

rotate();

$( " #ok " ).click(function(){
var stop = setInterval( ' change() ' ,1000);
clearInterval(stop);
});
});

kerkenez

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 2
  • -Получени: 14
  • Публикации: 1205
Отг:Да спреш ротатор
« Отговор #1 -: 25 Октомври 2010, 21:38:45 »
Пробвай така
...
timer = setInterval( ' change() ' ,1000);
...

...
clearInterval(timer);
...

zareva_rositsa

  • Full Member
  • ***
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 149
Отг:Да спреш ротатор
« Отговор #2 -: 25 Октомври 2010, 21:48:09 »
не се получи :). Промених кода така:


function rotate(){
setInterval( ' change() ' ,1000);
timer = setInterval( ' change() ' ,1000);
return timer;
}
$(function(){

rotate();

$( " #ok " ).click(function(){
alert(timer);// излиза 3
clearInterval(timer);
});


kerkenez

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 2
  • -Получени: 14
  • Публикации: 1205
Отг:Да спреш ротатор
« Отговор #3 -: 25 Октомври 2010, 21:56:46 »
Дефинирай първо timer като int и тогава ще стане.

var timer = 0;

zareva_rositsa

  • Full Member
  • ***
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 149
Отг:Да спреш ротатор
« Отговор #4 -: 25 Октомври 2010, 22:04:10 »
пак не, вади някакви цифрички, като го извикам в алърт, но не спира ротатора.

kerkenez

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 2
  • -Получени: 14
  • Публикации: 1205
Отг:Да спреш ротатор
« Отговор #5 -: 25 Октомври 2010, 22:13:26 »
Не знам какво правиш.
Ето ти работещ пример сравни го с това, което си написала




zareva_rositsa

  • Full Member
  • ***
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 149
Отг:Да спреш ротатор
« Отговор #6 -: 25 Октомври 2010, 23:26:11 »
бе и аз не знам, ама в моя случай нещо не работи много добре. Спира само понякога и то не с кода, който очаквам (като се водя по примера на Керкенез и каквото четох :)). Даже не спира цялата функция, защото имам и едни броячета, които са част от функцията и се извеждат на страницата и те продължават да прехвърлят :).

zareva_rositsa

  • Full Member
  • ***
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 149
Отг:Да спреш ротатор
« Отговор #7 -: 25 Октомври 2010, 23:55:07 »
Идеаллллно! Благодаря много, Керкенез!

Цялата работа била, че във функцията, която осъщесвява въртенето, а тя беше:

function rotate(){
setInterval( ' change() ' ,1000);}


е правилна така:

function rotate(){
timer = setInterval( ' change() ' ,1000);
}


и така мога да ползвам променливата timer с вярната и стойност.
Аз си мислех, че написано по този начин, всъщност няма декларация, която да кара да се извърши викането на функията през 1секунда, но това не е така, това явно е валиден начин за викане на метод, дори да го приписваш на променлива, той пак, едновременно с това се изпълнява.
Мх, супер съм си, да ти кажа  ;)