JQuery,特定日期定位无法按预期工作

标签 jquery html

我已经得到帮助,使这段代码达到了堆栈溢出的程度,这一点一如既往地受到赞赏,并且我有一个 95% 的工作脚本。

那一点不起作用并让我感到困惑的是,有一部分说只显示这些日期范围和这些日期的这些时间范围之间的目标 div:

// Message to appear before countdown
var countdownMessage = "Hurry ends in";

//Set time for countdown to count down till - 24 hour clock
var endHour = 20
var endMin = 59

//Set days to run from/until - 0 = sunday | 6 = saturday
var startDay = 0
var endDay = 5

//Set hours to run from/until - 0 = 12am-12:59am | 10 = 10am-10:59am | 12 = 12pm-12:59pm | 16 = 4pm-4:59pm | 23 = 11pm-11:59pm
var startTime = 6
var endTime = 21
    
    

//////////////////////////* Countdown *///////////////////////////////
$(document).ready(function(){
    function getSeconds() {
        var now = new Date();
        var time = now.getTime(); // time now in milliseconds
        var countdownEnd = new Date(now.getFullYear(), now.getMonth(), now.getDate(), (endHour),(endMin)); // countdownEnd 0000 hrs
        var ft = countdownEnd.getTime() + 86400000; // add one day
        var diff = ft - time;
        diff = parseInt(diff / 1000);
        if (diff > 86400) {
            diff = diff - 86400
        }
        startTimer(diff);
    }

    var timeInSecs;
    var ticker;

    function startTimer(secs) {
        timeInSecs = parseInt(secs);
        ticker = setInterval(tick, 1000);
        tick(); // to start counter display right away
    }

    function tick() {
        var secs = timeInSecs;
        if (secs > 0) {
            timeInSecs--;
        } else {
            clearInterval(ticker); // stop counting at zero
            //getSeconds();  // and start again if required
        }

        var hours = Math.floor(secs / 3600);
        secs %= 3600;
        var mins = Math.floor(secs / 60);
        secs %= 60;
        var result = ((hours < 10) ? "0" : "") + hours + " hours " + ((mins < 10) ? "0" : "") + mins + " minutes " + ((secs < 10) ? "0" : "") + secs + " seconds";
        document.getElementById("countdown").innerHTML = (countdownMessage) + " " + result; 
    }

    $("#countdown").hide();

    ///////////////* Display at certain time of the day *//////////////////

    //gets the current time. 
    var d = new Date();
    var day = d.getDay();

    if (day >= (startDay) && day <= (endDay)) {
        if (d.getHours() >= (startTime) && d.getHours() <= (endTime)) {
            $("#countdown").show();
        }
    }

    getSeconds();
	  
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<span id="countdown" style="font-weight: bold;">&nbsp;</span>

虽然时间范围工作正常,但日期部分表现异常,在上面的代码中,它设置为显示从星期日 (0) 到星期六 (6) ) 所以它应该始终显示,但如果您将日期范围更改为星期二 (2) 到星期六 (6) 它就不会正常工作(今天是星期二发布时间)。

谁能帮忙解释一下这是怎么回事,出了什么问题?

谢谢

最佳答案

您似乎在检查今天是开始日还是结束日,但没有检查它是否在开始日和结束日之间。因此,如果两者之间隔了一天,那么如果我正确地听到了您的投诉,那么您就不会显示倒计时。 (因此,如果当前日期实际上是值 2 等,您可能已经为值 2 工作了,等等)

if (day == (startDay) || day == (endDay)) {

也许应该是:

if (day >= (startDay) && day <= (endDay)) {

关于JQuery,特定日期定位无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41440075/

相关文章:

javascript - jQuery 动画不适用于 SAPUI5

jQuery:使用文本值选择下拉列表中的项目

HTML/CSS 移动兼容性

html - 输入复选框在刷新时取消选中

javascript - 在 Kineticjs 中添加图像的属性样式

删除一行后javascript行索引更新

javascript - 在 ASP.NET MVC 中使用 jQuery 数据表时如何更新模型数据

javascript - 使用 jQuery 从 NodeJS 服务器请求数据

javascript - D3 数据未通过 onclick 函数更新

html - 将表 div 和内联 block div 并排放置