javascript - 在jquery中,如何循环每个div,并显示每个div 10秒,然后隐藏
问题描述
<div id='a'> Apple </div>
<div id='b'> Berry </div>
<div id='c'> Cherry </div>
$(document).ready(function () {
$(#a).hide;
$(#b).hide;
$(#c).hide;
var arr = ["a", "b", "c"];
var i;
for (i = 0; i < 10; i++) {
for (j = 0; j < arr.length; i++) {
setInterval(function(){ arr[j].show(); }, 10 * 1000);
arr[j].hide();
}
}
});
步骤:隐藏所有 div。循环 10 次。显示每个 div 10 秒,然后隐藏。
在这个例子中,有 3 个 div。可能有更多或更少的div。所以我猜需要某种数组。
解决方案
获取所有 div,使用setTimeOut
内部承诺并在指定时间完成后解决承诺。
在内部,维护一个将循环setTimeout
的索引变量,并将index 设置为一旦其值小于 div 的长度(从第一个 div 开始循环)。i
div
i
zero
let prevDiv = null;
const divs = document.querySelectorAll('div');
const length = divs.length;
let i = 0;
const delay = function() {
return new Promise((resolve) => {
setTimeout(() => {
if (prevDiv) {
prevDiv.classList.remove('active');
prevDiv.classList.add('hide');
}
i = i < divs.length ? i : 0;
divs[i].classList.remove('hide');
divs[i].classList.add('active');
prevDiv = divs[i];
i++;
resolve();
}, 1000);
});
}
async function calc() {
for (let i = 0; i < 10; i++) {
await delay();
}
}
calc();
.active {
display: block;
}
.hide {
display: none;
}
<div id='a' class="hide"> Apple </div>
<div id='b' class="hide"> Berry </div>
<div id='c' class="hide"> Cherry </div>
推荐阅读
- rust - 避免在 Rust 中未定义变量时无法访问的“匹配”结构中的“使用可能未初始化的变量”
- reactjs - Reactjs 多选列表框
- git - Create a new branch and move commits after head to new branch and sync with GitHub
- python - 返回过去 24 小时内修改过的 Amazon S3 存储桶中的所有密钥
- python - pyinstaller 制作巨大的文件
- python - Python,在输入中运行时出现 elif 错误
- ruby-on-rails - 服务中的命名约定问题
- php - 一次查询支付多张发票
- swift - 在“super.init”调用之前在方法调用“foo”中使用“self”
- javascript - Javascript迭代字符串数组并为每个字符串添加输入/删除效果,一个接一个地完成