ul建立1000个li
2016-04-15 20:40
260 查看
最近看到的一个问题:如果让你在ul下建立1000个li,你会怎么做?
1、当时我想到的笨办法是利用循环添加子节点,如下例
当数目增长到10000的时候,出现了明显的时延
2、然后后来又想到,可以直接构造字符串,然后更替ul的innerHTML,如下例
当数目增至100000个的时候,才会出现明显时延
3、后来又看到网上说,join拼接字符串的效率要比str+=要高,因此,又采用join的做法对方法2做出了改进。
当数目增至1000000个的时候,才会出现明显时延
1、当时我想到的笨办法是利用循环添加子节点,如下例
当数目增长到10000的时候,出现了明显的时延
window.onload = function(){ var oUi = document.getElementsByTagName("ul"); //var oUi1 = oUi[0]; for(var i=0;i<10000;i++){ var oLi = document.createElement("li"); oLi.innerHTML = "li"; oUi[0].appendChild(oLi); } };
2、然后后来又想到,可以直接构造字符串,然后更替ul的innerHTML,如下例
当数目增至100000个的时候,才会出现明显时延
<script type="text/javascript"> window.onload = function(){ var oUi = document.getElementsByTagName("ul"); var str = ""; for(var i=0;i<100000;i++){ str += "<li>li</li>"; } oUi[0].innerHTML = str; } </script>
3、后来又看到网上说,join拼接字符串的效率要比str+=要高,因此,又采用join的做法对方法2做出了改进。
当数目增至1000000个的时候,才会出现明显时延
window.onload = function(){ var arr = new Array(); arr.push("<li>li"); for(var i=0;i<1000000;i++){ arr.push("li"); } arr.push("li</li>"); var oList = arr.join("</li><li>"); var oUi = document.getElementsByTagName("ul"); };
相关文章推荐
- Linux嵌入式之————网络编程socket
- 《VR入门系列教程》之22---GearVR SDK代码剖析
- paper 56 :机器学习中的算法:决策树模型组合之随机森林(Random Forest)
- 最长公共子序列(LCS)、最长递增子序列(LIS)、最长递增公共子序列(LICS)
- 22个值得收藏的android开源代码-UI篇
- Hibernate EhCache 二级缓存配置.pdf
- 控件抖动动画
- 《VR入门系列教程》之21---使用Unity开发GearVR应用
- 技术记录---杀死应用进程账号数据被清空问题
- NYOJ-499-迷宫
- 《VR入门系列教程》之20---使用Oculus移动端SDK
- php下foreach()错误提示Warning: Invalid argument supplied for foreach()
- 面试题:什么叫红黑树
- 查找算法——————二分搜索
- Spring实践:面向切面编程(AOP)
- EFI引导及GPT分区
- 了解四大主流浏览器内核
- Java 框架思路.doc
- 《VR入门系列教程》之19---GearVR开发初识
- sendBroadcast与sendStickyBroadcast的区别