日期对象未比较正确

Date-obj not compared right

本文关键字:比较 对象 日期      更新时间:2023-09-26

我在使用这个简单的代码时遇到了问题。我想知道为什么没有删除第二个元素(两个)?日期:2014, 11, 06应该已经过期了,对吧?

JSFiddle


.HTML:

<div id="dates">
    <p class="2014, 12, 05">One</p>
    <p class="2014, 11, 06">Two</p>
    <p class="2015, 01, 20">Three</p>
</div>

Javascript:

    var current = new Date(),
        elements = document.getElementById("dates").children,
        deleteDate = 0;
    for (var i = 0; i < elements.length; i++) {
        deleteDate = new Date(elements[i].className);
        if (current > deleteDate) {
            elements[i].parentNode.removeChild(elements[i]);
        }
    }

我真的不知道为什么会发生这种情况...

  1. 在您的循环中,我们从i = 0开始。
  2. 索引 0One元素。
  3. 删除One
  4. 下一个循环迭代,i = 1 .
  5. 索引 1 现在是Three元素,因为在最后一个循环中删除了第一个元素。

因此,Two被完全跳过。

您应该保存要删除的元素,然后一次将它们全部删除。

这是

你要找的吗? 演示:http://jsfiddle.net/68tL6uz7/2/

var currentDate = new Date();
var dateList = document.getElementsByTagName("p");
for (var i =0; i < dateList.length; i++) {
    console.log(dateList[i]);
    var text = dateList[i].innerHTML;
    console.log(text);
    var newDate = new Date(text);
    console.log(newDate);
    if (currentDate > newDate) {
        dateList[i].style.display = 'none';
    }
}
<div id="dates">
    <p class="">2014, 12, 05</p>
    <p class="">2014, 11, 06</p>
    <p class="">2015, 01, 20</p>
</div>