简体   繁体   English

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

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

I am trying to sort the table using javascript to order by total points at the end.我正在尝试使用 javascript 对表格进行排序,最后按总分排序。 The table is a dynamic one so W1, W2, W3 columns adds up to total.该表是动态表,因此 W1、W2、W3 列加起来为总数。 Is there way to order rows them by total in javascript.有没有办法在 javascript 中按总计对行进行排序。 Each row is dynamically created as well.每一行也是动态创建的。

 <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>

Is there is any way?有什么办法吗? Please help请帮忙

can you gather the cells into object and sort them like this.你能把细胞收集到 object 中,然后像这样对它们进行排序。 https://jsfiddle.net/e4oscnz8/4/ 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];
    });
  });
}

push tr rows into array or object and sort by your custom sort function: https://jsfiddle.net/2dq7m8k9/将 tr 行推入数组或 object 并按您的自定义排序 function: https://jsfiddle.net/2dq7m8k9/

you are using jquery so life is good:)你正在使用 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