dom或html文档中理想的id数

时间:2011-05-27 11:30:40

标签: javascript html dom

我一直专注于javascript并改善我网站的性能。我经常做的一件事是,动态创建元素,并使用id访问这些元素。

也许你可以帮我解决一些问题。

  1. 为文档中的每个有趣节点提供唯一ID,有哪些主要缺点?

  2. 文档中理想的ID数是多少?

  3. 文档的最大ID数是多少?

  4. 就性能而言,获取css类的元素比通过id获取元素要慢吗?

  5. 谢谢你们的回答。如果您对这些关于dom和访问它们的问题有任何其他说明,我们将不胜感激。

    谢谢。

2 个答案:

答案 0 :(得分:6)

我知道,除了IE,Safari和Chrome向window属性推广“id”值的烦恼之外,没有真正使用“id”值的惩罚。然而,好的JavaScript代码应该能够处理它。

请注意:

  • “id”值必须在文档(页面)中保持完全唯一。对多个元素使用相同的“id”值是不行的。
  • 通过“id”查找比通过任何其他方式查找要快得多。

在现代浏览器中,按类查找可能非常快,但这只是因为这样做的工作已经被淹没在浏览器的低级支持代码中(可能由更复杂的内部数据结构,缓存等支持) )。现在类名也非常重要,无论是简单的语义标记还是客户端代码的使用,所以我不是说类是坏的或任何东西。实际上,有时候“id”专门做事情会相当愚蠢,因为使用类会引入简单性。

编辑 - 截至目前(2013年底)Firefox也为具有“id”属性的元素创建了window属性。 :(

答案 1 :(得分:1)

  1. 除了价值冲突的可能性(以及Pointy共享的内容)之外,给每个元素一个id没有任何缺点。
  2. 使用多少
  3. 无关紧要
  4. 页面上可以包含id的元素数量没有限制(与上面相同)
  5. 由于ID是唯一的,它会更快 - 但是你会失去优势,因为它可以使用多个值,或者将相同的值应用于多个元素。例如,如果您想使用javascript按类名选择多个元素,而不是列出几个ID。特别是对于CSS,速度的提升通常是不明显的。
  6. 具有ID的元素也具有一些其他非javascript相关的优点,例如直接超链接到元素。一般来说,我宁愿避免使用id乱丢标记,除非我觉得它确实是必要的,例如:使用需要与javascript交互的数据库中的动态内容。

    为了解决您的性能问题,低效的选择器很少会给您带来重大问题。虽然优化很好,但我不会为了这个原因而给出可能选择id的每个元素。大多数性能问题都是由于其他因素造成的,例如在执行AJAX请求时数据库查询速度慢,或者一次运行大量动画,或者只是效率低下的javascript。