您在页面上需要的最大元素ID数量?

时间:2011-03-18 12:25:02

标签: javascript html css performance dom

无法搜索此内容。到目前为止,我发现的唯一一件事就是映射API,其中(对于地图标记)JavaScript在500个ID之间严重陷入困境。我很确定这与使用的特定脚本有关,而不是一般规则。

我有一个包含复杂列表的页面。列表中的每个项目上都有大约10个不同的ID,并且有几个JavaScript脚本在运行。该列表是分页的,用户可以选择每页显示多少项。考虑到列表中的每个项目有~10个ID,我想知道我应该将每页的最大项目数设置为(用户可以选择在页面上一次查看的记录总数)。

我的意思是 - 除了根据记录的原始数量增加加载时间外,是否有已知数量的id,其中限制被点击或CSS / JavaScript性能开始急剧下降?

编辑:原谅,每个“项目”都是复杂的名片(用于绘制图片),其中有三个div和一个小格式。这是每个项目(记录)有大约10个id。

2 个答案:

答案 0 :(得分:4)

我认为你会发现它最终将取决于用户的浏览器和个人系统。

最有意义的是对您的目标用户群,浏览器以及可用的内存量进行一些研究。您可以在本地环境中分析您的应用程序(并且已经讨论过仅执行that)。这可以让您了解您使用的系统资源数量与用户可用的数量。

但考虑到HTML5等高度图形化的javascript内容,我敢打赌你需要有一个荒谬的数据显示,因为javascript性能是你最大的关键点(至少在大多数现代浏览器中,如果你必须支持像IE6这样的东西,那么所有的赌注都是关闭的。

关闭括号,对不起给予威力

答案 1 :(得分:4)

你没有回答我的评论,你已经接受了答案,但无论如何我会给出答案,因为我觉得你可能不需要你拥有的所有身份证。

我们来看下面的示例代码:

<div id="card-1" onclick="doSomethingWithCard('card-1')">
   <h2 id="card-1-name">John Doe</h2>
</div>

这里的两个ID都是不必要的。许多人尝试通过将其ID传递给事件处理程序并使用getElementById来获取对触发事件的元素的引用。相反,this已包含引用:

<div onclick="doSomethingWithCard(this)">
   ...
</div>

一旦你有了这个引用,就可以使用getElementsbyTagName,一个CSS选择器(通常使用JavaScript框架/库,如jQuery)或XPath来访问内部元素而不是它们各自的ID。如果所有项目使用适当的元素(h2,h3,ul,form等)和类具有相同的内部结构,则这种方法效果最佳。

jQuery示例:

function doSomethingWithCard(card) {
   alert($(card).find("h2").text());
}