【发布时间】:2021-09-03 00:18:57
【问题描述】:
我在按升序和降序对表格进行排序时遇到问题。需要你的帮助!!!我的数字从 0,0000000052€ 到 31.939€。这是我的 tablesort.js,我该如何解决这个问题。我的目标是在单击标题时按升序和降序对表格进行排序。对于所有的帮助,我非常感激。
$(document).ready(function () {
$('th').each(function (col) {
$(this).hover(
function () {
$(this).addClass('focus');
},
function () {
$(this).removeClass('focus');
}
);
$(this).click(function () {
if ($(this).is('.asc')) {
$(this).removeClass('asc');
$(this).addClass('desc selected');
sortOrder = -1;
} else {
$(this).addClass('asc selected');
$(this).removeClass('desc');
sortOrder = 1;
}
$(this).siblings().removeClass('asc selected');
$(this).siblings().removeClass('desc selected');
var arrData = $('table').find('tbody >tr:has(td)').get();
arrData.sort((a, b) => {
var val1 = $(a).children('td').eq(col).text().toUpperCase();
parseFloat(val1);
var val2 = $(b).children('td').eq(col).text().toUpperCase();
parseFloat(val2);
if ($.isNumeric(val1) && $.isNumeric(val2))
return sortOrder == 1 ? val1 - val2 : val2 - val1;
else return val1 < val2 ? -sortOrder : val1 > val2 ? sortOrder : 0;
});
$.each(arrData, function (index, row) {
$('tbody').append(row);
});
});
});
});
//Example ejs File
<% layout('layouts/boilerplate') -%>
<div class="mdl-grid">
<div class="mdl-cell mdl-cell--4-col">
<table
id="myTable"
class="mdl-data-table table table-sortable mdl-js-data-table mdl-data-table mdl-shadow"
>
<thead>
<tr>
<th class="mdl-data-table__header-cell--sorted">Kurs</th>
</tr>
</thead>
<tbody id="coinTable">
<tr>
<td class="current_price">0,0000234</td>
</tr>
<tr>
<td class="current_price">9,99</td>
</tr>
<tr>
<td class="current_price">31780,86</td>
</tr>
<script src="javascripts/tablesort.js"></script>
</tbody>
</table>
</div>
</div>``
【问题讨论】:
-
您能否编辑问题以包含您尝试排序的 HTML 表格,以及列中的一些演示值。
-
我通过循环从我的 mongodb 中获取数字,但我包含了一个示例表
-
这行
if ($.isNumeric(val1) && $.isNumeric(val1))看起来不正确 -
另外,您使用的是
parseFloat(..),但您不需要将返回值分配给变量吗? -
如果您使用的是
parseFloat,请注意它需要以美国/西方为中心的语言环境。例如"31393"为 31,000。"31.393"(千位分隔符)将为 31 点 3(将"."视为小数点),"31,393"(千位分隔符)将为“31”(无法识别逗号)。
标签: javascript jquery node.js mongodb ejs