。大量的HTML字符串在IE 10中占用很长时间

时间:2014-03-01 05:54:41

标签: jquery html internet-explorer

我在使用某些jQuery代码时遇到了问题,而且我现在没有确切的代码,但我会尽力给出伪代码。我对javascript比较新,所以有些语法可能有误。

我正在为表中的每一列动态创建不同值的HTML列表,然后将它们放在单击列标题时打开的菜单中(如Excel中的表格一样)。所以我有一个字符串数组,我为每一列调用一行函数(有12个):

$(name of ul element).empty().append(myFunction(items, nColumnNum));

然后我调用的函数如下:

myFunction(items, nColumnNum) {
    var r = "";
    var i = 0;
    for (i = 0; i < items.length; i++)
    {
        r += "HTML with <li> tag with checkbox and label inside"
    }
    return r;

现在我已经做了一些基本的分析,我知道'myFunction'并不是那么久。需要很长时间的部分是'.append'函数调用。这在Firefox中速度非常快,但在IE 10中,当我处理'items'数组中的大约2200个项目时,大约需要1.5秒。由于有几列有这么多项目,而且我有12列,这需要很长时间。我试过单独附加每个列表元素(虽然我认为这不起作用)并且我尝试设置innerHTML而不是'.append',但它都不起作用。

IE引擎中是否存在某种类型的错误,如果是这样,是否有针对这种情况的解决方法?或者是否有更有效的方法来做到这一点?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

请找到与之相关的小提琴,在IE上也能正常使用。

让我们举一个有项目的例子

var items = [1,2,3,4,5,6,7,8,9,10,11,12,13];
items.length = 2200;

JS代码

$(document).ready(function(){
  $("#list_elements").empty().append(myFunction(items, 10));
});

function myFunction(items, nColumnNum) {
    var r = "";
    var i = 0;
    for (i = 0; i < items.length; i++)
    {
        r += "HTML with <li> tag with checkbox and label inside"
    }
    return r;
}

html代码:

<ul id="list_elements"></ul>

jsfiddle