首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么使用appendChild添加的DOM显示在浏览器上,而不显示在源代码中?

使用appendChild添加的DOM元素会显示在浏览器中,但不会显示在源代码中,这是因为DOM是浏览器解析HTML文档生成的内部表示树,与HTML源代码并不完全相同。以下是对这个问题的详细解释:

  1. DOM与HTML源代码的关系:DOM(文档对象模型)是一个树状结构,表示HTML文档的结构和内容。当浏览器加载HTML文档时,它会解析源代码,并将其转换为DOM树。DOM树由多个节点组成,包括元素节点、文本节点等,它们表示HTML文档中的不同部分。
  2. appendChild方法的作用:appendChild是DOM提供的方法之一,用于向父节点中添加子节点。通过调用appendChild方法,可以将一个DOM元素添加到文档中的指定位置。
  3. 源代码与DOM的差异:虽然DOM树是由源代码生成的,但它并不完全等同于源代码。DOM树是浏览器解析和处理源代码后生成的内部表示,用于方便浏览器操作和渲染。浏览器会根据DOM树来渲染页面,但这个过程并不会反映到源代码中。
  4. 源代码的静态特性:源代码是HTML文档的静态表现形式,是开发者编写和编辑的内容。它在页面加载和渲染时起到了关键作用,但并不会动态变化。因此,通过appendChild方法添加的DOM元素在浏览器中可以正确显示,但在源代码中并不会直接体现出来。

总之,使用appendChild方法添加的DOM元素会在浏览器中显示,但不会直接显示在源代码中。这是因为DOM树是浏览器内部生成的HTML文档表示,与源代码并不完全一致。这种设计使得开发者可以方便地操作和修改DOM,而不需要直接编辑源代码。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用Python手动搭建一个网站服务器,浏览器显示你想要展现内容

前言 公司网站开发,我们往往借助于Flask、Django等网站开发框架去提高网站开发效率。那么面试后端开发工程师时候,面试官可能就会问到网站开发底层原理是什么?...我们不止仅仅会使用框架开发,还需要知其所以然 今天领大家不借助任何框架基础上手动搭建一个资料查找网站 主要内容 TCP网络模型 正则表达式匹配资源 如何编写一个tcp server服务端 开始我们代码...可以使用Python自带一个通讯模型:socket python内置网络模型库tcp / udp import socket 为浏览器发送数据函数 1....向浏览器发送http数据 如果浏览器接收完http协议数据之后遇到了换行,自动将下面的数据转成网站内容body中去 response = 'HTTP/1.1 200 OK \r\n' response...+= '\r\n' # 构建你想要显示数据内容 response += 'hello world' 3.

2K30

浏览器请求与渲染全过程

重绘发生在GPU,以提高效率和性能。 7.合成与显示 最后,GPU合成各个图层,将最终像素呈现到屏幕为什么操作DOM慢?...增加、删除可见DOM元素: 当DOM树发生变化,如添加或删除可见元素时,浏览器需要重新计算渲染树受影响部分布局,以适应新DOM结构。这通常会导致回流发生。...每次迭代时,都会创建一个新li元素和一个文本节点,然后将文本节点添加到li元素,最后将li元素添加到ul元素。如果直接放在浏览器运行,它会产生很多次回流,那有什么办法可以减少回流呢?...(text) ul.appendChild(li); } ul.style.display = "block";//这样就只会产生一次回流 2.借助文档碎片 存放多个子节点立即插入到...DOM 文档碎片内部添加、删除或修改节点不会引起回流 所有操作完成后,整个文档碎片可以一次性被添加DOM,这样就只需要一次回流来反映所有变更 let ul = document.getElementById

10610

极意 · 代码性能优化之道

所以再次提醒:所有的质量都是建立可读性和可维护性之上保证可维护性基础建设高质量高性能代码,才是代码最佳实践。...避免全局变量 全局变量是脚本任何函数之外声明或定义变量。 这表明可以从特定脚本任何位置访问全局变量,不仅限于函数或块。...操作应该是先读取再操作 避免频繁DOM 元素读、写、读、写,要将读和写进行分离 7、批量操作 DOM 再重复描述一遍浏览器渲染队列机制:当我们修改了元素几何属性,导致浏览器触发重排或重绘时...DOM 节点创建和删除带来性能开销十分大,所以推荐这种用法。...因此,最好是创建副本(例如,使用 Array.from)后再迭代这个数组以添加、移动或删除 DOM 节点。

7610

JavaScript 编程精解 中文第三版 十九、项目:像素艺术编辑器

