jquery - 避免 setInterval jquery 中的等待时间
问题描述
我正在使用此脚本,其中li
内容input
每 10 秒显示一次。它工作正常......但是......
button
我必须等待 10 秒才能在初始点击后开始执行代码...
我该如何避免这种行为?我只想让脚本立即开始。
$("button").on("click", function() {
var items = $(".menu li"), idx = 0;
var timer = setInterval(function() {
var currText = items.eq(idx).text()
if (idx < items.length - 1) idx++;
else idx = 0;
$("#show").val(currText);
}, 10000);
});
input {
width: 40px;
height: 40px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<button>show li in order every 10 seconds</button>
<input type=text id="show" />
<ul class="menu">
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
<li>E</li>
</ul>
解决方案
创建一个具有该间隔的函数 - 并调用它!
不要忘记使用.one()
代替.on()
var items = $(".menu li"), $show = $('#show'), idx = 0, timer = null;
function doIt () {
var currText = items.eq(idx).text()
if (idx < items.length - 1) idx++;
else clearInterval(timer);
$show.val(currText);
timer = setInterval(doIt, 1000);
}
$("button").one("click", doIt);
input {
width: 40px;
height: 40px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<button>show li in order every 10 seconds</button>
<input type=text id="show" />
<ul class="menu">
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
<li>E</li>
</ul>
推荐阅读
- flutter - 在抽屉小部件中使用时,输入字段隐藏在键盘下方
- monaco-editor - Monaco JavaScript 编辑器 - 如何更改智能感知位置以显示在线下方?
- python - 通过 gspread 和 google sheet API 更改 google sheet 中的列格式
- java - Maven在构建子项目时从jar依赖中解包类
- joi - 如何通过检查字符串的值是否在数组中来检查字符串是否有效
- python - Selenium“DevToolsActivePort 文件不存在”错误
- python - 查找要添加或删除的最小边/顶点数以将图形从 1 转换为另一个
- reactjs - 全屏显示特定的 Route 组件
- python - 如何在 Python 中显示真实的数值?
- arduino - Arduino TTL jpeg 串行摄像头和 esp8266 wifi Wi-Fi 模块