我正在使用带有DataTable插件的JQuery,现在在以下代码行中遇到了性能问题。
aLocalData[jInner] = nTds[j].innerHTML; // jquery.dataTables.js:2220
我有一个ajax调用,返回的结果是HTML格式的字符串。我将它们转换为HTML节点,这部分没问题。
var $result = $('<div/>').html(result).find("*:first");
// simlar to $result=$(result) but much more faster in Fx
然后我启用了将普通表格转换为可排序数据表的结果。在Firefox中速度可以接受(大约900行需要4秒),但在IE8中速度不可接受(需要超过100秒)。
我使用内置分析器进行了深入检查,并发现上述单行代码占用了99.9%的时间,我该如何加快速度?有什么我错过的吗?
nTrs = oSettings.nTable.getElementsByTagName('tbody')[0].childNodes;
for ( i=0, iLen=nTrs.length ; i<iLen ; i++ )
{
if ( nTrs[i].nodeName == "TR" )
{
iThisIndex = oSettings.aoData.length;
oSettings.aoData.push( {
"nTr": nTrs[i],
"_iId": oSettings.iNextId++,
"_aData": [],
"_anHidden": [],
"_sRowStripe": ''
} );
oSettings.aiDisplayMaster.push( iThisIndex );
aLocalData = oSettings.aoData[iThisIndex]._aData;
nTds = nTrs[i].childNodes;
jInner = 0;
for ( j=0, jLen=nTds.length ; j<jLen ; j++ )
{
if ( nTds[j].nodeName == "TD" )
{
aLocalData[jInner] = nTds[j].innerHTML; // jquery.dataTables.js:2220
jInner++;
}
}
}
}
var result = nTds[j].innerHTML;
会对性能产生什么影响?(暂不考虑是否会导致错误) - Nick Craver