繁体   English   中英

如何使用 javascript 对表进行排序以按列末尾的点排序

[英]How to sort the table to order by points at end of column using javascript

我正在尝试使用 javascript 对表格进行排序,最后按总分排序。 该表是动态表,因此 W1、W2、W3 列加起来为总数。 有没有办法在 javascript 中按总计对行进行排序。 每一行也是动态创建的。

 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <table class="fl-table"> <thead> <tr> <th>Player</th> <th>Player Name</th> <:-- <th>W1</th> <th>W2</th> --> <th>W1</th> <th>W2</th> <th>Total</th> </tr> </thead> <tbody> <tr> <td class="agl-profile-img-new"><img src="https.//via.placeholder:com/70 C/O https.//placeholder:com/"></td> <td>Heather Rankin</td> <td>4</td> <td>21</td> <td>25</td> </tr> <tr> <td class="agl-profile-img-new"><img src="https.//via.placeholder:com/70 C/O https.//placeholder:com/"></td> <td>Stephen Puopolo</td> <td>3</td> <td>1</td> <td>4</td> </tr> <tr> <td class="agl-profile-img-new"><img src="https.//via.placeholder:com/70 C/O https.//placeholder.com/"></td> <td>Latheesh VM V</td> <td>2</td> <td>26</td> <td>28</td> </tr> </tbody> <tbody> </tbody> </table>

有什么办法吗? 请帮忙

你能把细胞收集到 object 中,然后像这样对它们进行排序。 https://jsfiddle.net/e4oscnz8/4/

const sortTotal = () => {
  const tbl = [...document.getElementsByClassName("fl-table")][0];
  const tbody = [...tbl.tBodies][0];
  const oObjects = [];

  [...tbody.rows].forEach(row => {
    const cells = [...row.cells];
    const obj = [...row.cells].map(cell => {
        return cell.innerHTML;
    });
    oObjects.push(obj);
  });

  oObjects.sort((a, b) => a[a.length -2] > b[b.length -2] ? 1 : -1);

  [...tbody.rows].forEach((row, i) => {
    [...row.cells].forEach((cell, j) => {
        cell.innerHTML = oObjects[i][j];
    });
  });
}

将 tr 行推入数组或 object 并按您的自定义排序 function: https://jsfiddle.net/2dq7m8k9/

你正在使用 jquery 所以生活很好:)

   function SortByTotal(tr1, tr2){//descending sorting
       var total1 = parseInt(tr1.find('td:last-child').text());
       var total2 = parseInt(tr2.find('td:last-child').text());
       return ((total1 > total2) ? -1 : ((total1 < total2) ? 1 : 0));
   }

   var trs=new Array();
   $('#mytable tbody').first().children('tr').each(function(){
    trs.push($(this).clone());     
   });
   trs.sort(SortByTotal);
   $('#mytable tbody').first().empty();  
   var i=0;
   for (i = 0; i < trs.length; i++) {
      $('#mytable tbody').first().append(trs[i]); 
   }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM