<script src="https教程://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script type="text/jscript">
function go() {
var options = $("#ddl").select("options")
for (var i = 0; i < 5000; i++) {
var option = new option("text" + i, "value" + i);
options[0].add(option);
}
}
$(document).ready(function () {
go();
})
</script>
效果非常慢而且會卡死瀏覽器
解決方案是,我們先拼好html字串,一次解析,這樣處理會快很多,這樣先把字串儲存到記憶體就可以了,如下。
<script>
function go1() {
var i = 5000, html = new array(i);
while(i--) {
html[i] = ['<option value="value', i, '">text', i, '</option>'].join("");
}
$("#dd1").replacewith('<select id="dd1">' + html.join("") + '</select>');
}
function go2() {
var i = 5000;
var warp = document.createdocumentfragment();
while(i--) {
var option = document.createelement("option");
option.value = "value" + i;
option.innertext = "text" + i;
warp.appendchild(option);
}
$("#dd2").append(warp);
}
$(document).ready(function () {
var t = +(new date());
go1();
var t1 = +(new date()) - t;
var t = +(new date());
go2();
var t2 = +(new date()) - t;
alert([t1, t2]); // 460,710
})
</script>
</head>
<body>
<select id="dd1"></select>
<select id="dd2"></select>
</body>
</html>
測試結果
ie8下
使用拼串:460毫秒
使用片段:710毫秒