繁体   English   中英

简单的 javascript 条件

[英]Simple javascript conditions

我有一个简单的 javascript 条件。 我是 javascript 的新手,所以我正在努力解决这个问题。 如果有人能帮我解决这个问题,那就太好了。

我想在特定时间段内显示一个 div。 在所有其他情况下,div 不应该是可见的。

 var currentdate = new Date(); var d1=new Date("2021-05-18, 02:35:00"); var d2=new Date("2021-05-18, 02:36:00"); if((currentdate>=d1)&&(currentdate<=d2)) { document.getElementById("timer").style.display = "block"; } else { document.getElementById("timer").style.display = "none"; }
 #timer{ width:100px; height:100px; background:#ff934f; }
 <div id="timer"></div>

你应该学习如何调试你的代码。 通过添加“调试;” 到您的代码中,或在控制台中添加断点(按 F12 打开)。

我将尝试打印console.log(1 < currentdate); console.log(d1 < currentdate) 其中一个应该返回true ,对吧?

 var currentdate = new Date(); var d1 = new Date("2021-05-18, 02:35:00"); var d2 = new Date("2021-05-18, 02:36:00"); console.log(d1 < currentdate); // false console.log(d1 > currentdate); // false if ((currentdate >= d1) && (currentdate <= d2)) { document.getElementById("timer").style.display = "block"; } else { document.getElementById("timer").style.display = "none"; }
 #timer { width: 100px; height: 100px; background: #ff934f; }
 <div id="timer"></div>

不,两者都返回 false。 为什么?

让我们打印d1日期变量。

 var currentdate = new Date(); var d1 = new Date("2021-05-18, 02:35:00"); var d2 = new Date("2021-05-18, 02:36:00"); console.log("d1", d1); // null if ((currentdate >= d1) && (currentdate <= d2)) { document.getElementById("timer").style.display = "block"; } else { document.getElementById("timer").style.display = "none"; }
 #timer { width: 100px; height: 100px; background: #ff934f; }
 <div id="timer"></div>

它输出null ,因此创建该日期的声明是错误的。 为了从字符串创建日期,您可以使用Date.parse() 但这也会导致 null,因为您需要从日期字符串中删除逗号: 2021-05-18 02:35:00 (日期和时间之间没有逗号)。

 var currentdate = new Date(); var d1 = Date.parse("2021-05-18 02:35:00"); var d2 = Date.parse("2021-05-18 02:36:00"); console.log("d1", d1); // 1621298100000 console.log("currentdate is newer:", currentdate > d1) // true console.log("currentdate is older:", currentdate < d1) // false if ((currentdate >= d1) && (currentdate <= d2)) { document.getElementById("timer").style.display = "block"; } else { document.getElementById("timer").style.display = "none"; }
 #timer { width: 100px; height: 100px; background: #ff934f; }
 <div id="timer"></div>

如果我们只是从 `new Date("2021-05-18, 02:35:00") 中删除逗号,会导致同样的结果吗?

 var currentdate = new Date(); var d1 = new Date("2021-05-18 02:35:00"); var d2 = new Date("2021-05-18 02:36:00"); console.log("d1", d1); // 2021-05-18T00:35:00.000Z console.log("currentdate is newer:", currentdate > d1) // true console.log("currentdate is older:", currentdate < d1) // false if ((currentdate >= d1) && (currentdate <= d2)) { document.getElementById("timer").style.display = "block"; } else { document.getElementById("timer").style.display = "none"; }
 #timer { width: 100px; height: 100px; background: #ff934f; }
 <div id="timer"></div>

也许试试这个? 这样,您将拥有 unix 时间戳的所有内容。

var currentdate = Date.now();
var d1 = new Date("2021-05-18, 02:35:00").getTime();
var d2 = new Date("2021-05-18, 02:36:00").getTime();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM