以下代码的宗旨是将1000次访问元素改变为1次访问,性能优化了很多。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css" media="screen">
#div{
border: 1px solid #F00;
}
</style>
</head>
<body>
<input id="btn" type="button" value="哈哈哈" />
<div id="div">123</div>
<script>
var oBtn=document.getElementById("btn");
var oDiv=document.getElementById("div");
oBtn.οnclick=function(){
/*for(i=0;i<1000;i++){
oDiv.innerHTML=oDiv.innerHTML+"<input type='button' value='哈哈哈'/>";
}*/
//这一段循环,当数值设置的较低的时候,执行没有阻碍,一旦数值达到一定程度页面加载就会相当慢,甚至崩溃。原因是没循环一次,该操作就要访问一次元素div,循环1000次,就相当于访问了1000次,所以会卡。
var str="";
for(i=0;i<1000;i++){
str=str+"<input type='button' value='哈哈哈'/>";
}
oDiv.innerHTML=oDiv.innerHTML+str;
//定义一个空字符串,先执行完循环,然后再赋值给oDiv,整体只访问了一次div元素,整体的速度就加快了。
}
</script>
</body>
</html>