2013-12-16 3 views
1

Почти все ошибки SetInterval, которые я видел здесь в StackOverflow, связаны с передачей имени функции в виде «строки», но, возможно, мне все еще не хватает какой-либо проблемы с переменной областью. Пожалуйста, порекомендуйте!ReferenceError SetInterval не определен

Я создаю слайд-шоу с возможностью паузы и воспроизведения. Во время игры я хочу, чтобы слайды двигались каждые 3 секунды. Но SetInterval для запуска функции NextSlide не работает после выполнения один раз.

Я пробовал, как ...

SetInterval("nextSlide()", 3000) 
SetInterval(nextSlide(), 3000) 
var t = SetInterval(nextSlide(), 3000) 
var t = SetInterval(function(){nextSlide(), 3000) 

... с отказом каждый раз. Что мне здесь не хватает?

var slide_1 = "slide_1"; 
var slide_2 = "slide_2"; 
var slideNum = 0; 
var odd = true; 
var totalMax = 6; 
var busy = false; 

var allSlides = new Array(); 
allSlides[0] = "test_01"; 
allSlides[1] = "test_02"; 
allSlides[2] = "test_03"; 
allSlides[3] = "test_04"; 
allSlides[4] = "test_05"; 
allSlides[5] = "test_06"; 
allSlides[6] = "test_07"; 

function PlaySlide(){ 
var t = SetInterval(nextSlide(),3000) 
document.getElementById("play").style.visibility = "hidden"; 
document.getElementById("pause").style.visibility = "visible"; 
} 

function nextSlide(){ 
if(slideNum < totalMax && !busy){ 
busy = true 
document.getElementById("loading").style.zIndex = 4; 
slideNum = slideNum + 1 
var slide = allSlides[slideNum] 
var link = "https://dl.dropboxusercontent.com/u/..." + slide + ".jpg" 
odd = !odd 
if(odd){document.getElementById(slide_1).src = link} //which <img>.onLoad lauches a fadeIn() 
else{document.getElementById(slide_2).src = link} 
} 
} 
+11

JavaScript - это чувствительный к регистру язык. Этот метод называется 'setInterval'. – VisioN

+1

P.S. Это должно быть просто 'setInterval (nextSlide, 3000);'. Не пропускайте строки, передавайте функции. Кроме того, вы хотите передать функцию, а не вызывать ее и передать ее возвращаемое значение. Вы также можете сделать: 'setInterval (function() {nextSlide();}, 3000);'. –

ответ

5
var t = SetInterval(nextSlide(),3000) 
     ^     ^^ 

У вас есть 2 проблемы

Там нет SetInterval, то s в нижнем регистре. Во-вторых, вы вызываете функцию nextSlide(), не назначая его

var t = window.setInterval(nextSlide, 3000); 
+0

красивый. Просто красиво! – user3107660

0

"setInterval" Пожалуйста, используйте вместо «SetInterval» и увидеть результат.

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