简单JavaScript计数器函数

简单JavaScript计数器函数,javascript,counter,Javascript,Counter,我想做一个计数器函数,并精确设置开始时间和显示位置的变量 因此,如果我希望每页有多个计数器,我可以轻松管理它: $(document).ready(function() { // set time and place (where to display the counter) function countDown(time, place){ if(time > 0){

我想做一个计数器函数,并精确设置开始时间和显示位置的变量

因此,如果我希望每页有多个计数器,我可以轻松管理它:

$(document).ready(function() {

            // set time and place (where to display the counter)
            function countDown(time, place){

                if(time > 0){
                    time--;    
                    setInterval(function(){countDown(time,place)}, 1000);
                } // end if

                if(time == 0)
                {
                    window.clearInterval(time);
                }
            } // end function

                     $('.click').click(function(){
                        countDown(30, '#counter');                              

                     });

}); // end DOM

   </script>
</head>


<body>
    <div class="click">clickme</div>
    <br />

    <div id="counter">30</div>

</body>
$(文档).ready(函数(){
//设置时间和地点(显示计数器的位置)
功能倒计时(时间、地点){
如果(时间>0){
时间--;
setInterval(函数(){倒计时(时间、地点)},1000);
}//如果结束,则结束
如果(时间==0)
{
窗口。清除间隔(时间);
}
}//结束函数
$('.click')。单击(函数(){
倒计时(30,“计数器”);
});
}); // 末端DOM
点击我

30
试试这个:

    <html>
    <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
    </script>
    <script>


                var myVar;
var clickcount=0;

function countDown (time, place) {
        if (time > 0) {

        $(place).html(time);
        time--;
        myVar=setTimeout(function () { countDown(time, place); }, 1000);
  }
}

function startreset(time,place){
        clickcount++;
        if(clickcount % 2 === 0){
             clearTimeout(myVar);              
        } else {
            countDown(time,place);
        }

    }

$('.click').click(function(){
        startreset(30, '#counter');                              
        });



       </script>
    </head>




 <body>
        <div class="click" onClick="javascript:countDown(30,'#counter');">clickme</div>
        <br />

        <div id="counter">30</div>

    </body>

var-myVar;
var-clickcount=0;
功能倒计时(时间、地点){
如果(时间>0){
$(地点).html(时间);
时间--;
myVar=setTimeout(函数(){countDown(time,place);},1000);
}
}
功能启动设置(时间、地点){
点击计数++;
如果(单击计数%2==0){
清除超时(myVar);
}否则{
倒计时(时间、地点);
}
}
$('.click')。单击(函数(){
startreset(30,“计数器”);
});
点击我

30
试试这个:

    <html>
    <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
    </script>
    <script>


                var myVar;
var clickcount=0;

function countDown (time, place) {
        if (time > 0) {

        $(place).html(time);
        time--;
        myVar=setTimeout(function () { countDown(time, place); }, 1000);
  }
}

function startreset(time,place){
        clickcount++;
        if(clickcount % 2 === 0){
             clearTimeout(myVar);              
        } else {
            countDown(time,place);
        }

    }

$('.click').click(function(){
        startreset(30, '#counter');                              
        });



       </script>
    </head>




 <body>
        <div class="click" onClick="javascript:countDown(30,'#counter');">clickme</div>
        <br />

        <div id="counter">30</div>

    </body>

var-myVar;
var-clickcount=0;
功能倒计时(时间、地点){
如果(时间>0){
$(地点).html(时间);
时间--;
myVar=setTimeout(函数(){countDown(time,place);},1000);
}
}
功能启动设置(时间、地点){
点击计数++;
如果(单击计数%2==0){
清除超时(myVar);
}否则{
倒计时(时间、地点);
}
}
$('.click')。单击(函数(){
startreset(30,“计数器”);
});
点击我

30
试试这个:

    <html>
    <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
    </script>
    <script>


                var myVar;
var clickcount=0;

function countDown (time, place) {
        if (time > 0) {

        $(place).html(time);
        time--;
        myVar=setTimeout(function () { countDown(time, place); }, 1000);
  }
}

function startreset(time,place){
        clickcount++;
        if(clickcount % 2 === 0){
             clearTimeout(myVar);              
        } else {
            countDown(time,place);
        }

    }

$('.click').click(function(){
        startreset(30, '#counter');                              
        });



       </script>
    </head>




 <body>
        <div class="click" onClick="javascript:countDown(30,'#counter');">clickme</div>
        <br />

        <div id="counter">30</div>

    </body>

var-myVar;
var-clickcount=0;
功能倒计时(时间、地点){
如果(时间>0){
$(地点).html(时间);
时间--;
myVar=setTimeout(函数(){countDown(time,place);},1000);
}
}
功能启动设置(时间、地点){
点击计数++;
如果(单击计数%2==0){
清除超时(myVar);
}否则{
倒计时(时间、地点);
}
}
$('.click')。单击(函数(){
startreset(30,“计数器”);
});
点击我

30
试试这个:

    <html>
    <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
    </script>
    <script>


                var myVar;
var clickcount=0;

function countDown (time, place) {
        if (time > 0) {

        $(place).html(time);
        time--;
        myVar=setTimeout(function () { countDown(time, place); }, 1000);
  }
}

function startreset(time,place){
        clickcount++;
        if(clickcount % 2 === 0){
             clearTimeout(myVar);              
        } else {
            countDown(time,place);
        }

    }

$('.click').click(function(){
        startreset(30, '#counter');                              
        });



       </script>
    </head>




 <body>
        <div class="click" onClick="javascript:countDown(30,'#counter');">clickme</div>
        <br />

        <div id="counter">30</div>

    </body>

var-myVar;
var-clickcount=0;
功能倒计时(时间、地点){
如果(时间>0){
$(地点).html(时间);
时间--;
myVar=setTimeout(函数(){countDown(time,place);},1000);
}
}
功能启动设置(时间、地点){
点击计数++;
如果(单击计数%2==0){
清除超时(myVar);
}否则{
倒计时(时间、地点);
}
}
$('.click')。单击(函数(){
startreset(30,“计数器”);
});
点击我

30
您可能遇到的问题是多次调用setInterval。setInterval不仅仅是等待您告诉它的x毫秒,然后调用您的方法,它还会继续每隔x毫秒调用您的方法。因此,当您第一次调用countDown时,会为函数设置一个间隔。该间隔到期,并再次调用倒计时。到目前为止一切正常,但现在第二个倒计时调用建立了另一个setInterval。程序将等待x毫秒从第二个setInterval调用倒计时,但它将从第一个setInterval调用倒计时

…换句话说,您不应该重复调用setInterval。您需要的是setTimeout,它等待指定的时间量,然后调用指定的方法一次

或者,如果您今天感觉不到递归:

function countDown (time, place) {
  var interval = setInterval(function () {
    if (time > 0) {
      time--;
      $(place).html(time);
    } else {
      window.clearInterval(interval);
    }
  }, 1000);
}
它利用setInterval,但只使用一次


JSFiddle提供:

您可能遇到的问题是多次调用setInterval。setInterval不仅仅是等待您告诉它的x毫秒,然后调用您的方法,它还会继续每隔x毫秒调用您的方法。因此,当您第一次调用countDown时,会为函数设置一个间隔。该间隔到期,并再次调用倒计时。到目前为止一切正常,但现在第二个倒计时调用建立了另一个setInterval。程序将等待x毫秒从第二个setInterval调用倒计时,但它将从第一个setInterval调用倒计时

…换句话说,您不应该重复调用setInterval。您需要的是setTimeout,它等待指定的时间量,然后调用指定的方法一次

或者,如果您今天感觉不到递归:

function countDown (time, place) {
  var interval = setInterval(function () {
    if (time > 0) {
      time--;
      $(place).html(time);
    } else {
      window.clearInterval(interval);
    }
  }, 1000);
}
它利用setInterval,但只使用一次


JSFiddle提供:

您可能遇到的问题是多次调用setInterval。setInterval不仅仅是等待您告诉它的x毫秒,然后调用您的方法,它还会继续每隔x毫秒调用您的方法。因此,当您第一次调用countDown时,会为函数设置一个间隔。该间隔到期,并再次调用倒计时。到目前为止一切正常,但现在第二个倒计时调用建立了另一个setInterval。程序将等待x毫秒从第二个设置间隔调用倒计时,