Date-obj没有比较正确

时间:2015-01-16 18:25:31

标签: javascript html

我遇到这个简单代码的问题。我想知道为什么没有删除第二个元素(Two)?日期: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]);
        }
    }

我真的不知道为什么会这样......

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

这是你要找的?演示: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>