我有一个脚本需要 18 秒才能完成,因为它使用 HTML 数据填充了大约 300 个 DIV。下面的代码:
HTML:
<div id="window">
<div id="wall">
<div class="module">
<div>
<div class="face front"></div>
<div class="face back"></div>
</div>
</div>
</div>
</div>
Javascript:
for (i = 0; i < numModules-1; ++ i)
{
var $mod = $('.module:eq(0)').clone();
modLeft += modSize;
if (modLeft + modSize > $('#wall').width())
{
modLeft = 0;
modTop += modSize;
}
$mod.css({
left: modLeft,
top: modTop
}).appendTo('#wall');
}
$.getJSON('html_server.php?callback=?', function(data) {
var htmlCount = data.length;
for (i = 0; i < numModules /* 300 or more */; ++ i)
{
var pick = Math.floor(Math.random() * Math.floor(htmlCount/2)) * 2;
var contentFront = data[pick];
var contentBack = data[pick+1];
var modStyle = '';
var $mod = $('.module:eq(' + i + ')');
var $modFront = $mod.find('.front');
var $modBack = $mod.find('.back');
// Set HTML content on front & back of module
$modFront.html(contentFront);
$modBack.html(contentBack);
}
});
如果我注释掉这两个.html()
调用,运行时间会下降到大约 110 毫秒,所以这些显然是罪魁祸首。而且 HTML 内容不是很多,最多可能 300 字节的数据。
有什么建议吗?
编辑:添加了创建 DIV 的代码。也许我可以在 getJSON 回调中移动它,并在创建 HTML 时放入它们?那会有帮助吗?