我有下表,需要找到
>一个或多个td,其中“sum”类具有最高值(数字)
>一个或多个td,类“sum”,第二个最高值(数字)
>将类“text-bold”添加到匹配的tds中
<!DOCTYPE html> <html> <head> <style type="text/css"> .text-bold { font-weight: 700; } table { margin: 16px 0; color:#333; border-width: 1px; border-color: #666; border-collapse: collapse; } table th { border-width: 1px; padding: 4px; border-style: solid; border-color: #666; background-color: #FBDD9B; } table td { border-width: 1px; padding: 4px; border-style: solid; border-color: #666; background-color: #fff; } </style> </head> <body> <table id="table-results"> <tr> <th>Question</th> <th>inovation</th> <th>all-round</th> <th>coordination</th> <th>keeper</th> <th>analytic</th> </tr> <tr> <td>I.</td> <td>D=2</td> <td>A=1</td> <td>E=10</td> <td>C=8</td> <td>B=4</td> </tr> <tr> <td>II.</td> <td>A=6</td> <td>C=1</td> <td>B=2</td> <td>D=5</td> <td>E=1</td> </tr> <tr> <td>III.</td> <td>E=4</td> <td>B=1</td> <td>D=3</td> <td>A=2</td> <td>C=7</td> </tr> <tr> <td>Suma</td> <td class="sum">12</td> <td class="sum">3</td> <td class="sum">15</td> <td class="sum">15</td> <td class="sum">12</td> </tr> </table> </body> </html>
在上面的示例中,结果应如下所示
Suma 12 3 15 15 12
其他可能的结果
Suma 0 0 0 10 0
Suma 12 3 15 7 9
Suma 1 3 15 15 12
苏马12 3 15 9 12
Suma 4 4 4 4 4
解决方法
它实际上有点复杂,你必须从.sum元素中获取一个数组,然后找到最高数字,然后从数组中删除所有数字,然后找到下一个最高数字,最后定位包含这些数字的所有元素两个数字.
在代码中,这看起来像
var sum = $('.sum'); var arr = sum.map(function(_,x) { return +$(x).text() }).get(); var max = Math.max.apply( Math,arr ); var out = arr.filter(function(x) { return x != max }); var nxt = Math.max.apply( Math,out ); sum.filter(function() { var numb = +$(this).text(); return numb == max || numb == nxt; }).css('font-weight','bold');