我的没有日期的JS时钟方法不起作用

时间:2019-12-03 21:32:27

标签: javascript

代码在下面。我试图用这种方法做一个时钟而不使用“日期”。 基本上,我认为逻辑是正确的,但语法上可能有错误。 输出仅为1.,没有任何运动。我希望输出为-0:0:0 感谢您的帮助。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>on submit</title>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>

</head>

<body>
    <div id="time"></div>
    <script src="script.js"></script>
</body>

</html>
var myVar = setInterval(myTimer, 1000);

function myTimer() {
    var sec = 0;
    var min = 0;
    var hr = 0;
    sec++;
    if(sec==60) {
        min++;
        sec=0;
    }

    if(min==60)
    {
        min = 0;
        hr++;
    }
    return(hr+":"+min+":"+sec);
}

document.getElementById("time").innerHTML = myVar;

1 个答案:

答案 0 :(得分:2)

如果您将对setInterval的调用结果分配给变量- myVar (在您的情况下),则会收到一个整数,该整数是该特定时间间隔的唯一ID,而不是您期望的实际时间由 myTimer 函数返回。

因此,与其从 myTimer 函数返回结果,不如在其中设置时间元素的innerHTML。

var interval = setInterval(myTimer, 1000);

function myTimer() {
    var sec = 0;
    var min = 0;
    var hr = 0;
    sec++;
    if(sec==60) {
        min++;
        sec=0;
    }

    if(min==60)
    {
        min = 0;
        hr++;
    }
    document.getElementById("time").innerHTML=hr+":"+min+":"+sec;
}

请注意:由于每次调用都会在myTimer中将变量 sec 重置为 0 ,因此您的时间将始终为0。因此,将sec,min和hr的定义放在函数之外。

这里是一个示例-只需点击“运行代码段”:

var interval = setInterval(myTimer, 1000);
var sec = 0;
var min = 0;
var hr = 0;

function myTimer() {
  sec++;
  if (sec == 60) {
    min++;
    sec = 0;
  }

  if (min == 60) {
    min = 0;
    hr++;
  }
  document.getElementById("time").innerHTML = hr + ":" + min + ":" + sec;
}
<div id="time"></div>