javascript - 尝试遍历图像数组,但代码仅显示数字 1(甚至不显示数字 0)
问题描述
我正在尝试遍历一组图片,但它只显示数组中的一张图片的代码。
此外,更令人困惑的是,它甚至不显示数组的元素 0,而是显示元素 1。
我一直在阅读有关 setTimeOut 和其他方法的信息,但我还没有真正理解逻辑(javascript 新手)。
我的最终目标是当鼠标悬停在所选元素上时,在特定时间内显示一系列图片(如视频中的照片)。
这是我的代码:
let aboutMePics = ["url('./img/aboutMeStill01.png')", "url('./img/aboutMeStill02.png')"]
const aboutMe = document.getElementById("aboutMe")
aboutMe.addEventListener("mouseover", function(){
for (let i = 0; i < aboutMePics.length; i++) {
document.body.style.background = aboutMePics[i];
}
})
aboutMe.addEventListener("mouseout", function(){
document.body.style.background = 'initial';
})
解决方案
// IIFE just for a reduced scope
(function() {
const aboutMePics = ["url('./img/aboutMeStill01.png')", "url('./img/aboutMeStill02.png')"];
const aboutMe = document.getElementById("aboutMe");
let timeout;
function adjustPicture(index) {
document.body.style.background = aboutMePics[index];
timeout = setTimeout(() => adjustPicture(++index % aboutMePics.length), 3000);
}
aboutMe.addEventListener('mouseenter', function(){
adjustPicture(0);
});
aboutMe.addEventListener("mouseleave", function() {
clearTimeout(timeout);
document.body.style.background = 'initial';
});
})();
- 当鼠标进入元素时,将图片调整为pic 0。
- 调整好图片后,为下一张图片启动超时3秒
- 通过图片的数量对索引进行模数,以便索引循环
- 当鼠标离开元素时,清除超时并重置背景
推荐阅读
- apache-spark - 如何在 spark sql 的 like 子句中有 100 多个任意大小的单词?
- python - 关于 __main__ 属性的困惑
- python - 如何在函数之间传递参数?
- aspose - 如何让 Aspose.Cells 19.10 在 Linux .Net 服务中正确渲染字体?
- r - R粘贴列表绑定
- netbeans - JFreeChart 不能处理可执行的 JAR 文件?
- html - CSS 选择器 QuerySelector 替代
- node.js - 使用 BATCH 文件在受密码保护的文件夹中调用 NodeJS 脚本
- python - 从字符串中提取数组
- xaml - Xamarin 表单用户界面不会更新以反映 Android 上的 XAML 更改