javascript - 使用 JS 更改计时器上的所有图像

标签 javascript image

我有这个 3x3 图片库。我需要用 JS 来改变所有这些。 到目前为止,我成功地对其中一张图像执行了此操作。我不知道如何针对所有这些。

<script>
var images = ["http://lorempixel.com/250/200/", "http://lorempixel.com/250/150/"];
var i = 0;
var renew = setInterval(function(){
if(images.length == i){
i = 0;
}
else {
document.getElementByClassName('galleryItem').src = images[i];
i++;
}
},1000);
</script>

<div class="galleryWrapper">
<div class="galleryItem item1">
<img id="image1" src="http://lorempixel.com/250/200/" alt="picture1">
</div>
<div class="galleryItem item2">
<img id="image2" src="http://lorempixel.com/250/200/" alt="picture2">
</div>
<div class="galleryItem item3">
<img id="image3" src="http://lorempixel.com/250/200/" alt="picture3">
</div>
<div class="galleryItem item4">
<img id="image4" src="http://lorempixel.com/250/200/" alt="picture4">
</div>
<div class="galleryItem item5">
<img id="image5" src="http://lorempixel.com/250/200/" alt="picture5">
</div>
<div class="galleryItem item6">
<img id="image6" src="http://lorempixel.com/250/200/" alt="picture6">
</div>
<div class="galleryItem item7">
<img id="image7" src="http://lorempixel.com/250/200/" alt="picture7">
</div>
<div class="galleryItem item8">
<img id="image8" src="http://lorempixel.com/250/200/" alt="picture8">
</div>
<div class="galleryItem item9">
<img id="image9" src="http://lorempixel.com/250/200/" alt="picture9">
</div>
</div>

我根本不懂 JS,所以别太严厉。

提前致谢。

最佳答案

body 元素中删除 onload(使用 DOMContentLoaded 事件代替,这样侵入性较小)。

var imageList = ["http://lorempixel.com/250/200/", "http://lorempixel.com/250/150/"],
    imageListCounter = 0,
    imageEls;

function swapImages() {
    var i = 0, len = imageEls.length;
    for (i = 0; i < len; i++) {
        imageEls[i].src = imageList[imageListCounter];
    }
    imageListCounter++;
    if (imageListCounter > imageList.length - 1) {
        imageListCounter = 0;
    }
}

document.addEventListener('DOMContentLoaded', function(event) {
    imageEls = document.querySelectorAll('.galleryItem img');
    setInterval(swapImages, 1000);
});

我们在这里做的是:

  • 文档准备好后,将所有图像元素存储在 imageEls 中
  • 然后启动一个计时器,每 1 秒调用一次 swapImages
  • swapImages 迭代图像并将 .src 更改为 imageList 中的下一个图像
  • 当 imageListCounter 到达 imageList 末尾时,它会重置为 0

完整的html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Simple Gallery</title>
    <link rel="stylesheet" href="style.css">
    <script>
        var imageList = ["http://lorempixel.com/250/200/", "http://lorempixel.com/250/150/"],
            imageListCounter = 0,
            imageEls;

        function swapImages() {
            var i = 0, len = imageEls.length;
            for (i = 0; i < len; i++) {
                imageEls[i].src = imageList[imageListCounter];
            }
            imageListCounter++;
            if (imageListCounter > imageList.length - 1) {
                imageListCounter = 0;
            }
        }

        document.addEventListener('DOMContentLoaded', function(event) {
            imageEls = document.querySelectorAll('.galleryItem img');
            setInterval(swapImages, 1000);
        });
    </script>
</head>
<body>
    <div class="galleryWrapper">
        <div class="galleryItem item1">
            <img src="http://lorempixel.com/250/200/" alt="picture1">
        </div>
        <div class="galleryItem item2">
            <img src="http://lorempixel.com/250/200/" alt="picture2">
        </div>
        <div class="galleryItem item3">
            <img src="http://lorempixel.com/250/200/" alt="picture3">
        </div>
        <div class="galleryItem item4">
            <img src="http://lorempixel.com/250/200/" alt="picture4">
        </div>
        <div class="galleryItem item5">
            <img src="http://lorempixel.com/250/200/" alt="picture5">
        </div>
        <div class="galleryItem item6">
            <img src="http://lorempixel.com/250/200/" alt="picture6">
        </div>
        <div class="galleryItem item7">
            <img src="http://lorempixel.com/250/200/" alt="picture7">
        </div>
        <div class="galleryItem item8">
            <img src="http://lorempixel.com/250/200/" alt="picture8">
        </div>
        <div class="galleryItem item9">
            <img src="http://lorempixel.com/250/200/" alt="picture9">
        </div>
    </div>
</body>
</html>

关于javascript - 使用 JS 更改计时器上的所有图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24676869/

相关文章:

javascript - JSON.parse 抛出错误

javascript - mongodb - 数组上的 nin 和正则表达式

javascript - sinon:如何模拟从另一个函数返回的函数

html - 3张图片居中排列

css - 如何让 span 的宽度与其内部的图像一样宽?

jquery - 来自 Google 的 jQuery 图像建议

javascript - 在 JavaScript 中克隆表格行并删除值

javascript - XD 插件中的 npm 包或 Node.js API

css - 如何缩放容器内的图像

php - 使用Jcrop裁剪并使用PHP GD保存时如何获得可变宽度和高度