Javascript图像幻灯片不起作用

时间:2013-11-30 19:30:16

标签: javascript

我正在尝试从这个数组中获取一个图像,使用Javascript每两秒显示一次,但我似乎无法让它工作。 id正确且图像位置正确且拼写正确。不知道出了什么问题,任何帮助将不胜感激!提前谢谢!

var images = new Array();
images[0] = "images/slideshowimage1.jpg";
images[1] = "images/slideshowimage2.jpg";
images[2] = "images/slideshowimage3.jpg";
images[3] = "images/slideshowimage4.jpg";

var counter = 0;
function ChangePic()
{
    counter++;
    document.getElementById('carpic').src = images[counter];

    if(counter == images.length)
    {
    counter = 0;    
    }

setTimeout("ChangePic()",2000)
}

3 个答案:

答案 0 :(得分:0)

您应该删除setTimeout函数中的双引号和大括号。

应该是:

setTimeout(ChangePic, 2000);

答案 1 :(得分:0)

好吧,首先你需要在函数中的setTimeout中包装调用,而不是字符串。

其次,计数器永远不会达到值0,因为你从一开始就将它的值增加1。你想做这样的事情:

var images = new Array();
images[0] = "images/slideshowimage1.jpg";
images[1] = "images/slideshowimage2.jpg";
images[2] = "images/slideshowimage3.jpg";
images[3] = "images/slideshowimage4.jpg";

var counter = 0;
function ChangePic()
{
    document.getElementById('carpic').src = images[counter];

    // a more efficient if/else statement can be written like this:

    // don't forget that the array starts with 0, so you need array length -1
    (counter == images.length-1) ? counter = 0 : counter++;
}

// need to move this out of the ChangePic function
setTimeout(function() {ChangePic()}, 2000);

答案 2 :(得分:0)

嗯,我认为这里有几个问题。首先是语法错误,然后是逻辑错误。

语法错误是setTimeout的参数。它应该是setTimeout(ChangePic, 2000),而不是setTimeout("ChangePic()", 2000)

逻辑错误位于增量位置counter++ - 在其当前位置,最终将用作数组images[]的索引的值将为1,2, 3.永远不会使用索引0(images[]中的第一项),因为counter总是在用作索引之前递增(使得它在使用时不可能为0) )。您想要做的是在之后移动counter++ ,将其用作images[]的索引。

尽可能少地调整代码,这可能是它的样子:

var images = new Array();
images[0] = "images/slideshowimage1.jpg";
images[1] = "images/slideshowimage2.jpg";
images[2] = "images/slideshowimage3.jpg";
images[3] = "images/slideshowimage4.jpg";
var counter = 0;

function ChangePic() {
    document.getElementById('carpic').src = images[counter];
    counter++;

    if (counter == images.length) {
        counter = 0;
    }

    setTimeout(ChangePic, 2000)
}

// Call function at end to begin slideshow cycle
ChangePic();

这是一个JSFiddle来向您展示它的作用。 (打开浏览器的调试控制台查看输出。)希望这是你要找的!如果没有,请告诉我,我会很乐意进一步提供帮助。