我的约会类型出了什么问题
Whats wrong with my date sort?
我试图修改排序函数,使其正确排序日期,但脚本什么也没做。
我的HTML
<div class="sort_date">Sort Date</div>
<div class="list">
<div class="dateDiv">04/05/2012, 10:25</div>
<div class="dateDiv">11/05/2012, 19:41</div>
<div class="dateDiv">09/05/2012, 07:00</div>
<div class="dateDiv">09/05/2012, 16:45</div>
</div>
</div>
我的Javascript代码:
function parseDate(input) {
var parts = input.match(/('d+)/g);
return new Date(parts[0], parts[1]-1, parts[2], parts[3], parts[4]);
}
var NewDate = $.makeArray($(".dateDiv"));
NewDate.sort(function(a, b) {
console.log( parseDate( $(a).text() ) );
return parseDate( $(a).text() ) < parseDate( $(b).text() );
});
var OldDate = $.makeArray($(".dateDiv"));
OldDate.sort(function(a, b) {
console.log( parseDate( $(a).text() ) );
return parseDate( $(a).text() ) > parseDate( $(b).text() );
});
$(function(){
var sortHighCheck = null;
$('.sort_date').click(function(){
if (sortHighCheck === 1) {
$(".dateDiv").sort(NewDate).appendTo('.list')
sortHighCheck = 0;
} else {
$(".dateDiv").sort(OldDate).appendTo('.list')
sortHighCheck = 1;
}
});
});
这是一把js小提琴。
我的错误在哪里?有人能帮忙吗?
您的脚本定义了两个div数组,每个方向一个。因此,在单击事件之后,似乎只需要将.list
的HTML替换为适当排序的内容。
function parseDate(input) {
var parts = input.match(/('d+)/g);
return new Date(parts[0], parts[1] - 1, parts[2], parts[3], parts[4]);
}
$(function() {
var NewDate = $.makeArray($(".dateDiv"));
NewDate.sort(function(a, b) {
return parseDate($(a).text()) < parseDate($(b).text());
});
var OldDate = $.makeArray($(".dateDiv"));
OldDate.sort(function(a, b) {
return parseDate($(a).text()) > parseDate($(b).text());
});
var sortHighCheck = null;
$('.sort_date').click(function() {
if (sortHighCheck == 1) {
$('.list').html(NewDate);
sortHighCheck = 0;
} else {
$('.list').html(OldDate);
sortHighCheck = 1;
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="sort_date">Sort Date</div>
<div class="list">
<div class="dateDiv">2012/04/05, 10:25</div>
<div class="dateDiv">2012/11/05, 19:41</div>
<div class="dateDiv">2012/09/05, 07:00</div>
<div class="dateDiv">2012/09/05, 16:45</div>
</div>
另外,请注意,我已经将年份移到了每个字符串的开头。为了创建准确的日期对象,解析函数需要特定格式的日期字符串,年份列在第一位:
新日期(年、月[、日[、小时[、分[、秒[、毫秒]]]]]);
查看日期@MDN
例如:
<小时>2012年5月4日=>1909年11月2日星期二
2012/04/05=>2012年4月5日星期四
编辑
的确,即使月份排在第一位,列表似乎也能正确排序。但这只是一种幻觉。parse函数将月份值视为年,这将按看起来正确的顺序排列字符串。但当日期的年份不同时,你可以看到它们实际上并没有按时间排序。月份是有序的,但年份不是。
function parseDate(input) {
var parts = input.match(/('d+)/g);
return new Date(parts[0], parts[1] - 1, parts[2], parts[3], parts[4]);
}
$(function() {
var dates = $.makeArray($(".dateDiv")),
sortHighCheck = null;
$('.sort_date').click(function() {
if (sortHighCheck == 1) {
dates.sort(function(a, b) {
return parseDate($(a).text()) < parseDate($(b).text());
});
sortHighCheck = 0;
} else {
dates.sort(function(a, b) {
return parseDate($(a).text()) > parseDate($(b).text());
});
sortHighCheck = 1;
}
$('.list').html(dates);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="sort_date">Sort Date</div>
<div class="list">
<div class="dateDiv">04/05/2012, 10:25</div>
<div class="dateDiv">11/05/2013, 19:41</div>
<div class="dateDiv">09/05/2014, 07:00</div>
<div class="dateDiv">09/05/2015, 16:45</div>
</div>
小时>
相关文章:
- 我不知道我的编码有什么问题.(JavaScript)
- 我的流星路线出了什么问题
- 此nodeValue替换代码有什么问题
- 这个正则表达式的日期/时间有什么问题
- 我的CSS/Javascript下拉菜单测试代码出了什么问题
- 这个代码出了什么问题?(Jquery)
- 下面的Reg表达式出了什么问题
- 鼠标事件,我的代码出了什么问题
- 这个javascript语法有什么问题
- 动态创建foreignGroup并将其添加到svg中有什么问题
- 此代码中动态生成选择框有什么问题
- 我的javascript有什么问题?.className
- 这个 ajax.js 代码有什么问题
- JS代码有什么问题,让我知道代码是否可以改进
- 我的 Browserify JavaScript 代码有什么问题
- 图像上传功能将++(+1)副本添加到下一次上传.出了什么问题或如何重置“选定图像”
- 使用 Javascript 动态删除行.我的代码有什么问题
- AngularJS:这个注入我的控制器有什么问题
- 这个jQuery if语句有什么问题
- JavaScript:有人能告诉我我的代码出了什么问题吗?