javascript - 每 5 秒更换一次图片和链接
问题描述
我使用以下代码每 5 秒更改一次图像和链接,但第二张图像https://img2.png停留 10 秒 - 我错过了什么?
<script>
var links = ["https://website1.com","https://website2.com"];
var images = ["https://img1.jpg","https://img2.png"];
var i = 0;
var renew = setInterval(function(){
if(links.length == i){
i = 0;
}
else {
document.getElementById("bannerImage").src = images[i], style="width:100%; height: auto;";
document.getElementById("bannerLink").href = links[i], target="_blank";
i++;
}
},5000);
</script>
<a id="bannerLink" target="_blank" href="https://website1.com" onclick="void window.open(this.href);
return false;">
<img id="bannerImage" style="width:100%; height: auto;" src="https://img1.jpg">
解决方案
让我们梳理一下逻辑:
var i = 0;
计数器i
设置为0
if(links.length == i){
i = 0;
} else {
document.getElementById("bannerImage").src = images[i], style="width:100%; height: auto;";
document.getElementById("bannerLink").href = links[i], target="_blank";
i++;
}
如果links.length == i
,设置i = 0
。links.length
在这种情况下是2
,所以条件不成立。
这意味着现在执行以下案例:
document.getElementById("bannerImage").src = images[i], style="width:100%; height: auto;";
document.getElementById("bannerLink").href = links[i], target="_blank";
i++;
因此i
现在是 1。setInterval
函数现在等待 5 秒。
重复此操作,然后i
设置为2
。该setInterval
函数现在等待 5 秒。
然后我们进入第三次迭代。在本次迭代中,links.length == i
isTRUE
并i
设置为0
。但是,没有其他任何事情发生(if 语句不会更改此迭代中的图片),因此该setInterval
函数在继续循环之前等待 5 秒。这就是你额外的 5 秒的来源。在第三个循环中图片没有改变,但setInterval
函数确实等待了 5 秒。
如果您只是想永远运行此代码并每 5 秒更改一次图片,您可以这样做:
setInterval(function(){
// Always change the picture first
document.getElementById("bannerImage").src = images[i], style="width:100%; height: auto;";
document.getElementById("bannerLink").href = links[i], target="_blank";
// Always increment the counter
i++;
// Reset counter if equal to length of array
if (i == links.length){
i = 0;
}
},5000);
推荐阅读
- android-studio - Android Studio:项目结构层次结构中的子模块
- r - 密度图 ggplot 错误返回缺失的美学错误
- python - Python Selenium:有时无法在 iframe 中获取内容
- cytoscape - 如何实现新的节点形状
- google-play - Expo 托管项目密钥库文件和 Google Play 上传密钥库之间的区别
- c++11 - 使用 pybind11 动态加载 libpython
- java - 使用打包的 JRE 编译为 linux 可执行文件
- ajax - 当您期望空结果时,如何防止从 java 服务器端返回 400 代码?
- javascript - 在 javascript 中构建表格并在 1 个单元格中进行粗体测试
- dart - 我想创建每个字母大写的随机英文单词,但我失败了,尽管我遵循与指令显示完全相同的代码