使用 setInterval 使时钟自动刷新
Making a clock autorefresh using setInterval
我想建立一个时钟,我唯一的问题是 setInterval 基本上不起作用。我是不是漏了什么
const timer = document.getElementById("container")
let currentTime = new Date()
let hours = currentTime.getHours()
let minutes = currentTime.getMinutes()
let seconds = currentTime.getSeconds()
function time () {
let hoursIf = hours.toString().length==1 ? "0"+hours : hours
let minutesIf = minutes.toString().length==1 ? "0"+ minutes : minutes
let secondsIf = seconds.toString().length==1 ? "0" +seconds : seconds
timer.textContent = `${hoursIf}:${minutesIf}:${secondsIf}`
}
time()
let run = setInterval(time, 1000)
它有效,相信我。问题是分配在:
let hours = currentTime.getHours()
let minutes = currentTime.getMinutes()
let seconds = currentTime.getSeconds()
您在开始时分配了一次时间,以后不检查更新值。如果你把它放在你的时间函数中,它就会正常工作。
像这样:
function time () {
let currentTime = new Date()
let hours = currentTime.getHours()
let minutes = currentTime.getMinutes()
let seconds = currentTime.getSeconds()
let hoursIf = hours.toString().length==1 ? "0"+hours : hours
let minutesIf = minutes.toString().length==1 ? "0"+ minutes : minutes
let secondsIf = seconds.toString().length==1 ? "0" +seconds : seconds
timer.textContent = `${hoursIf}:${minutesIf}:${secondsIf}`
}
time()
let run = setInterval(time, 1000)
您没有更新变量。您将它们作为全局变量,但从不更新它们的值,因此方法“时间”一直使用相同的值。
let currentTime = new Date()
let hours = currentTime.getHours()
let minutes = currentTime.getMinutes()
let seconds = currentTime.getSeconds()
这些应该在您的方法中设置或至少更新为当前值。否则你只是 re-displaying 每次 time
执行的同一时间。
如果你在你的方法中加入“Console.log”,我敢打赌你会看到它 运行,它只是没有像你期望的那样更新时间。
我想建立一个时钟,我唯一的问题是 setInterval 基本上不起作用。我是不是漏了什么
const timer = document.getElementById("container")
let currentTime = new Date()
let hours = currentTime.getHours()
let minutes = currentTime.getMinutes()
let seconds = currentTime.getSeconds()
function time () {
let hoursIf = hours.toString().length==1 ? "0"+hours : hours
let minutesIf = minutes.toString().length==1 ? "0"+ minutes : minutes
let secondsIf = seconds.toString().length==1 ? "0" +seconds : seconds
timer.textContent = `${hoursIf}:${minutesIf}:${secondsIf}`
}
time()
let run = setInterval(time, 1000)
它有效,相信我。问题是分配在:
let hours = currentTime.getHours()
let minutes = currentTime.getMinutes()
let seconds = currentTime.getSeconds()
您在开始时分配了一次时间,以后不检查更新值。如果你把它放在你的时间函数中,它就会正常工作。 像这样:
function time () {
let currentTime = new Date()
let hours = currentTime.getHours()
let minutes = currentTime.getMinutes()
let seconds = currentTime.getSeconds()
let hoursIf = hours.toString().length==1 ? "0"+hours : hours
let minutesIf = minutes.toString().length==1 ? "0"+ minutes : minutes
let secondsIf = seconds.toString().length==1 ? "0" +seconds : seconds
timer.textContent = `${hoursIf}:${minutesIf}:${secondsIf}`
}
time()
let run = setInterval(time, 1000)
您没有更新变量。您将它们作为全局变量,但从不更新它们的值,因此方法“时间”一直使用相同的值。
let currentTime = new Date()
let hours = currentTime.getHours()
let minutes = currentTime.getMinutes()
let seconds = currentTime.getSeconds()
这些应该在您的方法中设置或至少更新为当前值。否则你只是 re-displaying 每次 time
执行的同一时间。
如果你在你的方法中加入“Console.log”,我敢打赌你会看到它 运行,它只是没有像你期望的那样更新时间。