我正在运行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)且它们运行良好,仅是这一部分导致了问题
答案 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>