jQuery每周倒数计时器

时间:2017-06-12 10:22:56

标签: jquery

我正在尝试创建一个每周倒数计时器。

我有一个弹出窗口,设置为仅在周五,周六和周日出现。

我需要一个jQuery计时器,它从星期五00:00开始,到星期日24:00结束,每周都会工作。

我在这里找到了这个jsfiddle - https://jsfiddle.net/cwqxzm6o/151/

function plural(s, i) {
  return i + ' ' + (i > 1 ? s + 's' : s);
}

function sundayDelta(offset) {
  // offset is in hours, so convert to miliseconds
  offset = offset ? offset * 60 * 60 * 1000 : 0;
  var now = new Date(new Date().getTime() + offset);
  var days = 7 - now.getDay() || 7;
  var hours = 24 - now.getHours();
  var minutes =  now.getMinutes() - 00 ;
  var seconds =  now.getSeconds()- 00;
    if (hours < 0){
      days=days-1;
    }
    var positiveHours= -hours>0 ? 24-(-hours) : hours;
  return [plural('day', days),
          plural('hour', positiveHours),
          plural('minute', minutes), 
          plural('second', seconds)].join(' ');
}

// Save reference to the DIV
$refresh = $('#refresh');

$refresh.text('This page will refresh in ' + sundayDelta());

// Update DIV contents every second
setInterval(function() {
  $refresh.text('This page will refresh in ' + sundayDelta());
}, 1000);

然而,当我将我的一天改为星期日时,倒计时会进入“7天24小时等”,应该说“0天,24小时等”

有人可以租赁我的痛苦并给我一个更新的小提琴吗?

2 个答案:

答案 0 :(得分:0)

如果您想在白天等于7且小时等于24时刷新页面,则必须使用 location.reload()进行刷新。 只需将我们的代码更改为

即可
       function plural(s, i) {
        return i + ' ' + (i > 1 ? s + 's' : s);
    }
    function reloadPage(){
        location.reload();
    }

    function sundayDelta(offset) {
        // offset is in hours, so convert to miliseconds
        offset = offset ? offset * 60 * 60 * 1000 : 0;
        var now = new Date(new Date().getTime() + offset);
        var days = 7 - now.getDay() || 7;
        var hours = 24 - now.getHours();
        var minutes = 60 - now.getMinutes();
        var seconds = 60 - now.getSeconds();
        if(now.getDay() == 7 && now.getHours() == 24){
            reloadPage();
        }
        return [plural('day', days),
            plural('hour', hours),
            plural('minute', minutes),
            plural('second', seconds)].join(' ');
    }

    // Save reference to the DIV
    $refresh = $('#refresh');

    $refresh.text('This page will refresh in ' + sundayDelta());

    // Update DIV contents every second
    setInterval(function() {
        $refresh.text('This page will refresh in ' + sundayDelta());
    }, 1000);

你可以在这里查看https://jsfiddle.net/Bibhudatta_sahoo/cwqxzm6o/153/ 它将重新加载您的页面并重置您的倒计时。

答案 1 :(得分:0)

我很确定这是因为days在星期日返回零,所以你需要坚持测试if awk -F, '{ for(i=1;i<=NF;i+=2) if($i!="") system("touch FILE_"$i"_"$(i+1)".txt") }' input 是否等于零。目前你的数学运算是7 - 0所以返回7。

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/getDay

Updated fiddle