2017-08-31 26 views
2

首先 - 我很新的jQuery/JSjQuery - 查找表格中的最小值和樣式它

我有一個網站,顯示運動結果。每年有6場比賽,但只有4個最好的成績用於排名。

我在網站上有一個表格,通過谷歌電子表格(通過sheetrock)通過jQuery填充。

表看起來是這樣的:

$('tr').each(function(){ 
 
     var vals = $('td:nth-child(n+3):nth-last-child(n+2)',this).map(function() { 
 
      return parseInt($(this).text()) ? parseInt($(this).text()) : null; 
 
     }).get(); 
 
     var min = Math.min.apply(Math, vals); 
 

 
     $('td:nth-child(n+3):nth-last-child(n+2)', this).filter(function() { 
 
      return parseInt($(this).text()) === min; 
 
     }).css('text-decoration', 'line-through'); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
<thead> 
 
<tr> 
 
    <th>Rang</th> 
 
    <th>Team</th> 
 
    <th>KC</th> 
 
    <th>ZB</th> 
 
    <th>BVO</th> 
 
    <th>BW</th> 
 
    <th>MC</th> 
 
    <th>BB</th> 
 
    <th>TOTAL</th> 
 
</tr> 
 
</thead> 
 
<tbody> 
 
<tr> 
 
    <td>1</td> 
 
    <td>Eckl/Lak</td> 
 
    <td>100</td> 
 
    <td>100</td> 
 
    <td>100</td> 
 
    <td></td> 
 
    <td>100</td> 
 
    <td></td> 
 
    <td>400</td> 
 
</tr> 
 
    <tr> 
 
    <td>2</td> 
 
    <td>Pointner/Wimmer J.</td> 
 
    <td>70</td> 
 
    <td></td> 
 
    <td>50</td> 
 
    <td>50</td> 
 
    <td>70</td> 
 
    <td>80</td> 
 
    <td>220</td> 
 
</tr> 
 
    <tr> 
 
    <td>3</td> 
 
    <td>Grießler/Svetanic</td> 
 
    <td>56</td> 
 
    <td></td> 
 
    <td>62</td> 
 
    <td>40</td> 
 
    <td></td> 
 
    <td>40</td> 
 
    <td>198</td> 
 
</tr> 
 
</tbody> 
 
</table>

所有我想現在要做的就是讓jQuery的檢查表的每一行,如果有4個以上的結果。如果有超過4個,我想穿過最小的值。

我用這4分以上的結果,以確定該行:

$('table tr').filter(function() { 
 
     return $(this).children('td:empty').length < 2;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

的款式我用這個細胞:

$('tr').each(function(){ 
 
     var vals = $('td:nth-child(n+3):nth-last-child(n+2)',this).map(function() { 
 
      return parseInt($(this).text()) ? parseInt($(this).text()) : null; 
 
     }).get(); 
 
     var min = Math.min.apply(Math, vals); 
 

 
     $('td:nth-child(n+3):nth-last-child(n+2)', this).filter(function() { 
 
      return parseInt($(this).text()) === min; 
 
     }).css('text-decoration', 'line-through'); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

但有幾件事顯然不起作用。

目前,它標識每一行的所有最小值。因此,如果有多個最小值,它也會爲每個最小值設定樣式,而不僅僅是其中的一個。

此外,我不知道如何將它納入if語句。

我真的很希望有人能幫助我。

+0

什麼你寧願它做?風格只有第一個?並更新您的片段添加引用jquery cdn。 – jidexl21

+0

檢查您的jquery cdn文件是否正確鏈接... – Mahesh

+0

@ jidexl21確切 - 我只想要1被稱呼,我真的不在乎它是第一個,中間,最後,無論發生什麼事 - 只要它只有1 – Fazoman

回答

0

要在全表搜索最小值

var vals = $('tr td').map(function() { 
    return isNaN(parseInt($(this).text(), 10)) ? parseInt($(this).text(), 10) : null; 
}).get(); 

// then find their minimum 
var min = Math.min.apply(Math, vals); 

// tag any cell matching the min value 
$('tr td').filter(function() { 
    return parseInt($(this).text(), 10) === min; 
}).addClass('alert alert-danger'); 

要將每一行中找到的最小

$('tr').each(function(){ 
    var vals = $('td,th',this).map(function() { 
     return parseInt($(this).text(), 10) ? parseInt($(this).text(), 10) : null; 
    }).get(); 
    // then find their minimum 
    var min = Math.min.apply(Math, vals); 

    // tag any cell matching the min value 
    $('td,th', this).filter(function() { 
     return parseInt($(this).text(), 10) === min; 
    }).addClass('alert alert-danger'); 
}); 

你應該檢查這個OUT- https://stackoverflow.com/a/22470186/1665370

+0

謝謝 - 其實這是我從我的「找到最低」功能的地方 – Fazoman