我现在有一个数组,我用下面的方式添加function addElements(elements){
var ul = $("#ul"); //准备添加元素的ul对象
ul .empty(); //先清空里面的元素
$.each(elements , function(i , v){
ul.append("<li>"+ v +"</li>");
});
}用上面的方式 动态添加元素。火狐还好点 ,但是IE就会卡死,因为elements数组的长度有5000以上。大家有没有更好的方式添加元素。
var ul = $("#ul"); //准备添加元素的ul对象
ul .empty(); //先清空里面的元素
$.each(elements , function(i , v){
ul.append("<li>"+ v +"</li>");
});
}用上面的方式 动态添加元素。火狐还好点 ,但是IE就会卡死,因为elements数组的长度有5000以上。大家有没有更好的方式添加元素。
解决方案 »
- 再抛百分求解决JS问题!
- jdbc连接数据库的时候master数据库和自建数据库的问题?
- 怎么在struts 1.3中修改struts-config action-mapping里input配置
- javascript的问题
- 使用hibernate插入大对象异常
- 帮忙,J2EE平台数据库的问题
- 关于多对一关联的问题 Exception in thread "main" org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
- 各位大哥,谁能帮我查出该IP(222.183.120.53)的来源,小女子愿千元酬谢!!!
- 比较怪的问题:如何通过已经获得的OutputStream把内容写到文件里面
- 急!请教ejb高手
- xfire下面的services配制文件是怎么用的
- DOM4J生成XML带冒号的问题。
<input type="button" id="button" value="check me" />
<ul id="ul"></ul>
</body><script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<script type="text/javascript">
var len = 5000;
var sel = $("#ul");
var currentversion = 0;
$("#button").click(function(){
var arry = new Array(); //模拟5000条数据
for(var i = 0 ; i < len; i++){
arry[i] = i ;
}
sel.empty();
insertIntoSelect(arry , ++currentversion);
});
function insertIntoSelect(arry , version){
if(arry.length > 0 && currentversion == version){
var option = arry.shift();
sel.append("<li>"+ option +"</li>");
window.setTimeout(function(){
insertIntoSelect(arry , version);
} , 20);
}
}
</script>
</html>
就是不要让这个循环独占这cpu , 每添加一个元素让程序停止几毫秒, 因为js没有线程,所以用递归 + setTimeout 来做了。这样做速度可能比以前更慢 ,但是浏览器不会卡死 ,而且流畅多了。