2013-12-16 1 views
1

У меня есть слайдер на моей веб-странице, и я пытаюсь манипулировать этими таймингами на основе текущего слайда с использованием глобальной переменной. Мой вопрос: правильно ли я манипулирую глобальную переменную (устанавливая ее на 10000 или 2000) и/или создавая глобальную переменную в правильном месте.Javascript: не изменяя глобальные переменные в функции ползунка

Благодаря всегда, Рок

<script> 
    var timer = 4000; 
    function slideShow() { 
     var displayToggled = false; 
     var current1 = $('.slide:visible'); 
     var nextSlide = current1.next('.slide'); 
     var hideoptions = { 
      "direction": "left", 
      "mode": "hide" 
     }; 
     var showoptions = { 
      "direction": "right", 
      "mode": "show" 
     }; 


     if (current1.is(':last-child')) { 
      current1.effect("slide", hideoptions, 2000); 
      $("#firstSlide").effect("slide", showoptions, 2000); 
      timer = 10000; 
     } 
     else if (current1.is(':first-child')) { 
      current1.effect("slide", hideoptions, 1000); 
      nextSlide.effect("slide", showoptions, 1000); 
      timer = 2000; 
     } 
     else { 
      current1.effect("slide", hideoptions, 2000); 
      nextSlide.effect("slide", showoptions, 2000); 
      timer = 10000; 
     } 
    }; 

    setInterval(slideShow, timer); 
    slideShow(); 
</script> 

ссылки: Оригинальный слайд-шоу: Simple Slideshow jQuery/UI images inline

пример живой сайт: http://www.nerdherdgames.com

Edit: Живой сайт в настоящее время не имеют этот javascript на индексной странице

+0

вы можете добавить jsfiddle? – Abhidev

+0

Я могу посоветовать вам сайт в прямом эфире: http://www.nerdherdgames.com – Racksickle

+0

В чем проблема? Ваша переменная 'var timer = 4000;' установлена ​​в нужном месте, если это то, что вы хотите знать. – Merlin

ответ

0

setInterval(slideShow, timer); будет установлен только один раз, поэтому интервал будет первым значением в timer, либо вы можете использовать setTimeout, поэтому вы будете устанавливать таймер каждый раз, когда функция заканчивается. Это означает, что вместо изменения значения timer s на каждом слайде вы должны начать setTimeout в конце анимации.

setTimeout on MDN

+0

Спасибо за разъяснение разницы и соответствующих различий между setInterval и setTimeout для меня. – Racksickle

0

Число является примитивным типом в javascript, это не объект, объект передается по ссылке, но число передается по значению. Таким образом, после того, как в первый раз вы вызовите

setInterval(slideShow, timer); 

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

Смежные вопросы