Javascript 更新对象分配的日期变量

Javascript 更新对象分配的日期变量,javascript,html,global,Javascript,Html,Global,这是一个计数计时器,从页面加载时开始计时,我要创建一个名为resetcountupDate()的函数,通过使变量countupDate等于当前日期(使用date()或其他方法)将其设置回零,我希望第四行到最后一行的按钮执行该函数,我下面的代码在重置计时器方面不起作用 @导入url('https://fonts.googleapis.com/css2?family=Roboto+板:wght@100&显示=交换'; p{ 字体系列:“Roboto Slab”,衬线; 文本对齐:居中; 字体大小

这是一个计数计时器,从页面加载时开始计时,我要创建一个名为resetcountupDate()的函数,通过使变量countupDate等于当前日期(使用date()或其他方法)将其设置回零,我希望第四行到最后一行的按钮执行该函数,我下面的代码在重置计时器方面不起作用


@导入url('https://fonts.googleapis.com/css2?family=Roboto+板:wght@100&显示=交换';
p{
字体系列:“Roboto Slab”,衬线;
文本对齐:居中;
字体大小:60px;
边际上限:0px;
}

//设定我们开始计算的日期 var countupDate=新日期(); 函数resetcountupDate(){ var计数更新; countupDate=Date(); } //每1秒更新一次计数 var x=setInterval(函数(){ //获取今天的日期和时间 var now=new Date().getTime(); //找出从现在到盘点日期之间的距离 var距离=现在-计数更新; //天、小时、分钟和秒的时间计算 变量天数=数学楼层(距离/(1000*60*60*24)); 可变小时数=数学楼层((距离%(1000*60*60*24))/(1000*60*60)); var分钟=数学楼层((距离%(1000*60*60))/(1000*60)); var秒=数学楼层((距离%(1000*60))/1000); //在id=“demo”的元素中输出结果 document.getElementById(“demo”).innerHTML=days+d+hours+h+ 分钟+米+秒+秒; }, 1000);
主要问题是在interval中使用的
countupDate
具有全局范围,因此在
reset…
中重新定义它不会影响预期的变量

function resetcountupDate() {
  countupDate = new Date() // just this only
}
此外,我建议进行一些额外的更改,使其更像是重置。首先,我做了一个返回间隔的函数,所以当重置时,它首先停止间隔。其次,我还将display设置为一个单独的函数,同时设置
天、小时、分钟、秒
全局范围,因此在重置时,我还将所有这些变量设置为0,显示初始值,然后再次开始间隔

function resetcountupDate() {
  clearInterval(x)
  days = hours = minutes = seconds = 0
  display()
  countupDate = new Date()
  x = startInterval()
}
//设置我们开始计数的日期
var countupDate=新日期()
变量天、小时、分钟、秒
函数显示(){
document.getElementById(“demo”).innerHTML=
天+天+小时+小时+分钟+米+秒+秒
}
函数startInterval(){
返回设置间隔(函数(){
//获取今天的日期和时间
var now=new Date().getTime()
//找出从现在到盘点日期之间的距离
var distance=now-countupDate
//天、小时、分钟和秒的时间计算
天数=数学楼层(距离/(1000*60*60*24))
小时=数学楼层((距离%(1000*60*60*24))/(1000*60*60))
分钟=数学楼层((距离%(1000*60*60))/(1000*60))
秒=数学楼层((距离%(1000*60))/1000)
//在id=“demo”的元素中输出结果
显示()
}, 1000)
}
函数resetcountupDate(){
净空间隔(x)
天=小时=分钟=秒=0
显示()
countupDate=新日期()
x=startInterval()
}
//每1秒更新一次计数
var x=startInterval()
@导入url('https://fonts.googleapis.com/css2?family=Roboto+板:wght@100&显示=交换';
p{
字体系列:“Roboto Slab”,衬线;
文本对齐:居中;
字体大小:60px;
边际上限:0px;
}


这可能会帮助您:在
resetcountupDate
remove
var countupDate中只创建一个新变量,而不是重置已定义的变量。这是否回答了您的问题?