Jquery div背景图像周期

时间:2013-05-14 21:01:17

标签: jquery css background-image

知道为什么这段代码被破坏或无效?这不是我的代码,但它似乎是正确的,当然我可能会错过显而易见的。我只需要一个div的背景图像在/ a数组中循环到一个新的一个5秒。

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);
});

3 个答案:

答案 0 :(得分:3)

这里有语法错误:

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

没有名为imageArray

的变量

您应该使用Web调试器在出现语法错误时向您显示。一个语法错误和Javascript可以杀死正在运行或尝试运行的每个其他脚本。

答案 1 :(得分: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

答案 2 :(得分:1)

if (imageIndex > imageArray.length)

以上一行是错误的:您应该测试 imagesArray.length 而不是

...并且您将使用> =运算符进行测试,因为索引是基于0的