【问题标题】:Table sort columns horizontal表格对列进行水平排序
【发布时间】:2017-03-19 17:53:51
【问题描述】:

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

我的表格 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 来执行此操作。谁能建议如何使它工作?

【问题讨论】:

  • 能否将所有记录加载到数组中,排序,然后重新构建html来制作表格?

标签: javascript jquery sorting html-table


【解决方案1】:

很简单。

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

这是你在 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

【讨论】:

    【解决方案2】:

    试试这个 - 方法:

    • 将表中的项目放入数组中
    • 对数组进行排序
    • 重建行

    var columnCount = 2;
    var items = [];
    $('td').each(function (idx, obj) {
      items.push(obj.innerHTML);
    });
    items.sort();
    $('table tr').remove();
    
    for(var i=0; i<items.length; i+=2) {
      var row = '<tr>';
      for(var j=0; j<columnCount; j++) {
        row += '<td>' + items[i+j] + '</td>';
      };
      row += '</tr>';
      $('table').append(row);
    };
    <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>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-23
      • 1970-01-01
      • 2014-05-16
      • 1970-01-01
      相关资源
      最近更新 更多