Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.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_Dom_Getelementbyid - Fatal编程技术网

Javascript 存储一个元素与它的id相比,什么是最有效的

Javascript 存储一个元素与它的id相比,什么是最有效的,javascript,dom,getelementbyid,Javascript,Dom,Getelementbyid,在一个页面上,我需要对几个元素执行重复操作。为了避免每次都遍历DOM,我想在数组或对象中存储对所有这些元素的引用 每个元素都有一个id 最有效的方法是:将ID存储在数组中,还是存储元素本身 如果我存储id,那么每次我想要访问元素时,我都需要调用getElementById。如果我自己存储元素,那么我的感觉是它需要浏览器付出更多的努力,尽管我不知道它在实践中是如何工作的,我想知道更多。存储元素引用比只存储id要高效得多,因为正如你所说,在对其执行操作时,可以避免查找 存储元素引用的缺点是,对元素的

在一个页面上,我需要对几个元素执行重复操作。为了避免每次都遍历DOM,我想在数组或对象中存储对所有这些元素的引用

每个元素都有一个id

最有效的方法是:将ID存储在数组中,还是存储元素本身


如果我存储id,那么每次我想要访问元素时,我都需要调用getElementById。如果我自己存储元素,那么我的感觉是它需要浏览器付出更多的努力,尽管我不知道它在实践中是如何工作的,我想知道更多。

存储元素引用比只存储id要高效得多,因为正如你所说,在对其执行操作时,可以避免查找


存储元素引用的缺点是,对元素的引用是关键所在,因此如果从DOM中删除元素,则必须确保也释放对它的引用,否则它将保留在内存中。如果这些元素始终存在于您的页面上,并且从未被删除,那也没关系,不过我建议使用卸载处理程序来释放您对这些元素的所有引用,以确保旧版本的IE不会做一些愚蠢的事情,比如在用户离开页面后仍保留这些元素。

,存储元素引用比只存储id要高效得多,因为正如您所说的,在对元素引用执行操作时可以避免查找


存储元素引用的缺点是,对元素的引用是关键所在,因此如果从DOM中删除元素,则必须确保也释放对它的引用,否则它将保留在内存中。如果这些元素始终存在于您的页面上,并且从未被删除,那很好,尽管我建议使用卸载处理程序来释放对元素的所有引用,只是为了确保旧版本的IE不会做一些愚蠢的事情,比如在用户离开页面后仍保留这些元素。

您不是在数组中存储元素,而是在DOM中存储对元素的引用。我倾向于存储对元素的引用,而不是存储其ID。

您不是在数组中存储元素,而是在DOM中存储对元素的引用。我倾向于存储对元素的引用而不是存储其ID。

您能简单解释一下对元素的引用是如何工作的吗?这是否意味着每次我进行DOM操作时,浏览器都需要更新这个引用?我的意思是,不一定要对元素本身进行更新?@Christophe:它只是对一个对象的引用,就像任何其他对象一样。var elm=document.getElementByIdfoo;var elm现在包含对id为foo的元素的引用。你可能听过指针这个词;引用就像一个指针。如果您保留对元素的引用,那么浏览器不应该有任何额外的工作,当然,在浏览器的封面下发生的事情因实现而异。IE的评论是因为IE的DOM对象与JS对象的垃圾收集方式不同,并且在这方面存在IE bug。您能简单解释一下对元素的引用是如何工作的吗?这是否意味着每次我进行DOM操作时,浏览器都需要更新这个引用?我的意思是,不一定要对元素本身进行更新?@Christophe:它只是对一个对象的引用,就像任何其他对象一样。var elm=document.getElementByIdfoo;var elm现在包含对id为foo的元素的引用。你可能听过指针这个词;引用就像一个指针。如果您保留对元素的引用,那么浏览器不应该有任何额外的工作,当然,在浏览器的封面下发生的事情因实现而异。IE的评论是因为IE的DOM对象与JS对象的垃圾收集方式不同,并且IE在这方面存在缺陷。