JavaScript:document.getElementById 性能慢? [英] JavaScript: document.getElementById slow performance?
本文介绍了JavaScript:document.getElementById 性能慢?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在常见 CSS 元素上反复使用document.getElementById
.
如果我创建一个 全局数组
来存储我的所有 document.getElementById
元素而不是每次重新获取元素,是否会显着提高性能?>
示例,而不是:
document.getElementById("desc").setAttribute("href", "#");document.getElementById("desc").onclick = function() {...};document.getElementById("desc").style.textDecoration = "none"document.getElementById("asc").setAttribute("href", "#");document.getElementById("asc").onclick = function() {...};document.getElementById("asc").style.textDecoration = "none"...
简单地做:
var GlobalElementId = [];GlobalElementId ["desc"] = document.getElementById("desc");GlobalElementId ["asc"] = document.getElementById("asc");GlobalElementId [...] = document.getElementById(...);GlobalElementId ["desc"].setAttribute("href", "#");GlobalElementId ["desc"].onclick = function() {...};GlobalElementId ["desc"].style.textDecoration = "none"...
解决方案
所以所有是"的答案都困扰着我,所以我实际上是为了看看 getElementById 是否很慢!
以下是结果(页面上有 10,000 个元素):
IE8 getElementById:0.4844 毫秒
IE8 id 数组查找:0.0062 毫秒
Chrome getElementById:0.0039 毫秒
Chrome id 数组查找:0.0006 毫秒
Firefox 3.5 可与 chrome 相媲美.
每次函数调用半毫秒不会让我使用数组;)但也许在我没有安装的 IE6 上情况更糟.
这是我的脚本:
<头><script type="text/javascript">var numEles = 10000;var idx = {};功能测试(){生成元素();var t0 = (new Date()).getTime();var x = selectElementsById();var t1 = (new Date()).getTime();无功时间 = t1 - t0;生成索引();var t2 = (new Date()).getTime();var x = selectElementsWithIndex();var t3 = (new Date()).getTime();var idxTime = t3 - t2;var msg = "getElementById time = " + (time/numEles) + " ms (for one call)
"+ "索引时间 = " + (idxTime/numEles) + " ms (for one call)";警报(味精);}函数生成元素(){var d = document.getElementById("mainDiv");var str = [];for(var i=0;i头部><body onload="javascript:test();"><div id="mainDiv"/>