Javascript 为什么尝试倒计时时setInterval不起作用

Javascript 为什么尝试倒计时时setInterval不起作用,javascript,html,setinterval,repl.it,Javascript,Html,Setinterval,Repl.it,我试图用javascript创建一个计数器,我使用setInterval每毫秒更改一次计时器,但它不会更改计时器。计时器是相同的,除非我重新加载页面。 我的代码: HTML文件: 答复 ::::: 计数器已完成 我的js: year=document.getElementById(“年”) 月=document.getElementById(“月”) 天=document.getElementById(“天”) milli=document.getElementById(“milli”) 分

我试图用javascript创建一个计数器,我使用setInterval每毫秒更改一次计时器,但它不会更改计时器。计时器是相同的,除非我重新加载页面。 我的代码: HTML文件:


答复
:::::
计数器已完成
我的js:

year=document.getElementById(“年”)
月=document.getElementById(“月”)
天=document.getElementById(“天”)
milli=document.getElementById(“milli”)
分钟=document.getElementById(“分钟”)
秒=document.getElementById(“秒”)
currentDate=新日期()
snapDay=新日期(“2019年11月25日0:0:0”)
it=setInterval(函数(){
如果(currentDate.getMinutes()==snapDay.getMinutes()&¤tDate.getDate()&&snapDay.getFullYear()==currentDate.getFullYear()&¤tDate.getSeconds()==snapDay.getSeconds()&¤tDate.GetMillicles()==snapDay.GetMillicles()){
final.hidden=true
end.hidden=false
clearInterval(it)
}
theMonth=currentDate.getMonth()
如果(每月==10){
month.innerHTML=“3”
}否则,如果(每月==11){
month.innerHTML=“2”
}否则,如果(每月==12){
month.innerHTML=“1”
}
year.innerHTML=snapDay.getFullYear()-currentDate.getFullYear()
days.innerHTML=currentDate.getDate()-snapDay.getDate()
minutes.innerHTML=currentDate.getMinutes()-snapDay.getMinutes()
seconds.innerHTML=currentDate.getSeconds()-snapDay.getSeconds()
milli.innerHTML=currentDate.getMillicles()-snapDay.getMillicles()
},01)

所以在@Pointy帮助我之后,我发现错误在于我在setInterval之外声明了date(),这不是setInterval问题。

您的变量都应该用
var
声明,您可能还想在计时器函数内初始化
currentDate
,否则它将永远不会改变。@Pointy我已经创建了其他javascript程序,使用var声明变量,这些程序工作正常。:faceplam:@Pointy谢谢,这就是错误所在。问题是不使用
var
意味着你在生成全局变量,这可能会在浏览器JavaScript中引起一些非常奇怪的问题,因为全局变量是
窗口
对象的属性。说真的,我的强烈建议是习惯于使用
var
(或
let
const
,视情况而定)进行声明。