撰写本文时,这还不适用于所有浏览器DOM 构建 界面组件做主要事情之一是创建 DOM 结构。 我们再也不想直接使用冗长 DOM 方法,所以这里是elt函数一个稍微扩展版本。...dom; } 这个版本与我们第 16 章中使用版本之间主要区别在于,它将属性(property)分配给 DOM 节点,不是属性(attribute)。...但它确实需要应用状态额外字段。 我们将添加done数组来保留图片以前版本。 维护这个属性需要更复杂状态更新函数,它将图片添加到数组。 但我们希望存储每一个更改,而是一定时间量之后更改。...为什么这个很困难 浏览器技术是惊人。 它提供了一组强大界面积木,排版和操作方法,以及检查和调试应用工具。 你为浏览器编写软件可以几乎所有电脑和手机上运行。 与此同时,浏览器技术是荒谬。...开始这个练习之前,确保你有充足时间和耐心,并且不要因最初失败感到气馁。 大多数浏览器,当你选择绘图工具并快速图片拖动时,你不会得到一条闭合直线。

3K10

如何使JavaScript更高效

因此 Web 开发,重排不可避免,要保证脚本跑得飞快,就必须在保证相同整体效果前提下将重排保持最低限度。 浏览器可以选择脚本线程完成后进行重排,显示变化。... DOM 添加幸免于难、改变文本节点值、或者修改各种属性,都足以引起重排。多次连续地改变可能导致多次重排。...因此,总的来说,最好在一段未显示出来 DOM 树片段上进行多次改变,然后用一个单一操作把改变应用在文档 DOM 。...原因在于,如果另一个文档已经销毁,比如原来显示弹出窗现在这个窗口关闭了,当前文档中保存引用通常仍然会使其 DOM 树或者脚本环境 RAM 存在,哪怕文档本身已经不在加载状态了。...理论上来说,页面加载完成之后可以通过 SCRIPT 元素来加载额外脚本并通过 DOM 添加到文档。当前所有主流浏览器都支持这样做,但是它实际可能是浏览器请求不是立即加载脚本。

1.6K10

前端: 如何渲染十万条数据

,但是当我们快速滚动页面的时候,会发现页面出现闪屏或白屏现象 为什么会出现闪屏现象呢 大多数电脑显示刷新频率是60Hz,大概相当于每秒钟重绘60次;大多数电脑显示刷新频率是60Hz,大概相当于每秒钟重绘...60次 大多数浏览器都会对重绘操作加以限制,超过显示重绘频率,因为即使超过那个频率用户体验也不会有提升。...它能保证回调函数屏幕每一次刷新间隔只被执行一次,这样就不会引起丢帧现象。...DocumentFragments是DOM节点,但并不是DOM一部分,可以认为是存在内存,所以将子元素插入到文档片段时不会引起页面回流。...可以将要渲染节点,添加到碎片节点中,然后再将碎片节点,添加DOM,从而提高性能 。

2.7K22

前端性能优化小结

) Promise / Web Worker、Time Slicing(延迟执行,队列任务,线程阻塞) DOM操作 一般来说dom操作对页面卡顿影响虽不是最大但肯定是最常见,习惯使用 jquery 小伙伴肯定陌生...所以通常来看 repaint 代价要远小于 reflow, 速度也更快 CSS 使用 transform 和 opacity 属性更改来实现动画,这两个属性更改不会触发重排与重绘,它们是可以由合成器...DOM渲染顺序(选择性渲染Layout及Paint)tips:gif图片会持续触发 Paint 能放到 DOM 操作之外操作就放到外面,DOM 操作要尽量少 DOM 操作优化这一观点在网上已经很普及了...,很多例子都有比如遍历一个数组然后逐渐把内容添加DOM ,这里就推荐先遍历完数组,然后一次性 DOM 上操作。...; 大范围操作先把容器隐藏,在其中操作完成后,再显示 这是一个我刚接触前端时遇到一个优化办法,当时很不理解为什么 display=none 之后操作就算是性能优化了。

12710

Web 性能优化-页面重绘和回流(重排)

浏览器是如何渲染一个页面的 浏览器把获取到 HTML 代码解析成1个 DOM 树,HTML 每个 tag 都是 DOM1个节点,根节点是 document 对象。...DOM 树里包含了所有 HTML 标签,包括 display:none 隐藏标签,还有用 JS 动态添加元素等。...重绘与回流 当 render tree 一部分(或全部)因为元素规模尺寸、布局、显示/隐藏等改变需要重新构建,这个过程称作回流(reflow)。页面第一次加载时候,至少发生一次回流。...当 render tree 一些元素需要更新属性,而这些属性只是影响元素外观,风格,不会影响布局,比如 background-color,这个过程叫做重绘(repaint) 回流时候,浏览器会使...// 回流+重绘 浏览器 如果向上述代码那样,浏览器不停地回流+重绘,很可能性能开销非常大,实际浏览器会优化这些操作,将所有引起回流和重绘操作放入一个队列,等待队列达到一定数量或者时间间隔,就

