如何在IE上提高getElementById()函数的速度或给出其他解决方案?

时间:2009-11-11 09:11:18

标签: javascript performance dom internet-explorer

我有一个项目使用Javascript解析json字符串并将数据放入div内容。

在这种情况下,所有itemname变量都是div的id。

如果变量i大约为900,我在 Firefox 3中运行此代码< 10ms ,但它在 IE 7上运行> 9s ,IE处理此代码比Firefox慢100倍

我不知道IE会发生什么?

如果我删除行 document.getElementById(itemname),它们的速度似乎相同。

根据我的主要问题是 document.getElementById()功能?

你能告诉我如何解决这个问题,以便在IE上增加这个代码吗?

提前感谢。

            var i = obj.items.length-2;
            hnxmessageid = obj.items[i+1].v;

            do{
                itemname = obj.items[i].n;
                itemvalue = obj.items[i].v;
                document.getElementByid(itemname);
                i--;
            }while(i>=0);

3 个答案:

答案 0 :(得分:1)

你真的注意到任何延迟吗?

gEBI本身非常快,我认为无论如何你都无法避免它。你能准确地提供你正在做的事吗?看起来你正在使用循环,但是你可以准确地发布你在循环中所做的事情,你的脚本的共同目标是什么?

答案 1 :(得分:0)

document.getElementByid(itemname)是在任何实际应用程序中从DOM中获取单个元素的最快方法,如果你确实看到一个问题,你需要重新考虑一下你的代码只需要对这个方法进行一些调用即可完成任何任务。如果您愿意,可以向您展示完整的问题,我可以向您展示一个示例

答案 2 :(得分:0)

至少缓存对文档的引用:

var doc = document;
for(;;) { 
   doc.getElementById(..);
}