Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有多少个元素id';浏览器可以在性能下降之前安全地处理吗?_Javascript_Performance_Browser - Fatal编程技术网

Javascript 有多少个元素id';浏览器可以在性能下降之前安全地处理吗?

Javascript 有多少个元素id';浏览器可以在性能下降之前安全地处理吗?,javascript,performance,browser,Javascript,Performance,Browser,使用元素id是javascript“获取”元素的最快方法。在期望浏览器性能开始下降之前,是否有一个经验法则或最佳实践指南来说明应该使用多少个id?id本身只是一个属性值。唯一的“性能”问题是浏览器必须下载的额外位和字节。从JavaScript POV来看,DOM中的元素越多,遍历它所需的时间就越长,但这与您可能使用的ID数量没有直接关系 编辑: 要澄清您的JS是否是这样的: document.getElementById("myID") 无论您的HTML是否如下所示: <div id="

使用元素id是javascript“获取”元素的最快方法。在期望浏览器性能开始下降之前,是否有一个经验法则或最佳实践指南来说明应该使用多少个id?

id本身只是一个属性值。唯一的“性能”问题是浏览器必须下载的额外位和字节。从JavaScript POV来看,DOM中的元素越多,遍历它所需的时间就越长,但这与您可能使用的ID数量没有直接关系

编辑:

要澄清您的JS是否是这样的:

document.getElementById("myID")
无论您的HTML是否如下所示:

<div id="div1">
  <div id="div2">
    ...
      <div id="div999">
        <div id="myDiv">

...
或者这个:

<div>
  <div>
    ...
      <div>
        <div id="myDiv">

...

对于这两个示例,JS应该运行相同的代码

一个复杂的页面意味着需要下载更多的字节,也意味着在JavaScript中访问DOM的速度较慢。例如,当您想要添加事件处理程序时,如果在页面上循环500或5000个DOM元素,则会产生不同

大量的DOM元素可能是一种症状,即在不必删除内容的情况下,页面的标记应该有所改进。是否使用嵌套表进行布局?您是否只为了解决布局问题而添加了更多的s?也许有一种更好、语义更正确的方法来做标记

YUI CSS实用程序对布局有很大帮助:grids.CSS可以帮助您进行整体布局,font.CSS和reset.CSS可以帮助您去除浏览器的默认格式。这是一个重新开始并思考标记的机会,例如,仅在语义上有意义时才使用s,而不是因为它呈现新行

DOM元素的数量很容易测试,只需在Firebug的控制台中键入:
document.getElementsByTagName('*').length

我们有一个表单,其中包含1000多个字段(不问),使用jQuery验证进行客户端验证。这包括验证哪些字段是必需的,检查每个字段的数据类型,根据特定条件显示/隐藏字段组,以及在输入数据时跨多个字段运行计算


只有MSIE会在这种规模下减速。Firefox和Chrome“立即”运行验证。MSIE最终显示“长时间运行脚本”对话框。昨晚我接到通知,现在需要额外的字段。

你是说在东西开始变慢之前,你可以调用多少次
document.getElementById
?相关:我将使用infinite。试着证明我错了。:)我不担心电话的数量,我不明白为什么这会有什么不同。我关心的是每个调用的运行时间。假设您有1000多个附加了id的DOM元素,这会导致getElementById调用性能下降吗?对这些字段的引用是缓存的(在变量/数组/对象内部)还是使用
$('#id')
要在验证过程中查找每个字段?@Šime Vidas-表单的元素集合已经有了控件的实时集合。特定元素所需的验证类型通常由类值表示,例如@RobG Aha,那么IE中的缓慢通常可以归因于其缓慢的JavaScript引擎。改善IE中这种情况的唯一解决方案是优化/重新考虑代码,因此JavaScript调用的性能只受DOM数量的影响,而不受具有ID的DOM数量的影响。浏览器不创建一个散列或其他东西来按ID查找DOM元素吗?性能是否会随着“哈希”大小的增加而降低?只有一个DOM。DOM有节点,每个节点都是一个HTML元素。节点越多,javascript在其中爬行的时间就越长。ID只是一个属性,所以所使用的数字与JS性能没有直接关系。在DOM元素的上限方面,有没有公认的最佳实践?我在一台速度非常快的机器上,所以当我的机器运行非常平稳时,我担心用户在较弱的设备上的体验,包括像iPad这样的移动设备。对于这些移动浏览器能处理的负载有什么共识吗?iPad并不是一个“弱小”设备。唯一常用的经验法则是“将您的页面+资产保持在100k以下”,但这只是经验法则,与传统的带宽问题有更多关系。如今,许多web应用程序在DOM结构方面非常复杂。除了构建、测试和重新测试之外,没有硬性规定。重复一遍。