我正在使用http://www.kryogenix.org/code/browser/sorttable/
中的sorttable.js脚本我遇到的一个问题是排序不适用于混合了空单元格和日期的日期列。我的日期是“MM / DD / YYYY”格式。
从我所看到的,这种排序发生在脚本中:
sort_mmdd: function(a,b) {
mtch = a[0].match(sorttable.DATE_RE);
y = mtch[3]; d = mtch[2]; m = mtch[1];
if (m.length == 1) m = '0'+m;
if (d.length == 1) d = '0'+d;
dt1 = y+m+d;
mtch = b[0].match(sorttable.DATE_RE);
y = mtch[3]; d = mtch[2]; m = mtch[1];
if (m.length == 1) m = '0'+m;
if (d.length == 1) d = '0'+d;
dt2 = y+m+d;
if (dt1==dt2) return 0;
if (dt1<dt2) return -1;
return 1;
}
我无法弄清楚当列上发生排序时,如何使空白单元格全部到达顶部或底部。
关于如何做到这一点的任何想法?
答案 0 :(得分:1)
好吧,你可以在没有匹配的情况下返回一个数组,这个匹配在将来或远在过去......
mtch = a[0].match(sorttable.DATE_RE)|| ['nomatch','01','01','9000'];
答案 1 :(得分:0)
我想出了如何让日期与空白单元一起工作(见下文)。
在以后使用它之前最终测试了“mtch”...
sort_mmdd: function(a,b) {
mtch = a[0].match(sorttable.DATE_RE);
if ((mtch == null) || (mtch == undefined)) {
y = 0; d = 0; m = 0;
}
else {
y = mtch[3]; d = mtch[2]; m = mtch[1];
}
if (m.length == 1) m = '0'+m;
if (d.length == 1) d = '0'+d;
dt1 = y+m+d;
mtch = b[0].match(sorttable.DATE_RE);
if ((mtch == null) || (mtch == undefined)) {
y = 0; d = 0; m = 0;
}
else {
y = mtch[3]; d = mtch[2]; m = mtch[1];
}
if (m.length == 1) m = '0'+m;
if (d.length == 1) d = '0'+d;
dt2 = y+m+d;
if (dt1==dt2) return 0;
if (dt1<dt2) return -1;
return 1;
}