Цитата:
|
Сделал так: сохраняю все строки в массив, перед выводом хелпер очищаю, потом прохожу регэкспами массив и выдаю в DOM уже готовый HTML. так работает в сто раз быстрее. На фильтрацию уходит примерно от одной до трех секунд пот 2500 строк. Но хочется еще больше скорости
|
Храни массив объектов вида {label, text}, где label - одно из debug/verbose/error/чотамеще, а text - уже распаршенный в html текст, при изменении условий фильтруй по метке и вставляй через innerHTML.
var logItems = [{
label: "debug",
text: "<span>10:05:00</span><span>some debug message</span>"
}, {
label: "error",
text: "<span>10:05:00</span><span>some error message</span>"
}]
//..
document.getElementById("wrapper").innerHTML = logItems.filter(function(item) {
return checkedLabels.indexOf(item.label) != -1;
}.map(function(item) {
return "<div class='log-item'>" + item + "</div>";
}).join();
А вообще, такие вещи делаются не вручную, а с помощью движков биндинга вроде
реакта.