SetInterval只运行一次

时间:2019-05-04 10:58:38

标签: javascript setinterval

我试图用我在网站上创建的时钟显示时间,所以我使用setInterval每秒显示时间。 但是它只运行一次,我不知道该怎么办。 但是,Firefox在我的代码中没有发现任何错误。

#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export]]
bool dateProb(std::vector<Date> dateVec, Date date) {
    return (dateVec[0] < date);
}

/*** R
x <- as.Date("2019/05/04")
y <- as.Date("2019/05/03")
dateProb(x, y)
dateProb(y, x)
*/

> x <- as.Date("2019/05/04")

> y <- as.Date("2019/05/03")

> dateProb(x, y)
[1] FALSE

> dateProb(y, x)
[1] TRUE

我希望以后可以在代码中清除此间隔。

2 个答案:

答案 0 :(得分:0)

我的猜测是,window.onload在创建间隔后会触发 ,因此在间隔处理程序中,display_{hours,minutes,seconds}是未定义的,并且会导致代码崩溃。

尝试从onload处理程序中开始间隔:

window.onload = function() {
    display_hours = document.getElementById("hour");
    display_minutes = document.getElementById("minute");
    display_seconds = document.getElementById("second");
    var go_time = setInterval(time_on, 1000);
};

编辑:此外,请确保每次实际更新date

function time_on() {
  date = new Date();
  ...
}

答案 1 :(得分:0)

这是一个简单的时钟:

function startTime() {
var today = new Date();
var h = today.getHours();
var m = today.getMinutes();
var s = today.getSeconds();
m = checkTime(m);
s = checkTime(s);
document.getElementById('txt').innerHTML =
h + ":" + m + ":" + s;
var t = setTimeout(startTime, 500);
}
function checkTime(i) {
if (i < 10) {i = "0" + i};  // add zero in front of numbers < 10
return i;
}

并放在正文中:

<body onload="startTime()">