当前位置: 首页 > news >正文

多种昆明网站建设空间网

多种昆明网站建设,空间网,做百度ssp的网站开发人,app网站开发的特点DOM (文档对象模型) 详解 一、DOM 基础概念 1. 定义与作用 DOM#xff08;Document Object Model#xff09;即文档对象模型#xff0c;是一种用于 HTML 和 XML 文档的编程接口。它将文档解析为一个由节点和对象组成的树状结构#xff0c;允许程序和脚本动态访问、修改文…DOM (文档对象模型) 详解 一、DOM 基础概念 1. 定义与作用 DOMDocument Object Model即文档对象模型是一种用于 HTML 和 XML 文档的编程接口。它将文档解析为一个由节点和对象组成的树状结构允许程序和脚本动态访问、修改文档的内容、结构和样式。 2. 核心特点 树形结构DOM 将文档表示为节点树每个节点可以有子节点。平台和语言无关DOM 可以被任何编程语言访问如 JavaScript、Python 等。动态交互通过 DOM程序可以实时改变文档的内容和结构。 3. 节点类型 DOM 树中的节点主要分为以下几种类型 元素节点Element Node表示 HTML 元素如 div、p 等。文本节点Text Node表示元素内的文本内容。属性节点Attribute Node表示元素的属性如 id、class 等。文档节点Document Node表示整个文档是 DOM 树的根节点。注释节点Comment Node表示 HTML 中的注释。 二、DOM 树结构 1. 节点关系 父节点Parent Node每个节点除根节点外都有一个父节点。子节点Child Node一个节点可以有零个或多个子节点。兄弟节点Sibling Node共享同一个父节点的节点互为兄弟节点。祖先节点Ancestor Node父节点的父节点依此类推。后代节点Descendant Node子节点的子节点依此类推。 2. 示例 HTML 与 DOM 树 !DOCTYPE html html headtitleDOM 示例/title /head bodydiv idcontainerh1Hello, DOM!/h1p classcontent这是一个 a href#DOM 示例/a。/p/div /body /html对应的简化 DOM 树结构 Document └── html (Element)├── head (Element)│ └── title (Element)│ └── DOM 示例 (Text)└── body (Element)└── div (Element, idcontainer)├── h1 (Element)│ └── Hello, DOM! (Text)└── p (Element, classcontent)├── 这是一个 (Text)└── a (Element, href#)└── DOM 示例 (Text)└── 。 (Text)三、JavaScript 中的 DOM 操作 1. 访问 DOM 元素 通过 ID 访问 const element document.getElementById(container);通过标签名访问 const paragraphs document.getElementsByTagName(p); // 返回 HTMLCollection 对象通过类名访问 const elements document.getElementsByClassName(content); // 返回 HTMLCollection 对象通过选择器访问 const element document.querySelector(#container p); // 返回匹配的第一个元素const elements document.querySelectorAll(p.content); // 返回 NodeList 对象2. 操作元素内容 修改文本内容 const heading document.querySelector(h1); heading.textContent 新标题;修改 HTML 内容 const container document.getElementById(container); container.innerHTML p新内容/p;3. 操作元素属性 获取属性值 const link document.querySelector(a); const href link.getAttribute(href);设置属性值 link.setAttribute(href, https://example.com); link.setAttribute(target, _blank);直接访问属性 link.href https://example.com; link.target _blank;4. 操作元素样式 内联样式 const element document.getElementById(container); element.style.backgroundColor lightblue; element.style.width 500px;类操作 element.classList.add(active); element.classList.remove(hidden); element.classList.toggle(highlight);5. 创建和修改元素 创建新元素 const newDiv document.createElement(div); newDiv.textContent 新创建的元素;添加子元素 const parent document.getElementById(container); parent.appendChild(newDiv);插入元素 const referenceElement document.querySelector(p); parent.insertBefore(newDiv, referenceElement);删除元素 parent.removeChild(referenceElement);替换元素 const newElement document.createElement(span); parent.replaceChild(newElement, referenceElement);6. 事件处理 事件监听 const button document.getElementById(myButton); button.addEventListener(click, function() {alert(按钮被点击了); });事件对象 button.addEventListener(click, function(event) {console.log(事件类型:, event.type);console.log(触发元素:, event.target); });事件冒泡与捕获 冒泡Bubbling事件从触发元素向上传播到父元素。捕获Capturing事件从文档根向下传播到触发元素。 // 使用捕获阶段 element.addEventListener(click, function() {// ... }, true);阻止事件传播 event.stopPropagation();阻止默认行为 event.preventDefault();四、DOM 性能优化 1. 减少 DOM 操作 批量修改 // 低效 const list document.getElementById(myList); for (let i 0; i 1000; i) {const item document.createElement(li);item.textContent Item ${i};list.appendChild(item); }// 高效 const fragment document.createDocumentFragment(); for (let i 0; i 1000; i) {const item document.createElement(li);item.textContent Item ${i};fragment.appendChild(item); } list.appendChild(fragment);2. 使用事件委托 // 为大量按钮添加事件 document.getElementById(buttonContainer).addEventListener(click, function(event) {if (event.target.tagName BUTTON) {console.log(按钮被点击:, event.target.textContent);} });3. 缓存 DOM 引用 // 低效 for (let i 0; i 1000; i) {document.getElementById(myElement).style.left i px; }// 高效 const element document.getElementById(myElement); for (let i 0; i 1000; i) {element.style.left i px; }4. 避免频繁重排和重绘 重排Reflow 当 DOM 的变化影响了元素的布局信息时浏览器需要重新计算元素的布局将其安放在界面中的正确位置。 重绘Repaint 当一个元素的外观发生改变但没有影响到布局信息时浏览器会将新样式应用到元素上。 优化建议 批量修改样式使用 documentFragment避免频繁读取布局信息使用 transform 和 opacity 进行动画 五、DOM 与 XML 1. XML DOM DOM 最初是为 XML 设计的同样适用于 HTML。XML DOM 提供了与 HTML DOM 类似的 API 来操作 XML 文档。 2. XML 解析示例 const xmlText booktitleJavaScript DOM/titleauthorJohn Doe/author/book; const parser new DOMParser(); const xmlDoc parser.parseFromString(xmlText, text/xml);const title xmlDoc.querySelector(title).textContent; console.log(书名:, title);六、DOM 标准 1. DOM 级别 DOM Level 11998 年发布定义了基本的 DOM 结构和操作。DOM Level 22000 年发布增加了事件模型、样式、遍历和范围等模块。DOM Level 32004 年发布增加了文档验证、加载和保存等功能。DOM Living StandardW3C 持续更新的 DOM 标准。 2. DOM API 分类 核心 DOM通用的 DOM 操作接口。HTML DOM专门针对 HTML 的扩展。SVG DOM针对 SVG 图形的扩展。XML DOM针对 XML 文档的扩展。 七、高级 DOM 技术 1. 节点遍历 const element document.getElementById(container); let node element.firstChild;while (node) {console.log(节点类型:, node.nodeType);console.log(节点内容:, node.textContent);node node.nextSibling; }2. 范围Range const range document.createRange(); range.selectNode(document.getElementById(myElement));// 复制范围内容 const fragment range.cloneContents(); document.body.appendChild(fragment);3. Mutation Observer 监听 DOM 变化的现代 API。 const observer new MutationObserver((mutations) {mutations.forEach((mutation) {console.log(DOM 变化类型:, mutation.type);}); });const options {childList: true,attributes: true,subtree: true };observer.observe(document.body, options);八、DOM 与性能监控 1. 使用 Performance API // 测量 DOM 操作时间 console.time(dom操作);// DOM 操作 const element document.createElement(div); document.body.appendChild(element);console.timeEnd(dom操作);2. Chrome DevTools 性能分析 使用 Performance 面板记录和分析页面性能。关注 Layout重排和 Paint重绘事件。 九、DOM 安全问题 1. XSS 攻击 恶意代码通过未过滤的用户输入注入到 DOM 中。防范措施对用户输入进行过滤和转义。 2. 安全编码实践 // 不安全 const userInput scriptalert(XSS);/script; document.getElementById(output).innerHTML userInput;// 安全 const textNode document.createTextNode(userInput); document.getElementById(output).appendChild(textNode);十、DOM 的未来发展 1. Web Components 使用 Shadow DOM 创建封装的组件。减少全局命名空间污染。 2. 虚拟 DOM React、Vue 等框架使用虚拟 DOM 提高性能。减少直接操作真实 DOM 的频率。 通过深入理解 DOM开发者可以更高效地操作网页内容优化性能并创建出交互性更强的 Web 应用。
http://www.zqtcl.cn/news/221449/

