javascript - 如何在文本输入中创建一个计数计时器?

标签 javascript jquery html

下面我有一个运行正常的 javascript 倒数计时器:

    <h1><span id='countdown'><?php echo $dbSessionDuration; ?></span></h1>

...

  $(document).ready(function() {
    var time = <?php echo json_encode($dbSessionDuration); ?>,
      parts = time.split(':'),
      hours = +parts[0],
      minutes = +parts[1],
      seconds = +parts[2],
      span = $('#countdown');


    function correctNum(num) {
      return (num<10)? ("0"+num):num;
    }

    var timer = setInterval(function(){
        seconds--;
        if(seconds == -1) {
            seconds = 59;
            minutes--;

            if(minutes == -1) {
                minutes = 59;
                hours--;

                if(hours==-1) {
                  alert("timer finished");
                  clearInterval(timer);
                  return;
                }
            }
        }
        span.text(correctNum(hours) + ":" + correctNum(minutes) + ":" + correctNum(seconds));
    }, 1000);

});

现在我想做的是使用上面的例子并操纵它现在做相反的事情并创建一个从 00:00:00(小时、分钟、秒)开始的计数计时器。

但问题是它不起作用。什么都没有发生。我不知道我是否需要在下面的函数中使用一个小时,因为作为一个计数,时间可以达到它想要的任意多个小时。但我的问题是如何固定计数计时器以使其完全正常工作?

<p><input type='text' class='responseTime' name='responsetime' value='00:00:00' /></p>

...

$(document).ready(function() {
var response = "00:00:00",
      parts = time.split(':'),
      hours = +parts[0],
      minutes = +parts[1],
      seconds = +parts[2],
      input = $('.responseTime');


    function correctResponse(responsenum) {
      return (responsenum<10)? ("0"+responsenum):responsenum;
    }

    var responsetimer = setInterval(function(){
        seconds--;
        if(seconds == +59) {
            seconds = 00;
            minutes--;

            if(minutes == +59) {
                minutes = 00;
                hours--;

                  return;

            }
        }
        input.text(correctResponse(hours) + ":" + correctResponse(minutes) + ":" + correctResponse(seconds));
    }, 1000);


  });

更新:

另外,作为旁注,我意识到我认为倒数计时器每秒每 2 秒倒计时一次。如何将其排序为倒数计时器并包含在正数计时器中?

下面的代码我已经更改为包含增量++ 并包含 .val 而不是 .text 但发生的事情是它从 00:00:00 开始然后下降到 00:59:60 并且然后就停止了:

var response = "00:00:00",
          parts = time.split(':'),
          hours = +parts[0],
          minutes = +parts[1],
          seconds = +parts[2],
          input = $('.responseTime');


        function correctResponse(responsenum) {
          return (responsenum<10)? ("0"+responsenum):responsenum;
        }

        var responsetimer = setInterval(function(){
            seconds++;
            if(seconds == +59) {
                seconds = 00;
                minutes++;

                if(minutes == +59) {
                    minutes = 00;
                    hours++;

                      return;

                }
            }
            input.val(correctResponse(hours) + ":" + correctResponse(minutes) + ":" + correctResponse(seconds));
        }, 1000);


      }); 

最佳答案

您可以像这里一样轻松修改当前倒数计时器:http://jsfiddle.net/Sergiu/CDpeJ/3

var timer = setInterval(function(){
    seconds++;
    if(seconds == 60) {
        seconds = 00;
        minutes++;

        if(minutes == 60) {
            minutes = 00;
            hours++;
        }
    }
    var newTime = hours + ":" + minutes + ":" + seconds;
    if(!newTime.match(/^(20|21|22|23|[01]\d|\d)(([:.][0-5]\d){1,2})$/)) newTime = "finished";
    $('#timeInput').val(newTime);
}, 1000);

关于javascript - 如何在文本输入中创建一个计数计时器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14762153/

相关文章:

PHP 和 Jquery 的 json

javascript - 是否有等效于 SVG 的 Canvas toDataURL 方法?

html - 打印页表行/单元格时获得随机高度

php - 调用 php 函数通过 ajax 显示我的帖子后,似乎无法访问 $wpdb

javascript - window.open 出现在 webkit 浏览器后面,但如果我打开 facebook 或 twitter 页面则不会?

javascript - 如何设计 Twitter 弹出窗口

javascript - 防止保存按钮在 Django 管理中提交表单

使用 Schema.org 的 html5 微数据标记

javascript - 我无法使用 Angular2 从 JSONP 响应中获取正文数据,但它可以通过使用 ajax 来工作

javascript - 从 JSON 文件中读取点数组