【问题标题】:Why I can't increment the chronometer value?为什么我不能增加计时器值?
【发布时间】:2016-06-15 14:06:43
【问题描述】:

我想要一个计时器,但我找到了下一个代码。问题是当我将time = new Date(time - 1000); 更改为time = new Date(time + 1000);

这是我的代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>My page</title>
    <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
    <style>
        a{
        margin: 0 10px;
        color: gray;
        }
        .time{
            font-size: 50px;
            margin: 20px;
            font-family: monospace;
        }
    </style>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
    <script>
        var startValue = 1000; //Number of milliseconds
        var time = new Date(startValue);
        var interv;
        $(function(){
            displayTime();
            $(".start").on("click", function(){
            interv = setInterval(function(){
                //time = new Date(time - 1000);
                time = new Date(time + 1000);
                displayTime();
            }, 1000);
            });
            $(".stop").on("click", function(){
                clearInterval(interv);
                time = new Date(startValue);
                displayTime();
            });
            $(".pause").on("click", function(){
                clearInterval(interv);
            });
            $(".reset").on("click", function(){
                time = new Date(startValue);
                displayTime();
            });
        });

        function displayTime(){
            $(".time").text(fillZeroes(time.getMinutes()) + ":" + fillZeroes(time.getSeconds()));
        }

        function fillZeroes(t){
            t += "";
            return t.length==1? "0" + t : t;
        }
    </script>
</head>
<body>
<a href="#" class="start">start</a>
<a href="#" class="stop">stop</a>
<a href="#" class="pause">pause</a>
<a href="#" class="reset">reset</a>
<div class="time"></div>
</body>
</html>

如何增加时间? 谢谢!

【问题讨论】:

  • 我发现了下一个荒谬的解决方案:time = new Date(time - -1000);
  • 是的,这都是关于隐式类型转换的。欢迎使用 JavaScript ;)

标签: javascript jquery time increment


【解决方案1】:

使用date.getTime() 从 Date 对象中获取时间戳。在你的情况下:

time = new Date(time.getTime() + 1000);

演示:https://plnkr.co/edit/G8yo5l4wHe2yv9S3fjLI?p=preview

【讨论】:

  • @JuanCamacho 你想知道为什么- 有效而+ 无效吗?如果您需要,我可以添加一些解释。
【解决方案2】:

试试这个解决方案https://jsfiddle.net/giuseppe_straziota/eag01ojj/

$(".start").on("click", function(){
            interv = setInterval(function(){                
                                time.setSeconds(time.getSeconds() + 1);
                displayTime();
            }, 1000);
 });

【讨论】:

    【解决方案3】:

    问题是你试图用另一个 Date 对象作为参数来实例化一个 Date 对象。

    var time = new Date(startValue);
    ...
    time = new Date(time + 1000);
    

    下次尝试使用console.log()进行调试。

    您还有一些其他问题,例如为什么您的计数器从 1 而不是 0 开始?

    这是一个可以解决所有问题的快速工作示例:https://jsfiddle.net/r6k06w40/3/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多