首页 > 解决方案 > 使用 Javascript 对 html 表进行数字排序 - 10 以上不起作用

问题描述

下面的 JS 函数仅根据 td 中的第一个数字对 myTable 中的 td:s 进行排序。如何根据 td 中的所有数字对其进行排序(从低到高排序;例如 1、5、15 而不是 1、15、5)?

function sortTable() {
  var table, rows, switching, i, x, y, shouldSwitch;
  table = document.getElementById("myTable");
  switching = true;
  while (switching) {
    switching = false;
    rows = table.rows;
    for (i = 1; i < (rows.length - 1); i++) {
      shouldSwitch = false;
      x = rows[i].getElementsByTagName("TD")[0];
      y = rows[i + 1].getElementsByTagName("TD")[0];
      if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) {
        shouldSwitch = true;
        break;
      }
    }
    if (shouldSwitch) {
      rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
      switching = true;
    }
  }
}

标签: javascriptsortinghtml-table

解决方案


用于parseInt()将字符串转换为整数。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt

所以,比较应该像 -

if (parseInt(x.innerHTML.toLowerCase()) > parseInt(y.innerHTML.toLowerCase())) {

推荐阅读