Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTML表是否可以用JavaScript按行而不是按列排序?_Javascript_Html_Html Table - Fatal编程技术网

HTML表是否可以用JavaScript按行而不是按列排序?

HTML表是否可以用JavaScript按行而不是按列排序?,javascript,html,html-table,Javascript,Html,Html Table,我使用W3Schools通过单击列标题对所有表行进行排序。正如预期的那样,这将按该列值对所有行进行排序 我是舒尔,这已经得到了一些回答,但我不难过滤serarch结果,通过单击第一列行找到类似的列排序方法(希望是纯javascript) 应按单击的行值对所有列进行排序 我希望有一些组合的方法,可以根据用户的点击按列和按行排序,但是只要一个按行排序方法就可以了 谢谢你 预期行为 未排序的表: <table id="myTable"> <tbody> <tr

我使用W3Schools通过单击列标题对所有表行进行排序。正如预期的那样,这将按该列值对所有行进行排序

我是舒尔,这已经得到了一些回答,但我不难过滤serarch结果,通过单击第一列行找到类似的列排序方法(希望是纯javascript)

应按单击的行值对所有列进行排序

我希望有一些组合的方法,可以根据用户的点击按列和按行排序,但是只要一个按行排序方法就可以了

谢谢你

预期行为

未排序的表:

<table id="myTable">
  <tbody>
    <tr>
      <th onclick="sortTableRows(0)">Name</th>
      <th onclick="sortTableRows(1)">Col 1</th>
      <th onclick="sortTableRows(2)">Col 2</th>
      <th onclick="sortTableRows(3)">Col 3</th>
    </tr>
    <tr>
      <td onclick="sortTableCols(1)">Alan Brado</td>
      <td>2</td>
      <td>3</td>
      <td>1</td>
    </tr>
    <tr>
      <td onclick="sortTableCols(2)">Kevin Chuca</td>
      <td>1</td>
      <td>3</td>
      <td>2</td>
    </tr>
    <tr>
      <td onclick="sortTableCols(3)">Pamela Chu</td>
      <td>3</td>
      <td>2</td>
      <td>1</td>
    </tr> 
  </tbody>
</table>

名称
第1列
第2列
第3列
艾伦·布拉多
2.
3.
1.
凯文·丘卡
1.
3.
2.
朱丽娟
3.
2.
1.

更新:见@sanxofon的答案。是我的改进。


暂时没有答案,因此我最终使用以下步骤解决了问题:

  • 将表捕获到矩阵

  • 转置矩阵(翻转轴)

  • 按列对矩阵排序(正常情况下)

  • 将矩阵调回(再次翻转轴)

  • 将矩阵更新为表

  • 我为任何登陆这里的人发布这篇文章,他们可能对解决方案感兴趣

    性能:我没有测试它的性能,但由于所有过程都是在矩阵上完成的,所以它完全取决于它的长度及其数据。工作非常好,可以在任何表上实现

    ToDo:可以通过为行和列标题添加侦听器并从表中删除
    onClick=“sortTable(x,y)”
    来改进

    这是:

    var-dirc=0,dirr=0,cc=0,rr=0;
    函数colSlice(arr,ini=0,fin=0){
    if(ini b[r].toLowerCase())返回-1;
    else如果(a[r].toLowerCase()
    /*只是为了美丽*/
    #我的桌子{
    边界:无;
    }
    #myTable th{
    光标:n-调整大小;
    边界:无;
    背景色:#E0;
    }
    #第一个孩子{
    光标:移动;
    }
    th,td{
    宽度:5%;
    }
    #myTable tr td{
    边界:无;
    边框底部:1px实心#aaa;
    文本对齐:居中;
    }
    #myTable tr td:第一个孩子{
    光标:e-resize;
    背景色:#E0;
    边框底部:1px实心#aaa;
    文本对齐:居中;
    }
    #myTable tr:最后一个孩子td{
    边界:无;
    }
    
    二者都
    科拉
    B列
    C柱
    A排
    2.
    3.
    1.
    B排
    1.
    3.
    2.
    C行
    3.
    2.
    1.
    
    我经常问自己这个问题,但似乎从来没有真正需要它,所以我再也没有进一步问过自己。您的答案很好,但在将数字作为字符串进行比较时会遇到问题。它不会显示在代码中,因为您使用的是
    1、2、3
    值。 用混合数据类型检查我的代码段,当然代码可以减少很多

    var-dirc=0,dirr=0,cc=0,rr=0;
    函数colSlice(arr,ini=0,fin=0){
    如果(ini=ini&&j0|arr[i][j]=“0”)
    切片[i].push(parseFloat(arr[i][j]);
    其他的
    切片[i].push(arr[i][j]);
    }
    }
    返回切片;
    }
    函数colJoin(a,b){
    var=[];
    对于(变量i=0;i<table id="myTable">
      <tbody>
        <tr>
          <th onclick="sortTableRows(0)">Name</th>
          <th onclick="sortTableRows(1)">*Col 1*</th>
          <th onclick="sortTableRows(2)">Col 2</th>
          <th onclick="sortTableRows(3)">Col 3</th>
        </tr>
        <tr>
          <td onclick="sortTableCols(1)">Kevin Chuca</td>
          <td>1</td>
          <td>3</td>
          <td>2</td>
        </tr>
        <tr>
          <td onclick="sortTableCols(1)">Alan Brado</td>
          <td>2</td>
          <td>3</td>
          <td>1</td>
        </tr>
        <tr>
          <td onclick="sortTableCols(3)">Pamela Chu</td>
          <td>3</td>
          <td>2</td>
          <td>1</td>
        </tr> 
      </tbody>
    </table>
    
    <table id="myTable">
      <tbody>
        <tr>
          <th onclick="sortTableRows(0)">Name</th>
          <th onclick="sortTableRows(1)">Col 3</th>
          <th onclick="sortTableRows(2)">Col 1</th>
          <th onclick="sortTableRows(3)">Col 2</th>
        </tr>
        <tr>
          <td onclick="sortTableCols(1)">*Alan Brado*</td>
          <td>1</td>
          <td>2</td>
          <td>3</td>
        </tr>
        <tr>
          <td onclick="sortTableCols(2)">Kevin Chuca</td>
          <td>2</td>
          <td>1</td>
          <td>3</td>
        </tr>
        <tr>
          <td onclick="sortTableCols(3)">Pamela Chu</td>
          <td>1</td>
          <td>3</td>
          <td>2</td>
        </tr> 
      </tbody>
    </table>