基本上,我试图让我的代码每秒更新一次元素的值。问题是我当前的代码仅在第一次更新。控制台也没有错误。
奇怪的是console.log()之后一直运行,但是元素没有更新,时间变量也没有
var today = new Date();
var time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
var date = today.getFullYear() + '/' + String(today.getMonth() + 1).padStart(2, '0') + '/' + String(today.getDate()).padStart(2, '0');
setInterval(function() {
time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
var elTime = document.getElementById("time");
elTime.textContent = time;
console.log(time);
}, 1000);
答案 0 :(得分:1)
您需要为间隔的每个刻度重新设置“今天”。更改为此:
setInterval(function(){
var heute= new Date();
time = heute.getHours() + ":" + heute.getMinutes() + ":" + heute.getSeconds();
var elTime = document.getElementById("time");
elTime.textContent = time;
console.log(time);
}, 1000);
答案 1 :(得分:1)
一个简单有效的setInterval
程序如下所示。
setInterval(() => {
var elTime = document.getElementById("time");
elTime.textContent = parseInt(elTime.textContent) + 1;
}, 1000);
<div id="time">0</div>
请注意,所有需要执行的代码都在setInterval
函数的范围内。要解决您的问题,请在函数范围内添加所有代码,以使其每次都像这样运行。
setInterval(function() {
//Variables
var today = new Date();
var time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
var date = today.getFullYear() + '/' + String(today.getMonth() + 1).padStart(2, '0') + '/' + String(today.getDate()).padStart(2, '0');
time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
var elTime = document.getElementById("time");
elTime.textContent = time;
console.log(time);
}, 1000);
<div id="time"></div>
答案 2 :(得分:1)
尝试这种方式,每次执行setInterval
时也需要更新变量。
(function() {
setInterval(function() {
var today = new Date();
var time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
var date = today.getFullYear() + '/' + String(today.getMonth() + 1).padStart(2, '0') + '/' + String(today.getDate()).padStart(2, '0');
time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
var elTime = document.getElementById("time");
elTime.textContent = time;
console.log(time);
}, 1000);
})()
<div id="time"></div>
答案 3 :(得分:0)
SetInterval
是一个函数调用系统。
有关信息:SetInterval
不能用作精确的时钟,每个苹果之间的durrée表示口译员,根据其必须在其他地方执行的任务,它可以返回超出请求的时间段,该时间段通常是这种情况。对于1000ms的请求,它可以在1004ms,1020ms甚至更长的时间内实现呼叫。
更易于使用的本机JS时间格式=> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString
const elTime = document.getElementById("time")
ShowTime() // first attempt
setInterval(ShowTime, 1000) // next ones
function ShowTime()
{
let t_Now = new Date()
elTime.textContent = t_Now.toLocaleTimeString('default', { hour12:false } )
}
<p id="time"></p>