目前我有一个循环在每次迭代中更新 DOM;我知道这是一种不好的做法,您应该尽可能少地更新 DOM 以提高速度。
所以我想知道如何编辑下面的内容,以便我可以将所有元素存储在一个元素或其他元素中,然后在循环结束后执行单个 DOM 添加。
这是循环..
for (var i = spot; i < spot + batchSize && i < cats.options.length; i++) {
// Check if the cat is selected
if (cats.options[i].selected == true) {
// Set this category's values to some variables
var cat_id = cats.options[i].getAttribute('value');
var cat_name = cats.options[i].text;
if (checkCatSICAdd(cat_id) === false) {
// Now we create the new element
var new_option = document.createElement('option');
// Add attribute
new_option.setAttribute('value',cat_id);
// Create text node
var new_text_node = document.createTextNode(cat_name);
// Append new text node to new option element we created
new_option.appendChild(new_text_node);
// Append new option tag to select list
sel_cats.appendChild(new_option);
} else {
failed++;
}
}
}
在循环中使用 DOM 元素的速度很慢 - 无论您是否将它们附加到文档中。将它们附加到最后会快一点,因为只需要重绘,但仍然很慢。
正确的方法是生成一个包含 HTML 的普通旧字符串,并使用以下命令将该字符串附加到 DOMinnerHTML
DOM 元素的属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)