如何使用单个javascript函数运行多个倒计时?

如何使用单个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

在页面加载时,我的页面上有多个倒计时。我想让它与单一的javascript函数一起工作。我尝试了很多方法让它工作,但其中任何一种都对我有用

我在这里发现了一些类似的问题,但没有一个对我有帮助

我做错了什么?我该怎么办

HTML:


紧凑编码的艺术

<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);
    })        
});