Сортировать html таблица по значению - PullRequest
0 голосов
/ 23 апреля 2020

Я знаю, что есть много ответов на этот вопрос, но ни один из них не кажется мне подходящим. Допустим, у меня есть таблица

<table id="myTable">
  <tr>
    <th>Name</th>
    <th>Country</th>
  </tr>
  <tr>
    <td>Berglunds snabbkop</td>
    <td>3</td>
  </tr>
  <tr>
    <td>North/South</td>
    <td>1</td>
  </tr>
  <tr>
    <td>Alfreds Futterkiste</td>
    <td>43</td>
  </tr>
  <tr>
    <td>Koniglich Essen</td>
    <td>23</td>
  </tr>
  <tr>
    <td>Laughing Bacchus Winecellars</td>
    <td>54</td>
  </tr>
</table>

Я хочу отсортировать эту таблицу на основе значения вторых данных, то есть строка таблицы, содержащая данные 54, будет первой строкой. В W3Schools есть соответствующий ответ, который сортирует таблицу по алфавиту. Я попробовал это

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")[1];
        y = rows[i + 1].getElementsByTagName("TD")[1];
        if (x.innerHTML > y.innerHTML) {
          shouldSwitch = true;
          break;
        }
      }
      if (shouldSwitch) {
        rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
        switching = true;
      }
    }
  }

Но результат не тот, который я ожидал.

...