在TVJS应用程序中更新DOM最有效的方法?

在TVJS应用程序中更新DOM最有效的方法?,dom,tvos,tvml,tvjs,Dom,Tvos,Tvml,Tvjs,在一个实例中(DOM中约1000个锁定项),在另一个实例中(约10000个锁定项),更新TVJS中的DOM几乎是即时的,会阻塞UI 30秒 文档引用存储为引用,并使用以下几个属性进行更新: var element = doc.getElementsByTagName('lockup').item(index); element.setAttribute('id', 'item-highlight'); element.setAttribute('autoHighlight', 'true');

在一个实例中(DOM中约1000个锁定项),在另一个实例中(约10000个锁定项),更新TVJS中的DOM几乎是即时的,会阻塞UI 30秒

文档引用存储为引用,并使用以下几个属性进行更新:

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

是否有一种更高效的方法来更新DOM?

在显示的块周围有一个循环(请参见
索引
)对吗? 我猜,
doc.getElementsByTagName('lockup')
每次处理整个DOM都会占用相当多的时间。因为它每次都返回相同的数组,所以将它拉到循环前面。像这样的

var elems = doc.getElementsByTagName('lockup')
for (var elem of elems) {
  elem.setAttribute(...)
}

您在显示的块周围有一个循环(请参见
索引
)对吗? 我猜,
doc.getElementsByTagName('lockup')
每次处理整个DOM都会占用相当多的时间。因为它每次都返回相同的数组,所以将它拉到循环前面。像这样的

var elems = doc.getElementsByTagName('lockup')
for (var elem of elems) {
  elem.setAttribute(...)
}

索引有点误导人,它只是一个动态传入的参数,用于确定在哪个锁定项上设置属性。实际的锁定(双关语)发生在dom中的元素更新时。索引有点误导,它只是一个动态传递的参数,用于确定在哪个锁定项上设置属性。实际锁定(双关语)发生在dom中的元素更新时。