我正在为我的表使用jquery / tablesorter,其列是文本和数字的混合。一切都很好。接下来,我添加了一个新的日期列,现在标题已完全禁用。即,我无法对任何列进行排序。我启动了firebug,当页面加载时我看到一个错误:
s.replace不是以下代码中的函数
this.formatFloat = function (s) {
var i = parseFloat(s.replace(/,/g, ''));
return (isNaN(i)) ? 0 : i;
};
当我输入断点并查看s的值时,对于日期列,它是一些数字,如736283783,而对于所有其他数字,它是一个字符串,如“1”或“123”。我尝试了不同的日期格式,如“dd / mm / yy”,“dd-mm-yyyy”,“2011年1月1日”等,没有运气。
更新:上面的代码在jquery.tablesorter.js中。这不是我写的代码。
我的表格来源如下:
<table id="historyTable" class="fullwidth sortable">
<thead>
<tr>
<th>Status</th>
<th>Start</th>
<th>End</th>
<th>Type</th>
<th>Keyword</th>
</tr>
</thead>
<tr>
<td>Active</td>
<td>2008-09-18</td>
<td></td>
<td>Info</td>
<td>TF</td>
</tr>
<tr>
<td>Inactive</td>
<td>2010-09-18</td>
<td></td>
<td>Info</td>
<td>ZX</td>
</tr>
</table>
我的JS代码只是调用这样的tablesorter: jQuery的( “table.sortable”)的tablesorter(); 我做错了什么?
答案 0 :(得分:2)
试试这个:
this.formatFloat = function (s) {
// add .toString() to convert it to a string
var i = parseFloat(s.toString().replace(/,/g, ''));
return (isNaN(i)) ? 0 : i;
};
也许它不起作用,因为s
不是string?
更新; 所以像这样:
this.formatFloat = function (s) {
// add .toString() to convert it to a string<br/>
var strDate = new Date(s.toString().replace(/,/g, ''));
var i = parseFloat(strDate);
return (isNaN(i)) ? 0 : i;
};