`

JavaScript AppendChild 引发的思考

 
阅读更多

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

var starttime = new Date();
for(i = 0 ; i < 100 ; i ++){
    document.body.innerHTML += "<input type='text' value='" + i + "'>";
}
alert(new Date() - starttime);

知道测试时间是比较长,大约"1000"多

appendChild: 

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); 

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

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); 
时间大约为”20“

甚至如果你有更快的话,

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); 

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

如:当一次性加载大量且复杂的网页元素时,用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>

 

 

分享到:
评论

相关推荐

    javascript使用appendChild追加节点实例

    利用JavaScript,我们可以操作DOM(文档对象模型)来改变页面上的元素,而appendchild是其中常用的DOM操作方法,用于在指定父节点的子节点列表的末尾添加一个新的子节点。本文将详细介绍appendChild方法的使用和一个...

    javascript appendChild,innerHTML,join性能比较代码

    在JavaScript中,向DOM(文档对象模型)动态添加元素是常见的操作,这通常涉及`appendChild()`、`innerHTML`和数组的`join()`等方法。这些方法各有优缺点,且在性能上有所不同。以下是对这些方法的详细说明: 1. `...

    详解javascript appendChild()的完整功能

    平时我们用appendChild的时候,都是向父级上添加子元素 appendChild的另一个功能是,先把元素从原有父级上删掉,然后添加元素到新的父级。(移除再添加)。 代码说明 &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head...

    js原生appendChild的bug解决心得分享.docx

    ### JavaScript原生appendChild方法的Bug解决心得 #### 一、问题背景 在Web开发中,经常需要通过JavaScript来动态操作...在实际开发中,灵活运用不同的循环结构和现代JavaScript特性能够帮助我们更高效地解决问题。

    js中AppendChild与insertBefore的用法详细解析.docx

    JavaScript 中的 AppendChild 和 InsertBefore 用法详细解析 在 JavaScript 中,appendChild 和 insertBefore 是两个常用的方法,用于在 DOM 中插入新的节点。但是,很多开发者对这两个方法的使用和区别不是很清楚...

    如何在框架(frame)页面之间使用appendChild()?

    在处理框架页面间交互时,JavaScript的`appendChild()`方法是一个非常实用的工具,它允许我们在DOM(文档对象模型)中添加新的元素。本篇文章将详细探讨如何在框架页面之间使用`appendChild()`。 首先,理解`...

    javaScript api

    JavaScript API 是一种重要的编程资源,它为开发者提供了与JavaScript语言交互的接口和工具。这个离线版的JavaScript API 指南,以CHM(Compiled Help Manual)格式提供,是开发者学习和查阅JavaScript相关功能和...

    javascript实例代码集

    JavaScript可以用来遍历、修改或添加DOM元素,例如通过`getElementById`、`querySelector`、`appendChild`等方法实现动态网页更新。 3. **事件处理**: JavaScript可以监听和响应用户或浏览器的事件,如点击、滚动、...

    使用javaScript增强交互效果

    在本文中,我们将深入探讨如何使用JavaScript来增强网站的用户体验,以实现更丰富的交互效果。 一、事件处理 JavaScript的核心在于事件处理。通过监听用户的行为,如点击按钮、滚动页面或填写表单,我们可以响应...

    JavaScript之appendChild、insertBefore和insertAfter使用说明

    在JavaScript中,DOM操作是构建动态网页的关键技术之一。`appendChild`、`insertBefore`以及非标准的`insertAfter`方法都是用于管理DOM树中节点关系的重要方法。下面我们将详细探讨这三个方法的功能、用法及实际应用...

    javascript特效原码大全

    JavaScript特效原码大全是一份集合了多种JavaScript编程技术实现的视觉效果代码库,涵盖了网页设计中的各种常见和创新特效。这些特效可能包括动画、交互、图表、导航菜单、图像处理、时间日期显示、滑块、轮播图、...

    JAVASCRIPT教案及案例

    例如,通过`document.getElementById`、`document.querySelector`等方法选择元素,`innerHTML`、`innerText`属性修改元素内容,`appendChild`、`removeChild`操作元素的添加和删除。 2. 事件处理:JavaScript可以...

    随书光盘+PDF JavaScript DOM编程艺术(第2版)-源代码2.5MB PDF114MB .zip

    例如,我们可以用`document.getElementById`方法获取特定ID的元素,或者用`appendChild`方法向页面添加新的元素。 在书中,作者会详细介绍如何利用JavaScript与DOM进行交互,这包括选取元素(如通过选择器API或...

    JavaScript详细资料及手册

    JavaScript是一种广泛应用于网页和网络应用的脚本语言,它在客户端运行,为用户提供动态交互体验。这份"JavaScript详细资料及手册"涵盖了JavaScript的核心概念、函数、DOM操作、jQuery库以及丰富的实例代码,对于...

    JavascriptAPI.rar_javascriptAPI手册_javascriptapi

    这份"JavascriptAPI.rar_javascriptAPI手册_javascriptapi"压缩包包含了帮助开发者深入理解和应用JavaScript API的重要资源,特别是"Javascript权威指南.chm"这本书籍的电子版,它是JavaScript学习者不可或缺的参考...

    javascript入门学习笔记

    异步JavaScript和XML(AJAX)允许我们在不刷新页面的情况下与服务器交换数据并更新部分网页内容。现代浏览器更多地使用Fetch API来代替XMLHttpRequest,Fetch提供了更简洁的接口和更好的错误处理机制。 六、ES6及...

    JAVASCRIPT程序设计基础教程课本案例代码

    在这个"JavaScript程序设计基础教程课本案例代码"中,我们将深入探讨JavaScript的基础概念、语法特性以及实际应用,帮助初学者建立坚实的基础。 首先,JavaScript的核心知识点包括变量、数据类型、控制结构和函数。...

Global site tag (gtag.js) - Google Analytics