首先 - 我是jQuery / JS的新手
我有一个显示体育赛事结果的网站。每年有6场比赛,但只有4项最佳成绩被用于排名。
我在网站上有一个表格,该表格通过google电子表格(通过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 :(得分: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');
});