2013-07-19 2 views
0

Я использую цикл javascript для создания таблицы, состоящей из цифр. В настоящее время код создает таблицу, и я добавил к ней некоторые стили. Проблема, с которой я столкнулся, - найти способ сравнить данные внутри столбцов ячейки, чтобы выделить лучшего и худшего исполнителя внутри этой группы для этого столбца.Мне нужно сравнить данные в строках таблицы html

Вот функции javascript, которые я использую.

function performanceMetricsLoad() { 
var records = storePerformanceMetricsData.getRecordsValues(); 
var groupTracker = null; 
var assetTracker = null; 
var htmlStr; 
htmlStr = "<table class='TableStyles'><thead class='HeaderStyles'><tr><th width='400'>Name</th><th width='110'>1 month Cumulative Performance to " 
      + records[0].DatetimeRecorded.format("F j, Y") + "</th><th width='110'>3 month Cumulative Performance to " 
      + records[0].DatetimeRecorded.format("F j, Y") + "</th><th width='110'>6 month Cumulative Performance to " 
      + records[0].DatetimeRecorded.format("F j, Y") + "</th><th width='110'>12 month Cumulative Performance to " 
      + records[0].DatetimeRecorded.format("F j, Y") + "</th></tr></thead><tbody>"; 

for (var i = 0; i < records.length; i++) { 

    if (groupTracker != records[i].ClassOption) { 
     htmlStr += "<tr>" + "<td class='GroupStyleCSS' colspan='5'>" 
     + records[i].Diversification + "</td></tr>"; 
     groupTracker = records[i].ClassOption; 
    } 

    if (groupTracker == records[i].ClassOption) { 
     htmlStr += "<tr>" + "<td class='RecordCssStyle'>" + records[i].AssetLongName 
     + "</td>"+ "<td class='RecDiv'>" + records[i].TotalReturn1m.toFixed(2) 
     + "</td>" + "<td class='RecDiv'>" + records[i].TotalReturn3m.toFixed(2) 
     + "</td>" + "<td class='RecDiv'>" + records[i].TotalReturn6m.toFixed(2) 
     + "</td>" + "<td class='RecDiv'>" + records[i].TotalReturn12m.toFixed(2) + "</tr>"; 
     assetTracker = records[i].AssetLongName; 
    } 
} 

htmlStr += "</tbody></table>"; 
createRow("", htmlStr); 
frmMetrics.doLayout(); 

}

function createRow(cls, text) { 
frmMetrics.add(new Ext.BoxComponent({ 
    cls: cls, 
    html: "<div>" + text + "</div>" 
})); 

}

информация выводится в EXT FormPanel.

Проблемы у меня есть теперь у меня есть это вывод информации, мне нужно найти способ, чтобы выделить лучшие и худшие исполнитель внутри колонн, внутри группировок ...

выходов таблицы 5 колонка вдоль вверху и до 10 групп по левой стороне имен фондов, которые сгруппированы по их «диверсификации», в зависимости от информации, запрашиваемой с использованием SQL-запроса.

Есть ли у кого-нибудь идеи, как я могу это сделать с текущим состоянием этого кода? я думал об использовании другой внешней функции и, возможно, о некоторых случаях, когда вы выбираете разные классы css ... любая помощь будет принята с большой благодарностью. Большое спасибо.

извините за отсутствие скриншотов, я попытался включить некоторые, но, видимо, мне нужна репутация 10 баллов, прежде чем я, или что-то вдоль этих линий ...

+1

Разве это не программирование 101, чтобы найти самое большое и наименьшее число? хорошо вы можете создать переменную для самых больших и малых, и при создании каждой строки сравните значение с наибольшим и наименьшим. Если это больше, чем наибольшее изменение, то наибольшая переменная и та же самая с наименьшим. – user1

+1

Определенно ** не ** использовать DOM для хранения данных. Это очень медленно. Выполняйте все ваши сравнения в JavaScript с использованием переменных JavaScript при добавлении строк и добавьте дополнительные классы CSS в те, которые в нем нуждаются. – Corion

+0

Если вы уже используете Ext, я полагаю, что вы, по крайней мере, довольны внешним видом. Итак, почему бы не разорвать необработанную таблицу и вместо этого использовать Ext.grid.Panel? Вы могли бы использовать это хранилище, которое представляет структуру данных показателей производительности. Затем вы можете использовать функциональность Ext framework (например, в функции рендеринга столбца) для форматирования. –

ответ

0

Добавьте эти две строки в верхней части вашего функция

var largest; 
var smallest; 

Затем в цикле, добавьте:

if(value > largest){ 
    largest = value; 
} 
if(value < smallest){ 
    smallest = value; 
} 

Если вы хотите добавить стили к клеткам с этими значениями добавить в строке, чтобы сохранить индекс того Валу (обновлено таким же образом) и установите для параметра или и выберите идентификатор с помощью css.

Смежные вопросы