昨天让同事用js搞了个浮动图片功能,这样就每次把些图片直接贴过来了,节省了篇长。但是看到代码中AppendChild,感觉以前和js同事交流过AppendChild和innerHtml性能方面的话题,嗯,找了下一些我的js收集册(也就是OneNote啦),呵呵
其实是这样的,下面进入AppendChild和innerHtml的性能随语:
直接看代码,就可以了。

innerHTML:
<body>
</body>
<script>
var starttime = new Date();
for(i = 0 ; i < 100 ; i ++){
    document.body.innerHTML += "<input type='text' value='" + i + "'>";
}
alert(new Date() - starttime);
</script>
知道测试时间是比较长,大约"1000"多

appendChild:
<body>
</body>
<script>
var starttime = new Date();
for(i = 0 ; i < 100 ; i ++){
    ds = document.createElement("input");
    ds.type = "text";
    ds.value = i;
    document.body.appendChild(ds);
}
alert(new Date() - starttime);
</script>

其实以上例子还可以在改进一下,因为拼接字符串,重新解析html方面的消耗,所以速度就下来。

innerHTML:
<body>
</body>
<script>
var starttime = new Date();
var html = []
for(i = 0 ; i < 100 ; i ++){
    html.push("<input type='text' value='")
    html.push(i)
    html.push("'>")
}
document.body.innerHTML = html.join("")
alert(new Date() - starttime);
</script>
时间大约为”20“

甚至如果你有更快的话,
<body>
</body>
<script>
var starttime = new Date();
var a = [];
for(i = 0 ; i < 100 ; i ++){
    a[i]= "<input type='text' value='" + i + "'>";
}

document.body.innerHTML  = a.join("");
alert(new Date() - starttime);
</script>

事实上,当不同情况下,速度之比是不同的,

如:当一次性加载大量且复杂的网页元素时,用innerHTML比appendChild()速度要快的

而当每次只加载几个网页元素,并且要频繁加载时,此时appendChild()比innerHTML就快了。Clear

最后附上浮动图片的代码:

<script>
function link$onmouseover(){
    var linkimg = this.linkimg;
    if(!linkimg){
        linkimg = document.createElement("img");
        with(linkimg){
            src = this.href;
            style.position = "absolute";
            style.left = this.style.left;
            style.top = this.style.top;
        }
        document.body.appendChild(linkimg);
        this.linkimg = linkimg;
    }
    linkimg.style.display = "";
}
function link$onmouseout(){
    var linkimg = this.linkimg;
    if(linkimg){
        linkimg.style.display = "none";
    }
}
</script> 
<a id="link1" href="图示地址"> link1 </a><br />
<a id="link2" href="imagesCAZ4JHCC.jpg"> link2 </a>
<script>
var link1 = document.getElementById("link1");
var link2 = document.getElementById("link2");
link1.onmouseover = link$onmouseover;
link1.onmouseout = link$onmouseout;
link2.onmouseover = link$onmouseover;
link2.onmouseout = link$onmouseout;
</script>

转载于:https://www.cnblogs.com/RuiLei/archive/2007/10/19/930079.html

JavaScript AppendChild 引发的思考相关推荐

  1. JAVA-OPTS引发的思考

    JAVA-OPTS引发的思考 我们在性能测试过程中,经常要修改应用的JAVA-OPTS参数.修改这些参数,不单单是修改这些数字,本着知其所以然的态度,我们要知道这些参数背后的意义. 常见的JAVA-O ...

  2. 一个小程序引发的思考

    既然是一个小程序引发的思考,那么我们就先看看这个小程序,看看他有何神奇之处: namespace ConsoleApplication1 {class Program{static void Main ...

  3. 由“递归遍历二叉树”引发的思考

    由"递归遍历二叉树"引发的思考 递归的用法我感觉自己已经掌握了,可是今天在递归遍历二叉树时,它又迷一样令我费解.我本人在算法这一块很薄弱,所以想把这个问题发出来,希望有大神能够为我 ...

  4. 由一行文本输入框引发的思考

      文章是关于React组件之表单单行文本输入框的一些思考.可能大家第一反应都是,不就是一行<input/>嘛,没什么特别的吧?如果说到输入框的值的话,可能圈子里上大多数封装好的React ...

  5. 由熊猫烧香引发的思考

    由熊猫烧香引发的思考 早期的计算机病毒诞生,作者是以技术炫耀为主,编写这类病毒需要更深入的了解系统及网络技术,开发功底也要更深厚.现阶段,一个合格的程序员,制造出具备破坏性的代码,已经不怎么难.甚至, ...

  6. Spring之LoadTimeWeaver——一个需求引发的思考---转

    原文地址:http://www.myexception.cn/software-architecture-design/602651.html Spring之LoadTimeWeaver--一个需求引 ...

  7. 由SecureCRT引发的思考和学习

    由SecureCRT引发的思考和学习 http://mp.weixin.qq.com/s?__biz=MzAxOTAzMDEwMA==&mid=2652500597&idx=1& ...

  8. C语言中递归什么时候能够省略return引发的思考:通过内联汇编解读C语言函数return的本质...

    C语言中递归什么时候能够省略return引发的思考:通过内联汇编解读C语言函数return的本质 事情的经过是这种,博主在用C写一个简单的业务时使用递归,因为粗心而忘了写return.结果发现返回的结 ...

  9. 由「Metaspace容量不足触发CMS GC」从而引发的思考

    转载自  由「Metaspace容量不足触发CMS GC」从而引发的思考 某天早上,毛老师在群里问「cat 上怎么看 gc」. 好好的一个群 看到有 GC 的问题,立马做出小鸡搓手状. 之后毛老师发来 ...

最新文章

  1. python怎么读取txt文件数据保存数组中-python将txt等文件中的数据读为numpy数组的方法...
  2. Oracle监听器Server端与Client端配置实例
  3. 《NIOSII那些事儿》rev7.0 PDF版本发布
  4. 数据结构-栈在括号匹配中的应用
  5. 单片机c语言位运算写法,单片机与嵌入式系统中C语言的位运算小记
  6. 前端学习(926):淘宝flexiblejs源码分析之核心原理
  7. baidumap vue 判断范围_vue 数据渲染
  8. HTML,,,音乐,html embed用法
  9. 20145326蔡馨熤《网络对抗》——信息搜集与漏洞扫描
  10. 20155315 2016-2017-2 实验二《Java面向对象程序设计》实验报告
  11. SpringMVC路径配置
  12. Html加水印和禁用复制和右键(jquery.watermark.js)
  13. java几次,java兑现限制用户几次登录
  14. undo log、rollback segment
  15. python 生成word目录
  16. 高冷一字id_lol高冷而有诗意的id
  17. Jquery事件大全
  18. Tomcat 面试题
  19. leetcode_1579. 保证图可完全遍历
  20. STM32有关I2S录音有噪声噼里啪啦及其他应用注意PCM1808

热门文章

  1. 关于站库分离渗透思考总结
  2. 基于OpenCV的图像阴影去除,你会吗?
  3. HTML DOM getElementsByName() 方法
  4. 生产中的12种容器镜像扫描最佳实践
  5. Apache - No space left on device / Failed to create proxy Mutex
  6. Nginx 错误10013: An attempt was made to access a socket in a way forbidden
  7. python3爬虫初探(四)之文件保存
  8. submit与execute区别
  9. jQuery插件 -- Cookie插件jquery.cookie.js(转)
  10. 阿里云云效功能升级,支持快速创建多个应用的独立测试环境