如何使用单个javascript函数运行多个倒计时?
在页面加载时,我的页面上有多个倒计时。我想让它与单一的javascript函数一起工作。我尝试了很多方法让它工作,但其中任何一种都对我有用 我在这里发现了一些类似的问题,但没有一个对我有帮助 我做错了什么?我该怎么办 HTML:如何使用单个javascript函数运行多个倒计时?,javascript,jquery,html,setinterval,intervals,Javascript,Jquery,Html,Setinterval,Intervals,在页面加载时,我的页面上有多个倒计时。我想让它与单一的javascript函数一起工作。我尝试了很多方法让它工作,但其中任何一种都对我有用 我在这里发现了一些类似的问题,但没有一个对我有帮助 我做错了什么?我该怎么办 HTML: 紧凑编码的艺术 <button id="b1">100</button> <button id="b2">10</button> <button id="b3">5</button> <sc
紧凑编码的艺术
<button id="b1">100</button>
<button id="b2">10</button>
<button id="b3">5</button>
<script>
function countdown(nsec,d){
if (d.nsec==null) d.nsec=nsec;
d.counter=setInterval(function(){
d.nsec--;
if (d.nsec<0) {
clearInterval(d.nsec);
return;
}
d.innerHTML=d.nsec;
},1000);
}
countdown(document.getElementById('b1'),100);
countdown(document.getElementById('b2'),10);
countdown(document.getElementById('b3'),5);
</script>
100
10
5.
功能倒计时(nsec,d){
如果(d.nsec==null)d.nsec=nsec;
d、 计数器=设置间隔(函数(){
d、 nsec-;
if(d.nsec使用.counter
类迭代每个元素,并运行setInterval计时器。
像这样的
$(function () {
$('.counter').each(function () {
var duration = +$(this).attr('rel'), // <--- + is same as parseInt()
$span = $(this);
var counter = setInterval(function () {
duration--;
$span.attr('rel', duration);
$span.html(duration);
if (duration <= 0) {
console.log('finished');
clearInterval(counter);
}
}, 1000);
});
});
<span class="counter" data-duration=200>
您只需要多个枚举倒计时,这是有效的:
$(function () {
$(".counter").each(function() {
var $this = $(this),
counter = $this.attr('rel');
var countDown = setInterval(function() {
counter--;
$this.text(counter);
if (counter == 0) {
clearInterval(countDown);
}
}, 1000);
})
});
演示->如果可能的话,我需要在页面加载时使用它,不需要点击。有什么办法吗?感谢Schien的贡献。不客气。我总是尽可能提供一个简单的JavaScript解决方案。$(“.classname”)。每个都天生很慢,尽管看起来不是。作为新手,Jquery对我来说总是比较流畅。而且出现的次数也不确定,所以我需要运行另一个循环来使用此方法调用函数。
<span class="counter" data-duration=200>
$(function () {
$(".counter").each(function() {
var $this = $(this),
counter = $this.attr('rel');
var countDown = setInterval(function() {
counter--;
$this.text(counter);
if (counter == 0) {
clearInterval(countDown);
}
}, 1000);
})
});