1.1K20

前端硬核面试专题之 HTML 24 问

浏览器解析到该元素时,会暂停其他资源下载和处理,直到将该资源加载、编译、执行完毕,图片和框架等元素也如此,类似于将所指向资源嵌入当前标签内。这也是为什么将 js 脚本放在底部不是头部。...等造成页面回流; appendChildDOM 元素操作; font 类 style 修改; background 修改,注意着字面上可能以为是重绘,但是浏览器确实回流了,经过浏览器厂家优化...标准模式排版和 JS 运作模式都是以该浏览器支持最高标准运行。兼容模式,页面以宽松向后兼容方式显示,模拟老式浏览器行为以防止站点无法工作。 ---- HTML5 为什么只需要写 < !...HTML5 基于 SGML(标准通用标记语言(以下简称“通用标言”),因此不需要对 DTD 进行引用,但是需要 doctype 来规范浏览器行为(让浏览器按照它们应该方式来运行); HTML4.01...cookie 数据始终同源 http 请求携带(即使不需要),也会在浏览器和服务器间来回传递。

1.1K20

《JavaScript 模式》读书笔记(8)— DOM浏览器模式1

大家好,又见面了,我是你们朋友全栈君。   本书前面章节,我们主要集中关注于核心JavaScript(ECMAScript),并没有太多关注浏览器使用JavaScript模式。...考虑到浏览器存在很多前后矛盾主机对象和DOM实现,这种想法也是可以理解。很明显通过使用一些较好可以减少客户端脚本负担实践技巧,可以获益颇多。   ...这也是为什么使用一个好JavaScript类库(该类库可以抽象出不同浏览器区别)可以显著加快开发进度。   让我们来看看在访问和修改DOM树时推荐一些模式(主要是出于性能方面考虑)。...当将文档碎片添加DOM树时,不是将碎片本身添加DOM,而是将文档碎片内容添加DOM。该操作是十分方便。...这是十分方便,因为当事件关注节点之外发生时,回调事件函数实际并没有被调用。

90630

《JavaScript 模式》读书笔记(8)— DOM浏览器模式1

本书前面章节,我们主要集中关注于核心JavaScript(ECMAScript),并没有太多关注浏览器使用JavaScript模式。...考虑到浏览器存在很多前后矛盾主机对象和DOM实现,这种想法也是可以理解。很明显通过使用一些较好可以减少客户端脚本负担实践技巧,可以获益颇多。   ...这也是为什么使用一个好JavaScript类库(该类库可以抽象出不同浏览器区别)可以显著加快开发进度。   让我们来看看在访问和修改DOM树时推荐一些模式(主要是出于性能方面考虑)。...当将文档碎片添加DOM树时,不是将碎片本身添加DOM,而是将文档碎片内容添加DOM。该操作是十分方便。...这是十分方便,因为当事件关注节点之外发生时,回调事件函数实际并没有被调用。

84620

浏览器原理学习笔记05—浏览器页面渲染

浏览器开发者工具》一章详解。...前面章节《宏观视角下浏览器》和《浏览器页面渲染》讲过,DOM 树生成后还要经历布局、分层、绘制、合成、渲染等阶段后才能显示出漂亮页面,渲染流水线任意一帧生成方式,有 重排、重绘 和 合成 三种方式...(Web Workers 没有 DOM、CSSOM 环境) 避免强制同步布局 通过 DOM 接口执行元素添加或删除等操作后,为避免当前任务占用主线程太长时间,一般重新计算样式和布局操作是另外任务异步完成...Service Worker Web Worker 基础增加储存功能,解决了 Web Worker 每次执行完脚本后退出不保存结果导致重复执行问题。...将模板添加到影子 DOM shadowDOM.appendChild(content.cloneNode(true)) } }

1.5K199

虚拟滚动之原理及其封装

实际对于 DOM 性能测试这么做是不科学,因为 DOM 操作会引起浏览器回流(reflow)。...如果浏览器 reflow 执行时间远大于代码执行时间,会造成你时间计算完成之后,浏览器仍然卡顿。...笔者电脑,创建 10000 个带文本节点就需要 800ms+,笔者实际业务列表每个条数据都需要 20个左右节点。那么,实际单纯渲染10000条数据,理论最快得17s。 2....,并渲染到页面4.计算 startIndex 对应数据整个列表偏移位置 startOffset,并设置到列表 vList对象基本过程: 初始化(mixin) -> 添加数据(addData)...小结 虚拟dom成为主流今日,如果亲自去调查了解,你发现不了这么一个事实:习惯于从视图层取数据前端原来还大有人在。 视图层依赖domdom成为一种负担不得控制时候,你会发现很多人技穷了。