相关文章:

  • 大连中山网站建设网站在线qq代码
  • 南昌seo网站微商城网站建设如何
  • anker 网站建设手机可以做网站的服务器吗
  • 门户网站建设 报价没有网页快照对网站有什么影响
  • 陕西专业网站建设哪家好甜点网站里的新闻资讯怎么做
  • 邯郸企业网站团队h5微场景制作软件
  • 镇江建工建设集团网站泛微e8做网站门户
  • 适合友情链接的网站全球软件公司排行榜
  • 沈阳网站制作 600元网站飘动广告代码
  • 最先进的无锡网站建设wordpress调用 别的网站
  • 河南网站备案地址静安青岛网站建设
  • 烟台网站建设推荐企汇互联见效付款查看网站被百度收录
  • 做标签网站360街景地图怎么看
  • 深圳网站建设领先天津建设企业网站
  • 网站建设犭金手指C排名15温州 建网站的公司
  • 邢台建设银行官方网站公众号开发者密码是什么意思
  • 网站录入信息 前台查询功能怎么做营销网站主题有哪些内容
  • 网站SEO的评价触屏音乐网站源码
  • 网站开发u盘128够吗网站建设是固定资产嘛
  • 网站域名备案信息wordpress搜索文章内容
  • 出口退税在哪个网站做怎么在一起做网站上拿货
  • 网站友链查询传到网站根目录
  • 网站服务器端口设置北京专业网络直播制作
  • 可以免费做演播的听书网站南京企业自助建站
  • 软件下载类型网站怎么做长沙官网优化技术
  • 药品网站订单源码外贸网站建设服务器
  • 深圳网站制作07551免费开发网站
  • 如何直接用jsp做网站不写servletwordpress模板 单栏
  • 长沙网站建设哪个公司好设计公司网站 唐山
  • 原创小说手机网站制作需要多少钱郴州seo外包