Самый эффективный способ обновить DOM в приложении TVJS?

Обновление DOM в TVJS кажется почти мгновенным в одном случае (~ 1000 элементов блокировки в DOM), а в другом блокирует пользовательский интерфейс на 30 секунд (~ 10000 элементов блокировки).

Ссылка на документ сохраняется как ссылка и обновляется несколькими атрибутами:

var element = doc.getElementsByTagName('lockup').item(index);
element.setAttribute('id', 'item-highlight');
element.setAttribute('autoHighlight', 'true');

Есть ли более производительный/эффективный способ обновления DOM?


person egekhter    schedule 10.01.2016    source источник


Ответы (1)


Я прав, что у вас есть петля вокруг показанного блока (см. index)? Я предполагаю, что doc.getElementsByTagName('lockup') — каждый раз перебирая весь DOM — занимает значительное количество времени. Поскольку каждый раз будет возвращаться один и тот же массив, потяните его перед циклом. Что-то вроде этого...

var elems = doc.getElementsByTagName('lockup')
for (var elem of elems) {
  elem.setAttribute(...)
}
person Baa    schedule 10.01.2016
comment
Индекс немного вводит в заблуждение, это просто параметр, который передается динамически, чтобы определить, для какого элемента блокировки установить атрибут. Фактическая блокировка (каламбур) происходит во время обновления элемента в dom. - person egekhter; 10.01.2016