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>

 

 

基于WebGL与Three.js的3D机房可视化:从建模到VR交互的完整实践 数据可视化是现代IT运维的核心技术,它将抽象数据转化为直观图形,帮助管理者洞察系统状态。其原理在于通过图形渲染引擎将多源数据融合并映射到视觉元素上,从而实现从数据到洞察的转化。这项技术的核心价值在于提升运维效率、降低决策门槛,并广泛应用于基础设施监控、网络拓扑展示和数字孪生等场景。在数据中心领域,结合WebGL和Three.js等前沿技术,能够构建出高保真的3D机房可视化系统,实现资产、动环、容量的全方位透明管理。通过VR技术的融入,更可打造沉浸式巡检与培训体验,这正是当前机房智能化运维的热点方向。 阅读详情

相关推荐

Qwen3.7-Max实战:SVG地理可视化、Three.js轻量集成与Tailwind协同工作流

SVG地图渲染、Three.js 3D集成和Tailwind CSS响应式布局是现代前端工程的三大基础能力。理解SVG DOM结构、Three.js渲染管线原理及CSS原子类语义映射,对构建政企级可视化系统至关重要。其技术价值在于实现2D矢量与3D场景的跨维协同、设计规范与代码逻辑的一致性收敛,以及长程任务中业务意图的稳定锚定。典型应用场景包括政务地理热力图、教育类3D交互课件、SaaS后台中的声明式3D预览等。本文基于Qwen3.7-Max在真实项目中的上岗实测,聚焦SVG地理信息工程化、Three.js

weixin_34216196的博客 337

Js动态加载CSS样式文件的2种方法

动态加载CSS文件,这个时常会用到,一般搞前端,我们最先想到的就是用JS来实现,的确,JS可以很方便的控制CSS样式表文件的动态插入,以下两种方法:使用一,使用这点采用了YUI插件中的一个方法,有效解决了各大浏览器的兼容性问题,主要是使用style.appendChild(document.createTextNode(styles));采用createTextNode将CSS代码添加到01 &l...

weixin_43079157的博客 1983

Three.js移动端Web开发实战:性能优化、交互适配与兼容性解决方案

WebGL作为现代Web端实现硬件加速3D图形的核心标准,其原理是通过JavaScript API直接调用设备的GPU进行渲染计算,从而在浏览器中实现高性能的交互式3D可视化。这一技术为电商展示、在线教育、数字孪生等应用场景提供了强大的视觉表现力基础。Three.js作为最流行的WebGL框架,封装了底层复杂性,让开发者能更高效地创建3D场景。然而,当3D应用从桌面端迁移至移动端时,移动设备在GPU算力、内存带宽、热功耗等方面的硬约束,以及触屏交互模式、不稳定网络环境等差异,带来了性能瓶颈、交互冲突和兼容性

weixin_34121282的博客 347

js动态添加style样式

