对于ajax数据在页面中插入什么比innerHTML快?

时间:2010-09-17 04:20:10

标签: javascript asp.net ajax dom

我正在做ajax工作,其中web服务将返回数据并在客户端,我正在创建带有数据的html表。 我正在使用var(保存生成的html代码字符串),执行字符串连接以生成表,tr和td标记并将数据放入其中。然后我使用innerHTML将这个带有数据的html表放入div中。请注意我在这个动态HTML代码中应用内联css。

我面临的问题是Web服务将返回大量数据。我测试的是甚至在本地机器上花了大约10-12分钟来处理(连接,创建标签将数据放入表中,应用css)10000行。存储过程只需3-4秒即可返回数据。请指导我如何减少浏览器内处理时间?我是以某种错误的方式为速度而做的?或者是否有一些技术或者某种方法比innerHTML和字符串连接更快?

谢谢

3 个答案:

答案 0 :(得分:2)

首先创建一个元素然后将其附加到DOM后通常要快得多。试试这个:

if (document.createTextNode) {
    // Create the element
    var txtNode = document.createTextNode("Hello. This is a new node."); 
    // Append it to another object
    document.getElementById("mydiv").appendChild(txtNode);
}

答案 1 :(得分:1)

  

我测试的是甚至在本地机器上花了大约10-12分钟来处理(连接,创建标签将数据放入表中,应用css)10000行

这是在浏览器中显示的大量数据。特别是一旦你让它远程。

为什么你首先试图在浏览器上显示如此多的数据,我认为整个想法中有一些东西。

我建议您描述更多的情况,但是一旦您处理了在浏览器页面上显示的正常数据量,这可能会成为一个非问题。

答案 2 :(得分:1)

据说{p} innerHTML比DOM操作更快(我从未测试过它,但这是我在几个地方读过的)。此外,将字符串推入数组然后加入在IE上要比连接快得多。