对SetInterval和闭包感到困惑
Confused about SetInterval and closures
本文关键字:闭包 SetInterval 更新时间:2023-09-26
如何使用setInterval
重复更新div的内容?我使用这个链接中的问题作为参考如何反复更新一个
只使用JavaScript?
但是我有几个问题。
- 我们可以使用闭包而不使用匿名函数吗?我已经试过了,但没有找到可行的解决办法。
- 我们如何让它无限运行,用下面的代码,一旦i达到10,它就会停止。
window.onload = function() {
var timing = document.getElementById("timer");
var i = 0;
var interval = setInterval(function() {
timing.innerHTML = i++;
if (i > 10) {
clearInterval(interval);
i = 0;
return;
}
}, 1000);
}
<div id="timer"></div>
我对setinterval和闭包感到困惑有人能帮我一下吗?
谢谢
您可以使用闭包做类似的事情。只要重置你的i值,你就会一直在给定的范围内。
window.onload = function() {
var updateContent = (function(idx) {
return function() {
if (idx === 10) {
idx = 0;
}
var timing = document.getElementById("timer");
timing.innerHTML = idx++;
}
})(0);
var interval = setInterval(updateContent, 1000);
}
<div id="timer"></div>
这个应该更清楚。
function updateTimer() {
var timer = document.getElementById("timer");
var timerValue = parseInt(timer.getAttribute("data-timer-value")) + 1;
if (timerValue == 10) {
timerValue = 0;
}
timer.setAttribute("data-timer-value", timerValue);
timer.innerHTML = "the time is " + timerValue;
}
window.onload = function() {
setInterval(updateTimer, 1000);
}
<div id="timer" data-timer-value="0"></div>
相关文章:
- 在underscorejs模板中使用闭包
- setTimeout可以与闭包内的函数一起使用吗
- 附加到原型属性的Do函数没有闭包
- 使用闭包共享构造函数参数
- 使用Google闭包编译器包含一个Ecmascript 6类
- 从js引擎的角度来看闭包和构造函数是如何工作的
- for循环中的JavaScript闭包
- Javascript闭包-如何防止内存泄漏
- 子类访问父类's闭包变量
- 闭包如何具体化数据封装
- Javascript.闭包和dynamic'这'实际上具有约束力
- 构造函数函数闭包变量
- 闭包js框架-将ArrayBuffer转换为字符串
- 如何在Angularjs中重构闭包中的重复代码
- 如何告诉闭包javascript编译器不要混淆webkitAudioContext的方法名称
- Google闭包和生成的getters/ssetter
- 如何冻结函数's在闭包中的变量
- javascript中setInterval函数的闭包
- JavaScript setInterval 未正确绑定到正确的闭包
- 对SetInterval和闭包感到困惑