我一直专注于javascript并改善我网站的性能。我经常做的一件事是,动态创建元素,并使用id访问这些元素。
也许你可以帮我解决一些问题。
为文档中的每个有趣节点提供唯一ID,有哪些主要缺点?
文档中理想的ID数是多少?
文档的最大ID数是多少?
就性能而言,获取css类的元素比通过id获取元素要慢吗?
谢谢你们的回答。如果您对这些关于dom和访问它们的问题有任何其他说明,我们将不胜感激。
谢谢。
答案 0 :(得分:6)
我知道,除了IE,Safari和Chrome向window
属性推广“id”值的烦恼之外,没有真正使用“id”值的惩罚。然而,好的JavaScript代码应该能够处理它。
请注意:
在现代浏览器中,按类查找可能非常快,但这只是因为这样做的工作已经被淹没在浏览器的低级支持代码中(可能由更复杂的内部数据结构,缓存等支持) )。现在类名也非常重要,无论是简单的语义标记还是客户端代码的使用,所以我不是说类是坏的或任何东西。实际上,有时候“id”专门做事情会相当愚蠢,因为使用类会引入简单性。
编辑 - 截至目前(2013年底)Firefox也为具有“id”属性的元素创建了window
属性。 :(
答案 1 :(得分:1)
具有ID的元素也具有一些其他非javascript相关的优点,例如直接超链接到元素。一般来说,我宁愿避免使用id乱丢标记,除非我觉得它确实是必要的,例如:使用需要与javascript交互的数据库中的动态内容。
为了解决您的性能问题,低效的选择器很少会给您带来重大问题。虽然优化很好,但我不会为了这个原因而给出可能选择id的每个元素。大多数性能问题都是由于其他因素造成的,例如在执行AJAX请求时数据库查询速度慢,或者一次运行大量动画,或者只是效率低下的javascript。