在javascript中等于日期值时出现问题

时间:2019-04-25 13:35:32

标签: javascript

我正在运行setInterval计时器中包装的一些代码;除其他外,在一定时间之前,它应该显示“模拟开始于xxx时间”消息。

startdate是模拟开始的时间,我定义了其他变量,如下所示:

$(window).on("load", onPageLoad);

function onPageLoad() {
    initListeners();
    restoreSavedValues();
}

function initListeners() {

    $("#membership").on("change", function() {
        var value = $(this).val();
        localStorage.setItem("membership", value);
    });


}

function restoreSavedValues() {

    $("#membership").on("change", function() {
        var value = $(this).val();
        localStorage.setItem("membership", value);
    });

    // Restore other values that were previously stored here ...

}

因此,如果我将startdate设置为(例如)10,并且月份是4月,则应该在1pm和2nd的晚上9点之前收到一条消息。但是,当我运行上面的代码时,它将跳过大括号中的部分。我已经设置了计算机时钟以确保代码可以正常工作,例如,将其设置为4月1日和4月2日,从中午到晚上9点的任何时间,但是我什么也没得到。

在firefox dubugger中,当我在其中插入一个断点并查看“ if ...”语句中的“ da”值时,它说的是“ false”,而不是数值。用“ ==”代替“ ===”没什么区别,因为我认为它与返回的日期和date命令的true / false返回混淆了。我看不出有什么问题。

在代码的其他部分,我进行了其他检查以确保代码按时执行,例如(da == startdate + 5)且它们运行良好,仅是这一部分导致了问题

1 个答案:

答案 0 :(得分:0)

它对我来说很好,我尝试startdate = 34进行今天的检查,然后调整计算机时钟,仍然可以。您是否忘记了HTML代码中的任何<div id="infoWindow"></div>

 var d = new Date();
 var da = d.getDate();
 var h = d.getHours();
 var mo = d.getMonth();
 
var startdate = 34;

if( (mo !=3) || ( mo==3 && da===(startdate-9)) || ( mo==3 && da==(startdate-8) && h<21) ) {
  document.getElementById("infoWindow").innerHTML = "<p style=\"color:red;\">Placeholder 		text</p>";
}
<div id="infoWindow"></div>