日期比较脚本适用于除Edge之外的所有浏览器

时间:2017-08-22 05:31:18

标签: javascript jquery

var myDate = new Date()
myDate.setDate(myDate.getDate() - 1);
$(".container").children("div").each(function(){
var thisdate=$(this).attr("data-date");
var dateOfGame = new Date(thisdate); 
if(thisdate!="" && dateOfGame <= myDate){
$(this).remove();}});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
 <div data-date="8/2/17"></div>
 <div data-date="8/29/17"></div>
 </div>

该脚本在事件发生后一天从我的页面中删除过时的元素。但是,在Edge上,它就好像每个元素都已过时,并将它们全部从DOM中删除。

1 个答案:

答案 0 :(得分:0)

我检查了您的代码,问题是,当您使用chrome时, 8/29/17 被解释为 8/29/2017 并且在Edge中,它被解释为 8/29/1917

验证

运行以下代码并在边缘和chrome中检查控制台。

 var myDate = new Date()
myDate.setDate(myDate.getDate() - 1);
$(".container").children("div").each(function(){
var thisdate=$(this).attr("data-date");
var dateOfGame = new Date(thisdate); 
console.log(myDate, dateOfGame);
if(thisdate!="" && dateOfGame <= myDate){
$(this).remove();}});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
 <div data-date="8/2/17"></div>
 <div data-date="8/29/17"></div>
 </div>
 

要解决此问题

您必须使用 2017 才能获得优势支持

var myDate = new Date()
myDate.setDate(myDate.getDate() - 1);
$(".container").children("div").each(function(){
var thisdate=$(this).attr("data-date");
var dateOfGame = new Date(thisdate); 
console.log(dateOfGame <= myDate , myDate, dateOfGame);
if(thisdate!="" && dateOfGame <= myDate){
$(this).remove();}});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
 <div data-date="8/2/2017"></div>
 <div data-date="8/29/2017"></div>
 </div>