2013-05-14 7 views
1

Любая идея, почему этот код поврежден или не работает? Это не мой код, но он кажется правильным, конечно, я мог бы пропустить очевидное. Мне просто нужно фоновое изображение div для циклического перехода к новому в массиве/a каждые 5 секунд.JQuery div background image cycle

var imageIndex = 0; 
var imagesArray = new Array(); 

//Set Images 
imagesArray[0] = "images/self-whitewater.png"; 
imagesArray[1] = "images/fishing.png"; 
imagesArray[2] = "images/solo-kayaking.png"; 

function changeBackground(){ 
$("main-blocki").css("background","url('"+ imagesArray[imageIndex] +"')");       
    imageIndex++; 
    if (imageIndex > imageArray.length) 
     imageIndex = 0; 
} 

$(document).ready(function() { 
    setInterval("changeBackground()",5000); 
}); 
+0

Не проблема, но вы эволюционируете в промежутке, удалите цитаты и скобки. – adeneo

ответ

3

Ваш проблема заключается в вашем заявлении if, как указано @thatidiotguy.

Но вы также можете сделать это в oneliner без инструкции if.

var imageIndex = 0; 
var imagesArray = [ 
    "images/self-whitewater.png", 
    "images/fishing.png", 
    "images/solo-kayaking.png" 
]; 

function changeBackground(){ 
    var index = imageIndex++ % imagesArray.length; 
    $("main-blocki").css("background","url('"+ imagesArray[index] +"')");  
} 

$(document).ready(function() { 
    setInterval(changeBackground, 5000); 
}); 

Отметьте imageIndex++ % imagesArray.length. Это увеличивает глобальный imageIndex, удостоверяясь, что значение не больше imagesArray.length.

+0

Это сработало правильно, спасибо @JAM - у меня была дополнительная ошибка, которая нарушала код, хотя «« Я настолько привык к добавлению объявления типа, что не понял, что это было неправильно, и нарушал функциональность jquery. – DMSJax

+0

Рад помочь @Swodahs :) Sidenote: [вы не должны связывать источник напрямую с cody.jquery.com] (http://encosia.com/3-reasons-why-you-should-let-google- host-jquery-for-you /), вы должны использовать '' вместо этого :) – JAM

3

У вас есть синтаксические ошибки здесь:

if (imageIndex > imageArray.length) 
     imageIndex = 0; 

Там нет переменной называется imageArray

Вы должны использовать веб-отладчик, чтобы показать вам, когда у вас есть синтаксические ошибки. Одна синтаксическая ошибка и Javascript имеют изящество, чтобы убить каждый другой скрипт, который вы используете или пытаетесь запустить.

1
if (imageIndex > imageArray.length) 

выше линии не так: вы должны хотеть, чтобы проверить imagesArray.length вместо

... и вы должны проверить с> = оператора также, поскольку индексы 0 на основе

+0

Другое дело, что даже если вы используете imageArray.length, это не сработает, так как imageIndex никогда не будет больше, чем imagesArray.length. imagesArray.length будет 3 в этом случае, но imageIndex никогда не дойдет до 3. –

+0

@MatRichardson - Хм, почему бы и нет? – adeneo

+0

imagesArray.length равно 3, не так ли? Ну, массив imageindex только когда-либо доходит до 2. Когда он достигнет 3, в массиве не будет элемента ... –