【问题标题】:Javascript slideshow with innerHtml loop not working带有innerHtml循环的Javascript幻灯片不起作用
【发布时间】:2013-06-03 16:49:06
【问题描述】:

我正在尝试编写一个 javascript 代码,该代码将循环遍历数组元素列表,并使用 innerHtml 在 div 内循环写入。我正在寻找一个纯 javascript 解决方案,没有 JQuery。我,卡住了。

这是我的相关代码和这个 jsFiddle:http://jsfiddle.net/j3XD5/

<div id="slideshow">&nbsp;</div>

-

var url=new Array('im01.jpg', 'im02.jpg', 'im03.jpg', 'im04.jpg');
    var pause=2000;
    var p=0;
    function sl()
    {
    if (p<=url.length-1)
        {
        document.getElementById('slideshow').innerHtml = '<img name="pic" src='+url[p]+' border=0>';
        p++;
        var t=setTimeout(sl(),pause);
        }
        else
        {
        p=0;sl()
        }

    }

    window.onload=sl();

【问题讨论】:

    标签: javascript loops slideshow innerhtml


    【解决方案1】:

    您正在调用 sl 函数,而不是将其作为值传递。

    改变

    var t=setTimeout(sl(),pause);
    

    var t=setTimeout(sl,pause);
    

    window.onload=sl();
    

    window.onload=sl;
    

    由于 JavaScript 区分大小写,您还必须将 innerHtml 更改为 innerHTML

    您还可以通过使用% 而不是测试来简化整个过程。

    这是一个工作代码(样式也根据usual guidelines 固定):

    var pause=1000, p=0;
    window.onload = function sl(){
        document.getElementById('slideshow').innerHTML = '<img name="pic" src="'+url[p]+'" border=0>';
        p = (p+1)%url.length;
        setTimeout(sl, pause);
    };
    

    Demonstration

    【讨论】:

    • 非常感谢dystroy。这就是我一直在寻找的。干杯!
    猜你喜欢
    • 1970-01-01
    • 2018-06-22
    • 2012-09-19
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 2012-09-22
    • 2016-05-22
    • 2013-07-27
    相关资源
    最近更新 更多