javascript - 带有嵌套 timeOut 的 timeInterval
问题描述
页面加载后我需要:
- 等待 7 秒
aniwrap.text()
-LOREM IPSUM
- 等待 7 秒
aniwrap.text()
-DOLOR SIT
- 等等 - 重复暂停并更改文本
在我的尝试中 - 我只有第二个文本,没有第一个
有什么帮助吗?
var i;
var txt = '';
var arra = ["LOREM IPSUM", "DOLOR SIT"];
var aniwrap = $('#aniwrap');
function write() {
if (i < txt.length) {
document.getElementById("aniwrap").innerHTML += txt.charAt(i);
i++;
setTimeout(write, 70);
}
}
function single(){
$(arra).each(function(el, val){
setTimeout(function(){
aniwrap.text('');
i = 0;
console.log(val);
txt = val;
write();
}, 7000);
});
}
$(window).on('load', function(){
setInterval(single, 7000);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id='aniwrap'></div>
解决方案
您有几个问题:$(element/selector).each(cb)
对于 jQuery 对象,您想要对数组进行迭代的是$.each(array, cb)
(或只是array.forEach
. 另一个问题是您setTimeout
同时在循环中创建 s )。除非我遗漏了一些你根本不需要循环或 setTimeout 的东西single
。
var idx = 0;
function single() {
if (idx == arra.length) {
idx = 0;
}
var val = arra[idx];
aniwrap.text('');
idx++;
i = 0;
txt = val;
write();
}
推荐阅读
- javascript - 使用 JQuery 隐藏页面上的按钮
- reactjs - ReactJS 样式的组件(工具提示)显示在错误的位置
- c# - C# 使用带有密钥的随机数生成来解决加密消息,但我无法将消息保留在字符串中
- flutter - 如何在 Flutter 中从左到右水平淡入淡出?
- javascript - 我正在尝试用 Javascript 编写一个不和谐的机器人,但它一直说“预期声明或声明。ts(1128)”
- python - Numpy 数组在编码和写入文件时以某种方式被破坏
- c++ - 如何从离线配置单元中读取注册表
- javascript - 如何从两个设备方向事件中找到用于控制 2D 游戏的相对滚动和俯仰角
- excel - Fix (force) loop to protect/unprotect/hide/show worksheets
- python - 如何将 pd.to_datetime() 用于具有年-月-日时:分:秒数据的列?