Javascript 倒计时程序有什么问题?

Javascript 倒计时程序有什么问题?,javascript,Javascript,我试图使倒计时从15分0秒变为0分0秒,但它似乎不想在JSFIDLE中显示。另一个程序是,我的日期变量实际上没有设置为15分零秒。我怎样才能解决这个问题 var-date=新日期(); var sec=date.getSeconds(); var min=date.getMinutes(); var handler=function(){ 第二节; 如果(秒=60){ 秒=0; 闵--; 否则如果(秒

我试图使倒计时从15分0秒变为0分0秒,但它似乎不想在JSFIDLE中显示。另一个程序是,我的日期变量实际上没有设置为15分零秒。我怎样才能解决这个问题

var-date=新日期();
var sec=date.getSeconds();
var min=date.getMinutes();
var handler=function(){
第二节;
如果(秒=60){
秒=0;
闵--;
否则如果(秒<0){
日期。设置秒(0);
}否则如果(最小值<0){
日期。设置分钟数(0);
}
}
document.getElementById(“时间”).innerHTML=(分钟<10?“0”+分钟:分钟)+“:”+(秒<10?“0”+秒:秒);
};
handler();
设置间隔(处理器,1000)
优惠结束于:

首先,在
之前没有右括号,所以它甚至不会按原样运行

此外,我不知道为什么需要摆弄日期对象作为倒计时计时器,因为当前的日期/时间是不相关的

您应该从以下内容开始:

function pad2(s) {
    return ("00" + s).slice(-2);
}

var handler = function() {
    if (--sec < 0) {
        sec = 59;
        if (--min < 0) {
            min = 0;
            sec = 0;
        }
    }
    document.getElementById("time").innerHTML = pad2(min) + ":" + pad2(sec);
};

var sec = 1;
var min = 15;
handler();
setInterval(handler, 1000);
功能pad2(s){
返回(“00”+s)。切片(-2);
}
var handler=function(){
如果(--秒<0){
秒=59;
如果(--min<0){
最小值=0;
秒=0;
}
}
document.getElementById(“时间”).innerHTML=pad2(分钟)+“:”+pad2(秒);
};
var-sec=1;
var最小值=15;
handler();
设置间隔(处理器,1000);
您会注意到,我已经重构了填充代码,因为您是否应该违反DRY原则是“值得怀疑的”。您当然不应该在一行中违反它两次:-)


在测试方面,您可以创建一个简单的静态页面,该页面运行计时器,如下所示

我还将开始时间缩短到10分钟多一点,并将时间加快了10倍,这样您就不必等待整整一刻钟来测试整个过程(应该需要一分钟以上的时间来完成)


优惠结束于:
功能pad2(s){
返回(“00”+s)。切片(-2);
}
var handler=function(){
如果(--秒<0){
秒=59;
如果(--min<0){
最小值=秒=0;
}
}
document.getElementById(“时间”).innerHTML=pad2(分钟)+“:”+pad2(秒);
};
var-sec=6;
var最小值=10;
handler();
setInterval(处理程序,100);//10倍于正常速度,实际使用1000

首先,在
else if
之前没有右括号,您需要在
文档之前移除右括号。getElementById
1)根据您的if条件关闭卷曲括号

2) 代码未能正确加载,因为JavaScript在页面识别time DIV元素之前加载。由于您没有首先使用事件侦听器加载页面,因此我添加了。。。而且它似乎在起作用

3) 重要提示。。。计时器逻辑需要大量工作。。。你最好使用一个timediff语句,否则你只需计算秒、分钟、小时、天等就可以多写200-300行

看着这页,它的立场有这个。。。15:0-289

**更新**添加填充技术纠正了上述注释…

这里有一个解决方案。


变量日期=新日期();
var sec=date.getSeconds();
var min=date.getMinutes();
addEventListener(“DOMContentLoaded”,函数(事件){
var myTimer=setInterval(处理器,1000);
});
功能pad2(s){
返回(“00”+s)。切片(-2);
}
var handler=function(){
如果(--秒<0){
秒=59;
如果(--min<0){
最小值=0;
秒=0;
}
}
document.getElementById(“时间”).innerHTML=pad2(分钟)+“:”+pad2(秒);
};
优惠结束于:

我刚做了这块
秒表。你可以不用按钮就使用它,它会像你想要的那样工作

/=mi){
clearInterval(iv);doneFunc.call(c);cv='00:;00:;00';
如果(dn.innerHTML | | dn.innerHTML==“”){
dn.innerHTML=cv;
}
否则{
dn.value=cv;
} 
t、 开始=错误;
返回;
}
cv=mc.convert();ms-=ii;
如果(dn.innerHTML | | dn.innerHTML==“”){
dn.innerHTML=cv;
}
否则{
dn.value=cv;
}
},ii);
}
fi(ms);
}
this.pause=函数(){
clearInterval(iv);iv=未定义;this.paused=true;
归还这个;
}
this.resume=函数(){
fi(ms);this.paused=false;
归还这个;
}
}
var cd=新秒表(E(‘保留’),out=E(‘out’);
cd.s=30;
E('btn')。addEventListener('click',function(){
如果(!cd.start){
out.innerHTML='';
cd.begin(函数(){
out.innerHTML='倒计时完成';
});
}
否则{
cd.pause?cd.resume():cd.pause();
}
});
});
//]]>
/*external.css*/
html,正文{
填充:0;边距:0;
}
梅因先生{
宽度:980px;边距:0自动;
}

秒表
00:00:30

Tip:如果它不在JSFIDLE中运行,它就不可能在任何地方运行。函数中的if语句结构不正确,您需要修复它,否则它将破坏整个脚本。虽然这可能是一个正确的注释,而且很有帮助,因此“答案”仅用于原始帖子的完整解决方案。。。。此外,还有一些帖子是不需要回复的(比如,当它是一个简单的印刷错误时)——谢谢你的贡献!请扩展您的答案或勾选o
<html>
    <head>

        <script type="text/javascript">
            var date = new Date();
            var sec = date.getSeconds();
            var min = date.getMinutes();
            document.addEventListener("DOMContentLoaded", function(event) { 
                var myTimer = setInterval(handler, 1000);
            });

            function pad2(s) {
                return ("00" + s).slice(-2);
            }

            var handler = function() {
                if (--sec < 0) {
                    sec = 59;
                    if (--min < 0) {
                        min = 0;
                        sec = 0;
                    }
                }
                document.getElementById("time").innerHTML = pad2(min) + ":" + pad2(sec);
            };
        </script>
    </head>

    <body>
        <b>Offer Ends In:</b>
        <h1 id="time" style="text-align: center"></h1>
    </body>
</html>