0

我有一段代码循环并将数据附加到 html 表

for(var i = 0; i < iRowCount; i++)
    {
        var sTempVal = aAdditionValues[i];
        var iStartColumn = 0;
        var iIndex = 0;

        var aTempVal = sTempVal.split("");          
        aTempVal.reverse();
        for(var r = iColCount - 1; r > 0; r--)
        {
            $("#additionTable tr:eq("+i+") td:eq("+r+")").append(aTempVal[iIndex]);             
            iIndex++;
        }
        iStartColumn = 0;
        iIndex = 0;
    }

该数组aAdditionValues[i];只是一个数字数组。

我可以实施任何性能增强吗?

4

4 回答 4

2

现在,您在每个循环都向 DOM 添加一些东西,这是非常低效的。在将其添加到 DOM 之前,首先创建要在 JavaScript 中插入的对象,将其插入到一个事件中。这将最大限度地减少重新绘制文档所需的计算。

于 2013-03-07T09:44:56.313 回答
1

小改进:您至少可以摆脱aTempVal.reverse();并从头开始循环。

还要删除iStartColumn您没有更改值。

于 2013-03-07T09:47:08.720 回答
1

由于您操作现有表格的某些单元格,因此没有太大的改进空间。我建议至少缓存 jquery 选择器:

var $table = $('#additionTable'); // outside the loop ofc
$("tr:eq("+i+") td:eq("+r+")", $table).append(/* ... */);
于 2013-03-07T09:49:23.023 回答
1

每次向 DOM 追加内容时,都会重新构建它,这会占用大量资源。通过填充它会更快地创建表,createElement("table")然后才做一个append

于 2013-03-07T09:49:54.707 回答