我刚刚开始使用javascript进行编码,所以我没有得到所有的知识。
我想在HTML页面的元素中引用日期,并使用javascript警告用户日期已过去。
这是我到目前为止所做的:
var EndDate = document.getElementById("Close");
document.getElementById("AuctionDate").innerHTML =
Date.parse(EndDate.innerHTML);
var TodaysDate = Date.parse(Date());
document.getElementById("TodaysDate").innerHTML = TodaysDate;
if (EndDate < TodaysDate) {
alert("Closed");
} else {
alert("Open");
}
&#13;
<span id="Close">27 September 2017</span>
<p id="AuctionDate"></p>
<p id="TodaysDate"></p>
&#13;
我已将今天的日期转换为数字并显示它是否有效。 我似乎无法弄清楚如何正确地比较它们,因为我无法找到如何进行EndDate解析。
感谢。
答案 0 :(得分:0)
试试这个:
if (new Date('27 September 2017') < new Date('28 September 2017')) {
console.log('still open')
}
// where
// 27 September 2017 is dateToday
// 28 September 2017 is dateCloses
var today = document.getElementById("TodaysDate").innerHTML
var dateToday = new Date(today)
答案 1 :(得分:0)
正如您目前所拥有的那样,您从.innerHTML
抓取Close
,并将其直接分配到EndDate
。然后将该值(27 September 2017
)与当前时间戳(1506645355000
)进行比较。字符串会比较 lexicographically ,因此JavaScript认为27 September 2017
的字符串更大&#39;而不是整数1506645355000
。
您需要做的是将Date.parse()
移至第一行,将Date.parse()
包裹在变量赋值中,以便变量EndDate
以解析日期结束。
然后,如果需要,您可以通过将.innerHTML
的目标AuctionDate
直接设置为变量EndDate
来将其输出回页面:
var EndDate = Date.parse(document.getElementById("Close").innerHTML);
console.log("EndDate's value is: " + EndDate) // returns a parsed date
document.getElementById("AuctionDate").innerHTML = EndDate;
var TodaysDate = Date.parse(Date());
document.getElementById("TodaysDate").innerHTML = TodaysDate;
if (EndDate < TodaysDate) {
alert("Closed");
} else {
alert("Open");
}
&#13;
<span id="Close">27 September 2017</span>
<p id="AuctionDate"></p>
<p id="TodaysDate"></p>
&#13;
希望这有帮助! :)
答案 2 :(得分:0)
您的原始var EndDate = document.getElementById("Close");
只是在您输入日期的DOM 元素。
因此,您之后的比较if (EndDate < TodaysDate)
正在比较 DOM元素 <
日期对象
您可以通过选择元素然后获取其中的文本,从Close
html元素中获取日期:
var dateString = document.getElementById('Close').innerText
由于你想处理Date对象,你可以解析它:
var EndDate = Date.parse(dateString)
此时,您可以比较两个Date对象。
另请注意,解析Date对象没有意义:
var TodaysDate = Date.parse(Date());
你可以简单地做到
var TodaysDate = new Date();
我知道他们看起来一样,但你真的想要处理Date
个对象。
附注:您通常应使用.innerText
而不是.innerHTML
举个例子 - 说不是这个
<span id="Close">27 Septermber 2017</span>
你有一个更复杂的结构:
<span id="Close"><span class="day">27</span> <span class="month">September</span> <span class="year">2017</span></span>
在这种情况下,close.innerHtml会给你整个烂摊子
<span id="Close"><span class="day">27</span> <span class="month">September</span> <span class="year">2017</span></span>
但close.innerText仅提供27 September 2017
您是否想要innerText或innerHTML取决于您实际使用的内容;知道差异并知道你想要的东西。