Html 设置超时不';我不在这个时钟项目中工作

Html 设置超时不';我不在这个时钟项目中工作,html,Html,由于某些原因,超时不起作用,时钟数与最初启动时保持不变。我尝试了setInterval(),但也没有成功 代码如下,或在此处查看: //变量 var hourN=document.getElementById(“hoursD”); var minuteN=document.getElementById(“minutesD”); var secondN=document.getElementById(“secondsD”); 变量小时、分钟、秒=0; 变量日期=新日期(); //功能 函数刷新()

由于某些原因,超时不起作用,时钟数与最初启动时保持不变。我尝试了
setInterval()
,但也没有成功

代码如下,或在此处查看:

//变量
var hourN=document.getElementById(“hoursD”);
var minuteN=document.getElementById(“minutesD”);
var secondN=document.getElementById(“secondsD”);
变量小时、分钟、秒=0;
变量日期=新日期();
//功能
函数刷新(){
hour=date.getHours();
分钟=日期。getMinutes();
秒=date.getSeconds();
小时>12?小时=小时-12:小时;
hourN.innerText=小时;
minuteN.innerText=分钟;
second n.innerText=second;
var t=setTimeout(函数(){refresh();},1000);
}
刷新();

:  : 

日期
仍保留初始值。 你应该在刷新中更新它

// Variables
var hourN = document.getElementById("hoursD");
var minuteN = document.getElementById("minutesD");
var secondN = document.getElementById("secondsD");
var hour, minute, second = 0;
var date = new Date();

// Functions
function refresh() {
  
  date = new Date();
  hour = date.getHours();
  minute = date.getMinutes();
  second = date.getSeconds();
  hour > 12 ? hour = hour - 12 : hour;
  
  hourN.innerText = hour;
  minuteN.innerText = minute;
  secondN.innerText = second;
  
  var t = setTimeout(function(){ refresh(); }, 1000);
  
}

refresh();

顺便说一下
setInterval
更适合此功能。

您必须在此处使用
setTimeout
。您的css也会从视口中删除h1。您还必须更新
刷新
函数中的
日期

// Variables

var hourN = document.getElementById("hoursD");

var minuteN = document.getElementById("minutesD");

var secondN = document.getElementById("secondsD");

var hour, minute, second = 0;


// Functions

function refresh() {

  var date = new Date();

  hour = date.getHours();

  minute = date.getMinutes();

  second = date.getSeconds();

  hour > 12 ? hour = hour - 12 : hour;

  hourN.innerText = hour;

  minuteN.innerText = minute;

  secondN.innerText = second;


}
setInterval(function(){ refresh(); }, 1000);

date
变量移动到
refresh()
函数中,使其每秒获取一次当前日期。否则它只会返回用户第一次加载脚本时的日期

另外,我会将计时器移到
refresh()
函数之外,并使用
setInterval
调用它

以下是更新的代码:

var hourN = document.getElementById("hoursD");
var minuteN = document.getElementById("minutesD");
var secondN = document.getElementById("secondsD");
var hour, minute, second = 0;


// Functions
function refresh() {
  var date = new Date();
  hour = date.getHours();
  minute = date.getMinutes();
  second = date.getSeconds();
  hour > 12 ? hour = hour - 12 : hour;

  hourN.innerText = hour;
  minuteN.innerText = minute;
  secondN.innerText = second;
}

refresh();
setInterval(function(){ refresh(); }, 1000)

工作!谢谢@欢迎光临:)编码快乐!如果答案或其他答案解决了您的问题,您可以接受它,以便其他人能够在遇到相同情况时找到解决方案。:)另请参见如何接受答案:meta.stackexchange.com/q/5234/785217
var hourN = document.getElementById("hoursD");
var minuteN = document.getElementById("minutesD");
var secondN = document.getElementById("secondsD");
var hour, minute, second = 0;


// Functions
function refresh() {
  var date = new Date();
  hour = date.getHours();
  minute = date.getMinutes();
  second = date.getSeconds();
  hour > 12 ? hour = hour - 12 : hour;

  hourN.innerText = hour;
  minuteN.innerText = minute;
  secondN.innerText = second;
}

refresh();
setInterval(function(){ refresh(); }, 1000)