Я пытаюсь написать функцию для добавления цвета в таблицу на основе ссылки, которая является одной из верхних строк таблицы. В SO есть несколько вопросов, касающихся упоминания итераций на основе строк, но не столько о столбцах.
Структура таблицы примерно такая:
<table id="data">
<tr>
<th rowspan="2">Name</th>
<th rowspan="2">Selection</th>
<th rowspan="2">Title</th>
<th rowspan="2">Info1</th>
<th rowspan="2">Info2</th>
<th colspan="10">Data</th>
</tr>
<tr>
<th>001</th>
<th>002</th>
<th>003</th>
<th>004</th>
<th>005</th>
<th>006</th>
<th>007</th>
<th>008</th>
<th>009</th>
<th>010</th>
</tr>
<tr id="ref_control">
<td></td>
<td>RefName</td>
<td></td>
<td></td>
<td></td>
<td>A</td>
<td>B</td>
<td>J</td>
<td>L</td>
<td>Z</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
</tr>
<tr>
<td><input type="checkbox" name="checkbox"/></td>
<td>Entity 1</td>
<td>Info...</td>
<td>More info...</td>
<td>Even more...</td>
<td>A</td>
<td>T</td>
<td>M</td>
<td>L</td>
<td>Z</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>2</td>
<td>5</td>
</tr>
(...)
</table>
Кроме того, я использую JQuery и плагин выбора ячейки столбца JQuery для выполнения упомянутой задачи.
Код Javascript выглядит так:
$(document).ready(function() {
// Colorize table based on matches
// Number of Data entries - Count on the reference (2nd row)
// and only 5th column onwards (index starts at 0)
var datasize = $("#data tr:eq(2) td:gt(4)").length;
// Start with column 6 (index starts at 1)
var begin = 6;
for (var i = begin; i < begin + datasize; ++i) {
var curCol = $("#data td").nthCol(i);
var ref = curCol.eq(0).text();
curCol.not(curCol.eq(0)).each(function() {
var data = $(this);
if (data.text() == '') {
data.addClass("black");
} else if (data.text() != ref) {
data.addClass("color");
}
});
}
});
Рабочий пример можно визуализировать здесь . В примере таблица содержит только 9 строк и 10 столбцов данных. Фактическая страница, которую я пытаюсь оптимизировать, содержит 20 строк и 90 столбцов данных.
Использование упомянутых расширений / плагинов Javascript для таблицы большого размера не представляет угрозы для браузера Google Chrome, для загрузки которого требуется несколько секунд, однако Opera, Firefox и Internet Explorer испытывают трудности с запуском функции или в конечном итоге запрашивают взаимодействие с пользователем чтобы остановить выполнение скрипта.
Так что мой вопрос направлен на обе альтернативы плагин выбора столбца или на способы оптимизации кода, чтобы я не убивал почти все браузеры, кроме Google Chrome.
Редактировать : Изменения в соответствии с двумя комментариями @ Pointy