我有一个HTML表格,我希望通过在每列的最高和最低值中添加一个类来标记单元格。我在这里找到了一些相关的问题,但代码行为不端。
var $table = $("#mytable");
$table.find("th").each(function(columnIndex)
{
var oldValue=0, currentValue=0, $elementToMark;
var $trs = $table.find("tr");
$trs.each(function(index, element)
{
oldValue= currentValue;
var $td = $(this).find("td:eq("+ columnIndex +")");
if ($td.length!=0)
{
currentValue= parseFloat($td.html());
if(currentValue > oldValue)
{
$elementToMark= $td;
}
if(index == $trs.length-1)
{
$elementToMark.addClass("highest");
}
}
});
});
var $table = $("#mytable");
$table.find("th").each(function(columnIndex)
{
var oldValue=1000000, currentValue=1000000, $elementToMark;
var $trs = $table.find("tr");
$trs.each(function(index, element)
{
oldValue= currentValue;
var $td = $(this).find("td:eq("+ columnIndex +")");
if ($td.length!=0)
{
currentValue= parseFloat($td.html());
if(currentValue < oldValue)
{
$elementToMark= $td;
}
if(index == $trs.length-1)
{
$elementToMark.addClass("lowest");
}
}
});
});
这里还有一个JSFiddle:Link
问题是它没有标记正确的值,我看不出原因。
答案 0 :(得分:4)
您正在错误的地方更新oldValue
。
var $table = $("#mytable");
$table.find("th").each(function(columnIndex)
{
var oldValue=0, currentValue=0, $elementToMark;
var $trs = $table.find("tr");
$trs.each(function(index, element)
{
var $td = $(this).find("td:eq("+ columnIndex +")");
if ($td.length!=0)
{
currentValue= parseFloat($td.html());
if(currentValue > oldValue)
{
$elementToMark= $td;
oldValue= currentValue;
}
if(index == $trs.length-1)
{
$elementToMark.addClass("highest");
}
}
});
});
var $table = $("#mytable");
$table.find("th").each(function(columnIndex)
{
var oldValue=1000000, currentValue=1000000, $elementToMark;
var $trs = $table.find("tr");
$trs.each(function(index, element)
{
var $td = $(this).find("td:eq("+ columnIndex +")");
if ($td.length!=0)
{
currentValue= parseFloat($td.html());
if(currentValue < oldValue)
{
$elementToMark= $td;
oldValue= currentValue;
}
if(index == $trs.length-1)
{
$elementToMark.addClass("lowest");
}
}
});
})
答案 1 :(得分:1)
此代码允许最低或最高值之间的平局。对不起......我开始玩它并且无法帮助它......
var $table = $("#mytable");
$table.find("th").each(function(columnIndex)
{
var oldValue=0, currentValue=0;
var $trs = $table.find("tr");
var highElements = [];
var lowElements = [];
var lowestValue = 99999;
var highestValue = 0;
console.log('new column ' + columnIndex);
$trs.each(function(index, element)
{
oldValue= currentValue;
var cell = $(this).find("td:eq("+ columnIndex +")");
if (cell.length!=0)
{
currentValue= parseInt(cell.html());
if(currentValue < lowestValue)
{
lowestValue = currentValue;
lowElements = [];
lowElements.push(cell);
}
else if (currentValue == lowestValue) {
lowElements.push(cell);
}
if (currentValue > highestValue)
{
highestValue = currentValue;
highElements = [];
highElements.push(cell);
}
else if (currentValue == highestValue) {
highElements.push(cell);
}
}
});
$.each(lowElements, function(i, e){
$(e).addClass('lowest');
});
$.each(highElements, function(i, e){
$(e).addClass('highest');
});
});
希望它有所帮助。
在这里工作小提琴...... http://jsfiddle.net/vqfPA/6/