javascript - 表对列进行水平排序

标签 javascript jquery sorting html-table

我在对表格进行排序时遇到问题。

我的表格 HTML 是这样的:

<table>
<tr>
  <td>3</td>
  <td>1</td>
</tr>
<tr>
  <td>2</td>
  <td>4</td>
</tr>
</table>

我希望它看起来像这样:

<table>
<tr>
  <td>1</td>
  <td>2</td>
</tr>
<tr>
  <td>3</td>
  <td>4</td>
</tr>
</table>

这是我当前的排序代码:

var rows = $('tr');

rows.eq(0).find('td').sort(function(a, b) {
  return $.text([a]) > $.text([b]) ? 1 : -1;
}).each(function(newIndex) {
  var originalIndex = $(this).index();
  rows.each(function() {
var td = $(this).find('td');
if (originalIndex !== newIndex)
  td.eq(originalIndex).insertAfter(td.eq(newIndex));
});
  });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<table>
  <tr>
    <td>3</td>
    <td>1</td>
  </tr>
  <tr>
    <td>2</td>
    <td>4</td>
  </tr>
</table>

代码仅按单独的行排序。我无法使用任何插件,我需要使用 jquery 或 javascript 来完成此操作。任何人都可以建议如何使其发挥作用吗?

最佳答案

很简单。

  1. td 中的所有数字存储在一个数组中。
  2. 对数组进行排序。
  3. 根据数组修改td

以下是在 JS 中的实现方法:

var tds= [].slice.call(document.getElementsByTagName("td")); //Find <td> and store in array
var tdsa=tds.map(function (a) {return Number(a.innerHTML);}); //Take the innerHTMLs
tdsa.sort(); //Sort it
tds.forEach(function(a,i) {a.innerHTML=tdsa[i]}); //Modify <td>'s innerHTML

关于javascript - 表对列进行水平排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40447377/

相关文章:

java - 第二次排序更快

javascript - 获取意外 token ILLEGAL JS 错误

javascript - Sencha Touch 日历,添加更多停靠项目时列表消失

javascript - jQuery.post 返回 400 错误请求错误 [rails]

javascript - 不允许加载本地资源

c# - 如何将 LINQ 与具有并行数组的类一起使用?

javascript - 如何使用 ngRoute 在 templateUrl 中使用 URL 参数?

javascript - react : Controlling input value with both props and state

Javascript 在通过 XMLHttpRequest 加载时不执行,但在使用 jQuery.load 加载时执行

python - 根据另一个字典对列表进行排序