var style = document.createElement('style') style.type = 'text/css' style.appendChild(document.createTextNode('input[type="checkbox"]:checked {\n' + ' /* background-position: -48px 0; */\n' + ' background: url(' + require('../../asse.

LLG 8680

B站网页美化插件指南:从安装配置到安全实践

浏览器扩展是一种能够增强网页功能与体验的轻量级软件模块,其核心原理是通过注入CSS样式和JavaScript脚本,在用户访问特定网站时修改其外观与交互行为。这项技术为前端开发者提供了实践Web技术、实现个性化定制的平台,其价值在于能显著提升用户的操作效率与视觉舒适度。在视频学习、内容消费等高频应用场景中,针对特定平台(如Bilibili)的样式优化与功能增强插件应运而生。本文聚焦于这类美化插件的安全部署与功能验证,深入探讨了如何通过**CSS样式注入**实现界面主题自定义,并强调了遵循**最小权限原则**以

weixin_30580341的博客 451

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

appendChild主要是用来追加节点插入到最后;循环的时候由于不停的搬家导致length 在改变,改用for的话开始的length已经被固定,问题就解决啦

appendChild()

divxhtmlhtmlieinputbutton appendChild() 方法在指定元素节点的最后一个子节点之后添加节点。 该方法返回新的子节点。 注意: appendChild()方法通常与document.createElement_x("div")或document.getElementByIdx_x("id")函数同用,表示先创建然后再添加。 appendChild()的参数不是

senlin1202的博客 1913

保姆级教程 | MS构建三层石墨后转成LAMMPS的data文件

喜欢的话记得一键三连~

baguette的博客 2951

Claude Fable 5与Three.js:AI生成完整3D网页游戏的实践与思考

AI代码生成技术正从局部代码补全演进到完整项目构建,其核心在于理解项目级上下文与叙事性指令。这一技术原理基于对复杂技术栈的深度学习和模式识别,能够生成结构化、可运行的项目骨架。其技术价值在于大幅降低项目冷启动门槛,将开发者从基础样板代码中解放出来。在Web 3D交互应用开发场景中,AI能够与Three.js等图形库深度结合,自动生成包含场景图、动画循环、基础交互的完整代码框架。本文以《Raccoon Heist》游戏为例,探讨Claude Fable 5如何生成从HTML结构到Three.js 3D逻辑的全

weixin_30301449的博客 342

Simulink小白必看:用Simscape轻松搭建二阶倒立摆模型(附完整参数配置)

本文为Simulink初学者提供了使用Simscape Multibody模块库,从零开始搭建二阶倒立摆非线性物理模型的完整实战教程。文章详细讲解了如何通过物理组件(如刚体、关节)直观建模,替代复杂的数学推导,并涵盖参数配置、仿真调试及模型线性化方法,帮助读者快速掌握这一高效的物理建模路径。

grpc6streamer的博客 1045

YOLOv8中Anchor-Based、Anchor-Free及样本分配策略

本文主要介绍yolov8中的anchor机制与样本分配策略的静态策略和动态策略

qq_52889317的博客 2211

php点击事件table,JavaScript_js生成动态表格并为每个单元格添加单击事件的方法,html: 复制代码 代码如下: <htm - phpStudy...

js生成动态表格并为每个单元格添加单击事件的方法html:Demo动态表格:script:function getColumnDetail(column){column.style.color = "blue"; //将被点击的单元格设置为蓝色alert(column.innerHTML); //弹出被点单元格里的内容}function setTable(trLineNumber,tdData){...

weixin_42509293的博客 357

随机森林模型及案例(Python)

1 集成模型简介 集成学习模型使用一系列弱学习器(也称为基础模型或基模型)进行学习,并将各个弱学习器的结果进行整合,从而获得比单个学习器更好的学习效果。 集成学习模型的常见算法有Bagging算法和Boosting算法两种。 Bagging算法的典型机器学习模型为随机森林模型,而Boosting算法的典型机器学习模型则为AdaBoost、GBDT、XGBoost和LightGBM模型。 1.1 Bagging算法简介 Bagging算法的原理类似投票,每个弱学习器都有一票,最终根据所有弱学习器的投

qq_42433311的博客 4万+

Python、JavaScript、C++实现猜数字游戏:多语言编程入门实战

编程入门阶段,理解核心概念如变量、循环、条件判断和输入输出处理是构建计算思维的基础。这些概念通过具体项目实践最能融会贯通,其中“猜数字”游戏因其逻辑清晰、涵盖面广,成为经典的教学案例。从技术原理看,不同语言在实现相同逻辑时,其语法特性、错误处理机制和运行环境差异显著,这直接影响开发效率和程序健壮性。例如,Python凭借try...except异常机制优雅处理输入验证,JavaScript依赖事件驱动和DOM操作构建交互界面,而C++则需要显式管理输入流和缓冲区。掌握这些差异对选择合适的技术栈、编写鲁棒代码

weixin_34405557的博客 293

2026华为OD机试(C语言)真题【E卷+A卷+B卷+C卷+D卷】目录+在线OJ

华为OD机试真题题库【E卷+A卷+B卷+C卷+D卷】目录,C语言实现。

MISAYAONE的博客 11万+

一文吃透 SAP IDoc 状态码:从 TEDS1 到 WE02 排障,再到 ABAP 自动化监控

在 SAP 集成场景里,IDoc 往往是最常见、也最容易被低估的一条生命线:采购订单、发票、主数据、库存移动……只要系统之间要稳定地交换结构化业务数据,IDoc 就经常登场。真正让人头疼的,并不是 IDoc 本身,而是它在链路里到底走到了哪一步、卡在了哪里、该找谁背锅。这篇文章把常用的 IDoc 状态码按出站、入站拆开讲清楚,并且把每个状态对应的真实世界故障现象、排查入口、以及可以落地的 ABAP 监控代码串起来,让你看到状态码就能想到动作。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 405

Video.js播放HLS流卡顿全链路排查与优化实战

流媒体技术在现代Web应用中扮演着关键角色,其核心原理是通过自适应码率(ABR)等技术,将视频内容分割成小片段(如m3u8索引和ts文件)进行传输,以应对动态变化的网络环境。这项技术的价值在于能够在不同带宽条件下提供连续、流畅的观看体验,广泛应用于在线教育、直播、点播等场景。然而,在实际工程实践中,实现稳定流畅的播放面临诸多挑战,尤其是使用Video.js播放HLS(m3u8)流时,卡顿问题频发。本文聚焦于这一典型痛点,深入剖析卡顿背后的多层“病灶”,涵盖网络层(如带宽抖动、丢包)、播放器层(缓冲区与ABR

weixin_34357928的博客 420

YOLO26改进 - C2PSA | C2PSA融合DiffAttention差分注意力:轻量级差分计算实现高效特征降噪,提升模型抗干扰能力

本文介绍了 DiffCLIP,一种将差分注意力机制集成到 CLIP 架构的视觉 - 语言模型,并将其应用于 YOLO26。差分注意力机制通过计算两个互补注意力分布的差值,抵消无关信息干扰。单头差分注意力将 Q 和 K 拆分,分别计算注意力分布后做差值融合;多头差分注意力则每个头独立执行差分操作后聚合输出。关键参数 λ 可动态调控噪声抵消强度。我们将 DiffAttention 代码集成到 YOLO26 中,替换原有模块。实验表明,改进后的 YOLO26 在图像 - 文本理解任务中表现出色。

魔改工程师的博客 601

前端面试锦集

基本面试: 做过最满意的项目是什么?项目背景?为什么要做这件事情?最终达到什么效果?你处于什么样的角色,起到了什么方面的作用?在项目中遇到什么技术问题?具体是如何解决的? 如果再做这个项目,你会在哪些方面进行改善? 基础扎实: IT行业,哪些发展好的同学都是具备扎实基础知识,如果理解计算机基础会更好,因为我们面临很多非前端计算问题的。 主动思考: 被动完成任务成长会很慢的,需要有自己的想法,而不是仅仅是完成任务的。 自动学习: 前端领域知识淘汰速度很快,需要经常学习新知识。 追溯深度: 遇到问题是多研究背.

Front小思的博客 6724

游戏引擎定制化:大厂如何玩转性能极限(大白话生动有趣版)

游戏大厂如何深度定制游戏引擎?本文系统解析了商业引擎的局限性及大厂定制化的核心诉求。主要内容包括: 大厂定制引擎的根本原因:性能瓶颈、差异化需求、自有生态整合等 主流引擎的优劣势对比及适用场景 定制化重点领域:渲染管线优化、物理系统重构、网络架构改造等 全流程定制方案:从需求分析到模块重构再到工具链开发 典型案例:如腾讯CF手游的渲染优化、原神的热更新系统等 文章指出,顶级游戏产品必须对引擎核心模块动刀,通过深度定制实现性能突破和创新功能开发。同时提供了风险规避建议和技术演进趋势,为游戏开发者提供了宝贵的实

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 634

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

前端三件套实战:从零构建火影忍者主题静态网站

静态网站是Web开发的基础形态,其核心原理是通过HTML、CSS和JavaScript三大基础技术的协同工作,构建无需服务器端动态生成、可直接由浏览器渲染的网页。从技术价值看,掌握原生三件套是理解现代前端框架底层机制、进行性能优化和构建可维护项目的基石。在实际应用场景中,无论是企业官网、产品展示页还是个人博客,静态网站都因其部署简单、性能优异而广泛应用。本文以火影忍者主题网站为例,深入解析如何运用HTML语义化标签、CSS Flexbox/Grid布局与动画、JavaScript DOM操作等核心技术,实现

weixin_34210740的博客 357

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

DOM树详解:从HTML解析到节点操作的完整认知地图

DOM(文档对象模型)是浏览器将HTML源码转化为可编程内存结构的核心机制,其本质是一棵动态、实时、由多种节点类型构成的树形数据结构。理解DOM树的构建过程——从词法分析、语法解析到文本节点注入与渲染树合成——是掌握前端交互逻辑的基础。DOM节点并非静态标签,而是具备nodeType、nodeName、childNodes等12个关键属性的JavaScript对象,其中ELEMENT_NODE和TEXT_NODE最常被操作。正确区分innerHTML、createElement和DocumentFragme

cuxiong8996的博客 651

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: 程序员技术练级攻略
下一篇: ExecutorService线程池
disablebb
博客等级 码龄18年 5粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值