JavaScript传送计时器倒计时

JavaScript传送计时器倒计时,javascript,Javascript,我的网站上有下面的JavaScript,它显示了下订单第二天交货的剩余时间 if (document.getElementById('countdownTimer')) { pad = function(n, len) { // leading 0's var s = n.toString(); return (new Array((len - s.length + 1)).join('0')) + s; }; var timerRunn

我的网站上有下面的JavaScript,它显示了下订单第二天交货的剩余时间

if (document.getElementById('countdownTimer')) {
    pad = function(n, len) { // leading 0's
        var s = n.toString();
        return (new Array((len - s.length + 1)).join('0')) + s;
    };

    var timerRunning = setInterval(
        function countDown() {
            var now = new Date();
            if ((now.getDay() >= 1) && (now.getDay() <= 5)) { // Monday to Friday only
                var target = 15; // 15:00hrs is the cut-off point
                if (now.getHours() < target) { // don't do anything if we're past the cut-off point
                    var hrs = (target - 1) - now.getHours();
                    if (hrs < 0) hrs = 0;
                    var mins = 59 - now.getMinutes();
                    if (mins < 0) mins = 0;
                    var secs = 59 - now.getSeconds();
                    if (secs < 0) secs = 0;
                    var str = pad(hrs, 2) + ':' + pad(mins, 2) + '.<small>' + pad(secs, 2) + '</small>';
                    document.getElementById('countdownTimer').innerHTML = str;
                }
            }
        }, 1000
    );
}
if(document.getElementById('CountdowntTimer')){
pad=函数(n,len){//前导0
var s=n.toString();
返回(新数组((len-s.length+1)).join('0'))+s;
};
var timerRunning=设置间隔(
函数倒计时(){
var now=新日期();
如果((now.getDay()>=1)和&(now.getDay()),请尝试此操作

当超过目标时间时,我没有做任何事情,而是增加目标时间以指向不同的一天(主要区别是函数开头的if..else if语句)

函数倒计时(){
var now=新日期();
var target=15;//15:00hrs是截止点
如果(now.getDay()==0){//Sunday-使用明天的截止日期
目标+=24;
}如果(now.getDay()==6){//Saturday-则从现在起2天内使用截止日期
目标+=48;
}如果(now.getHours()

我把小提琴分叉:

我已经将
now.getDay()
移到变量中,现在它应该更可读了

工作日
包含周日0、周一1和周六6。 周六我们在截止时间的基础上增加了48小时, 周日我们只增加了24小时

if(document.getElementById('CountdowntTimer')){
pad=函数(n,len){//前导0
var s=n.toString();
返回(新数组((len-s.length+1)).join('0'))+s;
};
var timerRunning=设置间隔(
函数倒计时(){
var target=15;//15:00hrs是截止点
var now=新日期();
//为了方便起见,将其放入变量中
var weekday=now.getDay();
如果(工作日==0){//Sunday?加上24小时
目标+=24;
}
如果(工作日==6){//这是星期六?加上48小时
目标+=48;
}
//如果在周一到周五之间,
//检查我们是否超过了目标时间,
//如果我们是,中止。
如果((工作日>=1)和&(工作日目标){//停止时钟
返回0;
}                
}
var hrs=(target-1)-now.getHours();
如果(小时<0)小时=0;
var mins=59-now.getMinutes();
如果(分钟<0)分钟=0;
var secs=59-now.getSeconds();
如果(秒<0)秒=0;
变量str=pad(小时,2)+':'+pad(分钟,2)+'。+pad(秒,2)+';
document.getElementById('CountdowntTimer')。innerHTML=str;
}, 1000
);
}

你能把它放在一个JSFIDLE中,这样我们就可以玩它了吗?@frenchie请解释一下发生了什么变化。如果不清楚它为什么能解决这个问题,只使用代码的答案通常是不受欢迎的。@Qix:很抱歉。更新了。这个方法很有效,但在任何时区都能正确吗?例如,在伦敦还有2小时巴黎的剩余时间是1小时。我需要显示剩余时间,无论在哪个国家观看
function countDown() {
    var now = new Date();
    var target = 15; // 15:00hrs is the cut-off point
    if (now.getDay() == 0) { // Sunday - use tomorrow's cutoff
        target += 24;
    } else if (now.getDay() == 6) { // Saturday - use cutoff 2 days from now
        target += 48;
    } else if (now.getHours() < target) { // missed the cutoff point. Use tomorrow instead
        target += 24;
        if (now.getDay() == 5) { // Friday - use Monday cutoff
            target += 48;
        } 
    }
    var hrs = (target - 1) - now.getHours();
    if (hrs < 0)
        hrs = 0;
    var mins = 59 - now.getMinutes();
    if (mins < 0)
        mins = 0;
    var secs = 59 - now.getSeconds();
    if (secs < 0)
        secs = 0;
    var str = pad(hrs, 2) + ':' + pad(mins, 2) + '.<small>' + pad(secs, 2) + '</small>';
    document.getElementById('countdownTimer').innerHTML = str;
}, 1000);
if (document.getElementById('countdownTimer')) {
    pad = function(n, len) { // leading 0's
        var s = n.toString();
        return (new Array( (len - s.length + 1) ).join('0')) + s;
    };

    var timerRunning = setInterval(

        function countDown() {
            var target = 15; // 15:00hrs is the cut-off point
            var now = new Date();

            //Put this in a variable for convenience
            var weekday = now.getDay();

            if(weekday == 0){//Sunday? Add 24hrs
                target += 24;
            }

            if(weekday == 6){//It's Saturday? Add 48hrs
                target += 48;
            }

            //If between Monday and Friday, 
            //check if we're past the target hours, 
            //and if we are, abort.
            if((weekday>=1) && (weekday<=5)){
                if (now.getHours() > target) { //stop the clock
                    return 0;
                }                
            }

            var hrs = (target - 1) - now.getHours();
            if (hrs < 0) hrs = 0;
            var mins = 59 - now.getMinutes();
            if (mins < 0) mins = 0;
            var secs = 59 - now.getSeconds();
            if (secs < 0) secs = 0;

            var str = pad(hrs, 2) + ':' + pad(mins, 2) + '.<small>' + pad(secs, 2) + '</small>';
            document.getElementById('countdownTimer').innerHTML = str;

        }, 1000
    );
}