使用带有 img URL 的数组的 Javascript 幻灯片

标签 javascript html web

我是 JS 的初学者,我无法弄清楚我尝试的幻灯片有什么问题。我知道这看起来像是重复,并且我找到了一种不同的工作方式,在 JS 中显示幻灯片,但我只是对我的代码出了什么问题感到困惑。我见过的每个版本的幻灯片代码都会在 HTML 中设置所有图像 url,然后隐藏它们并仅使用 JS 显示其中一个,但为什么我的版本不能将图像 url 简单地设置在数组中呢?

<img id="sideimg" src="images/image1.jpg" alt="penguin" />
<script>
next();
var next=function(){

    for(var i=0;i<3;i++){
        var slide=document.getElementById("sideimg");
        var slides=["images/image1.jpg","images/image2.jpg","images/image3.jpg"]
        slide.src=slides[i];
    timeOut();
    if(i>=3){
        i=0;
    };
};
var timeOut=function(){
    setTimeout(next,1000);
}

};
</script>

最佳答案

示例中的函数顺序不正确

您还需要在函数外部定义 i 并且不需要 for 循环

以下内容在 Chrome 中适用于我

<img id="sideimg" src="images/image1.jpg" alt="penguin" />
<script>

var i = 0

var timeOut=function(){
    setTimeout(next,1000);
}

var next=function(){

    var slide=document.getElementById("sideimg");
    var slides=["images/image1.jpg","images/image2.jpg","images/image3.jpg"]
    slide.src=slides[i];
    timeOut();
    i++;
    if(i>=3){
        i=0;
    };
};

next();
</script>

我们还可以使用 IIFE(立即调用函数表达式)在 next 中定义 i,如下所示。最好在每个间隔调用的函数之外声明幻灯片和幻灯片。

<img id="sideimg" src="images/image1.jpg" alt="penguin" />
<script>

var timeOut=function(){
    setTimeout(next,1000);
}

var next=function(){
    var i = 0;
    var slides=["images/image1.jpg","images/image2.jpg","images/image3.jpg"];

    var slide=document.getElementById("sideimg");
return function() {
        slide.src=slides[i];
        timeOut();
        i++;
        if(i>=3){
            i=0;
        };
    };
}();

next();
</script>

关于使用带有 img URL 的数组的 Javascript 幻灯片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51904226/

相关文章:

javascript - 在 reactjs 中合成 html 代码

html - Safari 中的 img 被隐藏

javascript - 清除 Canvas 不起作用

javascript - Web 在 Cheerio 中抓取 HTML 表格

heroku - 在 Heroku 上部署 Go 应用程序后遇到问题

javascript - 按退出键中止 AJAX 文件上传

javascript - 我如何使用 postinstall 编辑 package.json

javascript - Vue.js 3 - 在 vue 中使用 Vue I18n 插件时出错 - 无法设置未定义的属性 '_vm'

Javascript - 添加动态表行

html - Google PageSpeed 建议删除元字符集标签