【发布时间】:2025-11-27 22:00:02
【问题描述】:
我有一个包含 2000 个项目的数组,需要在 html 中显示 - 每个项目都放入一个 div 中。现在,每个项目都可以有 6 个链接可供单击以进行进一步操作。以下是单个项目当前的外观:
<div class='b'>
<div class='r'>
<span id='l1' onclick='doSomething(itemId, linkId);'>1</span>
<span id='l2' onclick='doSomething(itemId, linkId);'>2</span>
<span id='l3' onclick='doSomething(itemId, linkId);'>3</span>
<span id='l4' onclick='doSomething(itemId, linkId);'>4</span>
<span id='l5' onclick='doSomething(itemId, linkId);'>5</span>
<span id='l6' onclick='doSomething(itemId, linkId);'>6</span>
</div>
<div class='c'>
some item text
</div>
</div>
现在问题在于性能。我正在使用 innerHTML 将项目设置为页面上的主 div。我的“单个项目”包含的 html 越多,DOM 添加它所需的时间就越长。我现在正在尝试减少 HTML 以使其尽可能小。有没有办法以不同的方式呈现跨度,而不必为每个跨度使用单个跨度?也许使用 jQuery?
【问题讨论】:
-
这必须在浏览器中完成?您不能安排网络服务器按您的要求提供内容吗?
-
但我仍然需要使用 innerHTML 或附加来呈现内容。它仍然会很慢。
-
你能给我们一个数组的简短例子,以便我们为你写一个上帝的答案吗?
-
obj[0] = {Item: "2001", Description: "some desc", InZones: "1,2,3"}; InZones 用于创建跨度。总共总是有 6 个。如果 InZones 中有任何内容,则需要将适当跨度的类更改为“sel”。希望这是有道理的。
-
您是在循环中为每个跨度添加innerHTML,还是将所有跨度一起添加一次?
标签: html performance dom innerhtml