2012-03-22 112 views
0

我使用的是在我有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

我想通了,如何讓日期一起工作空白細胞(見下文)。

最終測試 「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; 
} 
1

嗯,你可以在沒有匹配要麼是遙遠的將來或在遙遠的過去返回數組...

mtch = a[0].match(sorttable.DATE_RE)|| ['nomatch','01','01','9000']; 
+0

+1 - 此感謝。這是正確的想法(也是有幫助的),但並不完全正確。我認爲也許「a [0] .match ...」正在返回未定義......無論哪種方式,我想出了一個方法來做到這一點,並會在一會兒發佈我的答案。隨意評論一下它可能會有哪些改進。 – 2012-03-22 13:51:03

+0

剛剛檢查出你的個人資料,發現你是一個男友 - 畢竟這是一個小世界!我看到你的名字是「肯尼貝克」,這對我來說似乎很可疑......我住在布倫瑞克,還沒有去過Readfield呢...... – 2012-03-22 14:29:10

相關問題