我遇到这个简单代码的问题。我想知道为什么没有删除第二个元素(Two)?日期:2014, 11, 06
应该已经过期了,对吧?
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]);
}
}
我真的不知道为什么会这样......
答案 0 :(得分:1)
i = 0
开始。0
是One
元素。One
已删除i = 1
。1
现在是Three
元素,因为在最后一个循环中删除了第一个元素。因此完全跳过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>