9.9K20

如何使用谷歌浏览器 Chrome 更好地调试

Google Chrome 开发人员工具中有多种功能和工具可供开发人员直接在浏览器编辑代码、测试和添加断点以检测问题,并更有效地调试代码。...getEventListeners() - 获取事件监听器 使用作为参数传递给它 DOM 对象调用 getEventListener 函数会返回该特定对象注册所有事件。...Chrome 允许你直接从控制台执行此操作,而无需使用 debug() 函数访问你源代码。只需控制台中调用它并将函数名称传递给它,它就会自动将调试器注入到函数,让你可以单步调试代码。...你可以通过单击“源”面板行号来添加它们。左键单击会自动添加断点,右键单击数字可以设置条件断点,这对于调试循环非常有用。...执行指针简单地移动到函数顶部。 DOM 元素添加断点(属性/模板更改) 有时你可能需要在有条件或动态更改 DOM 元素放置断点或调试器。

3.6K30

「前端进阶」高性能渲染十万条数据(时间分片)

前言 实际工作,我们很少会遇到一次性需要向页面插入大量数据情况,但是为了丰富我们知识体系,我们有必要了解并清楚当遇到大量数据时,如何才能在卡主页面的情况下渲染数据,以及其中背后原理。...因此,当你对着电脑屏幕什么也不做情况下,大多显示器也会以每秒60次频率正在不断更新屏幕图像。 为什么你感觉不到这个变化?...屏幕给你这种感觉是对,试想一下,如果刷新频率变成1次/秒,屏幕图像就会出现严重闪烁, 这样就很容易引起眼睛疲劳、酸痛和头晕目眩等症状。...大多数浏览器都会对重绘操作加以限制,超过显示重绘频率,因为即使超过那个频率用户体验也不会有提升。因此,最平滑动画最佳循环间隔是1000ms/60,约等于16.6ms。... setTimeoutdom进行操作,必须要等到屏幕下次绘制时才能更新到屏幕,如果两者步调不一致,就可能导致中间某一帧操作被跨越过去,直接更新下一帧元素,从而导致丢帧现象。

2.4K42

使用 shadow DOM

你所能看到只是一个 标签,实际Shadow DOM,包含来一系列按钮和其他控制器。...浏览器某些内置元素就是这样,例如,包含了不可访问 Shadow DOM。...如果你想将一个Shadow DOM添加到 custom element,可以 custom element构造函数添加如下实现(这往往也是最有用做法): let shadow = this.attachShadow...它包含一个图片 icon和一段文字,这个图片 icon用于页面上显示。每当 icon获取到焦点时,文字会在一个弹框显示,以提供更加详细信息。...添加到 Shadow root 最后,将所有创建元素添加到 Shadow root: // 将所创建元素添加到 Shadow DOM shadow.appendChild(style); shadow.appendChild

1.8K90

一段神奇监视 DOM 代码

通过使用此模块,只需将鼠标悬停在浏览器,即可快速查看DOM元素属性。基本它是一个即时检查器。 ? 将鼠标悬停在 DOM 元素上会显示其属性!...自己尝试一下 复制下面的整个代码块,并将其粘贴到浏览器 Web 控制台中。现在将鼠标悬停在你正在浏览任何网页。看到了什么?...从目标元素检索属性,将其简化为单个字符串,最后工具提示显示。...如何解析 DOM 对象属性 如何找到鼠标 X 和 Y 位置 如何获取文档滚动位置 了解不同浏览器行为方式 —— Edge vs....Safari 开源 你可以在这里【https://github.com/eddieherm/spyon】找到源代码,希望你能做得更好!也许你希望将其作为 IIFE 来实现,或者是去显示其他数据。

82310

DOM Core 与 HTML-DOM

比如DOM告诉JavaScript引擎如何在浏览器窗口中显示和操作XML创建标记(Tag)。...XML没有固定标记,只能通过自定义标记来描述数据形式和结构,不能显示。...HTML是将数据 和显示混在一起,XML则是将数据和显示分开来。那为什么使用DOM访问和操作HTML文档(即网页)呢?...HTML与 XHTML网页形成节点树(统称为HTML节点树)在结构与XML节点树一样,可以看做是一个符合DOMXML文档,因此可以使用实现了DOM程序语言(如JavaScript、PHP等)来访问和操作...不管是DOM Core还是HTML-DOM,我们使用JavaScript时候要注意浏览器之间兼容性,因为不同浏览器对这两类方法和属性支持可能不一样。

1.8K10
领券