Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用setTimeout()时出现javascript倒计时问题_Javascript_Html - Fatal编程技术网

使用setTimeout()时出现javascript倒计时问题

使用setTimeout()时出现javascript倒计时问题,javascript,html,Javascript,Html,倒计时计时器不加载-仅在页面刷新后加载 我已经在codepen.io等上测试了代码,但是当托管在一个站点上时,倒计时不会出现,只有在刷新后才会出现 当我使用setInterval()时,它工作得很好,但是我只想更新一次倒计时,因为它是天倒计时,因此使用setTimeout() //设置我们倒计时的日期 var countDownDate=新日期(“2018年9月5日15:37:25”).getTime(); //每1秒更新一次倒计时 var x=setTimeout(函数(){ //约会 va

倒计时计时器不加载-仅在页面刷新后加载

我已经在codepen.io等上测试了代码,但是当托管在一个站点上时,倒计时不会出现,只有在刷新后才会出现

当我使用
setInterval()
时,它工作得很好,但是我只想更新一次倒计时,因为它是天倒计时,因此使用
setTimeout()

//设置我们倒计时的日期
var countDownDate=新日期(“2018年9月5日15:37:25”).getTime();
//每1秒更新一次倒计时
var x=setTimeout(函数(){
//约会
var now=new Date().getTime();
//找出现在和倒计时日期之间的距离
var距离=倒计时日期-现在;
//天、小时、分钟和秒的时间计算
变量天数=数学楼层(距离/(1000*60*60*24));
//在id=“demo”的元素中输出结果
document.getElementById(“demo”).innerHTML=days+“剩余天数”;
//如果倒计时结束,写一些文字
如果(距离<0){
清除超时(x);
document.getElementById(“demo”).innerHTML=“过期”;
}

}, 300);
您可以创建一个
数据属性,即:
updateCountdown
。这将是只更新一次倒计时的标志

//设置我们倒计时的日期
var countDownDate=新日期(“2018年9月5日15:37:25”).getTime();
//每1秒更新一次倒计时
var x=setInterval(函数(){
//约会
var now=new Date().getTime();
//找出现在和倒计时日期之间的距离
var距离=倒计时日期-现在;
//天、小时、分钟和秒的时间计算
变量天数=数学楼层(距离/(1000*60*60*24));
var demo=document.getElementById(“demo”);
如果(!demo.dataset.updateCountdown){
log('更新倒计时');
demo.dataset.updateCountdown=false;
//在id=“demo”的元素中输出结果
demo.innerHTML=days+“剩余天数”;
}
console.log(x)
//如果倒计时结束,写一些文字
如果(距离<0){
净间隔(x);
document.getElementById(“demo”).innerHTML=“过期”;
}
}, 2000);

setTimeout在您没有每1秒更新一次倒计时时触发-该注释不正确吗?延迟为300毫秒,由于您使用的是
setTimeout()
,因此您甚至没有每隔300毫秒检查一次。您只需在加载后300毫秒后执行一次代码。我不认为在这种情况下使用
setTimeout()
有什么意义-你能解释一下为什么需要300毫秒的延迟吗?评论不正确,apologies@JaromandaX是的,这是正确的,但是,我不知道为什么当用户自动访问页面时它不运行?举例说明:用户进入A页,没有看到倒计时,点击刷新,出现倒计时。不知道为什么会发生这种情况。哦,你是说用户看不到“23天”或其他什么?因为我迪多普说他只想调用一次,所以他没有使用
setInterval
。这个答案是正确的。OP应该通过重新阅读解释和推理来了解它是如何应用的,关于它意味着什么是真的,这可能在答案中得到扩展。