2016-05-13 4 views
0

このテーブルをソートする必要がありますが、PercentageとNumbersカラムは奇妙な方法でソートされています。それは数値ではなく文字列としてソートします。 私はたくさんのGoogle検索を行い、parseInt、parseFloat、およびnumberを使用しようとしましたが、以下のコードは私が得ることができる最高です。番号としてテーブルの列を並べ替えるには? (JavaScriptのみ)

これらの列(名前列ではない)だけを数値に変換する方法はありますか。

申し訳ありませんが質問のnoobだと、私はコーディングの初心者です。 : -/

var tabela, asc1 = 1, asc2 = 1, asc3 = 1; 
 

 
window.onload = function() { 
 
    
 
    tabela = document.getElementById("table"); 
 
    
 
} 
 

 

 
function sort_table(tbody,col,asc) { 
 
    var rows = tbody.rows, 
 
     rlen = rows.length, 
 
     arr = new Array(), 
 
     i, j, cells, clen; 
 
    
 
    for (i=0 ; i<rlen ; i++){ 
 
    cells = rows[i].cells; 
 
    clen = cells.length; 
 
    arr[i] = new Array; 
 
    for(j=0; j<clen ; j++){ 
 
     
 
     
 
     arr[i][j] = cells[j].innerHTML; 
 
     
 
    } 
 
    
 
    } 
 

 
    arr.sort(function(a, b){ 
 
    return (a[col] == b[col]) ? 0 : ((a[col] > b[col]) ? asc : -1 * asc); 
 
    }); 
 
    for (i=0; i<rlen ; i++){ 
 
    rows[i].innerHTML = "<td>" + arr[i].join("</td><td>") + "</td>"; 
 
    } 
 
}
<table class="table"> 
 
     <thead> 
 
      <th onclick="sort_table(table,0,asc1);asc1 *= -1;asc2 = 1; asc3 = 1;">Number</th> 
 
      <th onclick="sort_table(table,1,asc2);asc2 *= -1;asc1 = 1; asc3 = 1;">Name</th> 
 
      <th onclick="sort_table(table,2,asc3);asc3 *= -1;asc1 = 1; asc2 = 1;">Percentage</th> 
 
      
 
     </thead> 
 
     <tbody id="table"> 
 
      <tr> 
 
      <td>1</td> 
 
      <td>A</td> 
 
      <td>10%</td> 
 
      </tr> 
 
      <tr> 
 
      <td>5</td> 
 
      <td>D</td> 
 
      <td>55%</td> 
 
      </tr> 
 
      <tr> 
 
      <td>3</td> 
 
      <td>F</td> 
 
      <td>3%</td> 
 
      </tr> 
 
     </tbody> 
 
     </table>

+0

使用本 - > ARR [I] [J] =細胞[J] .innerHTML/1。 –

+0

ありがとうございます@ZivWeissmanそれは動作しますが、名前列はNaNを返します。アルファベット順にソートする必要があります。 –

答えて

0
var sortVal = cells[j].innerHTML; 
arr[i][j] = isNaN(sortVal) ? sortVal : sortVal/1; 
+0

Antonさん、ありがとうございました! –

関連する問題