一个完整的HTML对象是什么样的,如何生成?

对html对象,首先要先提到node节点,node是一个接口,许多dom类型从这个接口继承,并允许类似地处理(或测试)这些各种类型。有那些接口重node继承其方法和属性?先看看本文章吧。apache php mysql

为何写这篇文章?

你可能做Web开发已经有一段时间,你是否有想过下列问题呢?
为什么p元素甚至是所有的html元素都可以使用addEventListener来添加事件呢?
为什么每个DOM节点都有parentNode、firstChild、nodeType等属性呢?
为什么每个DOM元素都有className、classList、innerHTML等属性呢?
为什么有些DOM元素有accessKey、contentEditable、isContentEditable等属性呢?
为什么每个DOM元素都有onclick、ondblclick、ondrag等属性?
本文就是来解答这些简单而又不“简单”的问题。

EventTarget

定义

EventTarget 是一个由可以接收事件的对象实现的接口,并且可以为它们创建侦听器。

作用

Element,document 和 window 是最常见的事件目标,但是其他对象也可以是事件目标,比如XMLHttpRequest,AudioNode,AudioContext 等等。
许多事件目标(包括元素,文档和 window)还支持通过 onXXX(如onclick) 属性和属性设置事件处理程序。

该接口的方法

EventTarget.addEventListener()

在EventTarget上注册特定事件类型的事件处理程序。

立即学习“前端免费学习笔记(深入)”;

EventTarget.removeEventListener()

EventTarget中删除事件侦听器。

EventTarget.dispatchEvent()

将事件分派到此EventTarget。

我们自己实现EventTarget

var EventTarget = function() {  this.listeners = {};};EventTarget.prototype.listeners = null;EventTarget.prototype.addEventListener = function(type, callback) {  if (!(type in this.listeners)) {    this.listeners[type] = [];  }  this.listeners[type].push(callback);};EventTarget.prototype.removeEventListener = function(type, callback) {  if (!(type in this.listeners)) {    return;  }  var stack = this.listeners[type];  for (var i = 0, l = stack.length; i < l; i++) {    if (stack[i] === callback){      stack.splice(i, 1);      return;    }  }};EventTarget.prototype.dispatchEvent = function(event) {  if (!(event.type in this.listeners)) {    return true;  }  var stack = this.listeners[event.type].slice();  for (var i = 0, l = stack.length; i < l; i++) {    stack[i].call(this, event);  }  return !event.defaultPrevented;};

Node

定义

Node是一个接口,许多DOM类型从这个接口继承,并允许类似地处理(或测试)这些各种类型。Node是一个接口,许多DOM类型从这个接口继承,并允许类似地处理(或测试)这些各种类型。

有那些接口重Node继承其方法和属性?

Document, Element, CharacterData (which Text, Comment, and CDATASection inherit), ProcessingInstruction, DocumentFragment, DocumentType, Notation, Entity, EntityReference
PS:在方法和属性不相关的特定情况下,这些接口可能返回null。它们可能会抛出异常 – 例如,当将子节点添加到不允许子节点存在的节点时。

接口相关的属性和方法

属性

Node.baseURI

返回一个表示base URL的DOMString。不同语言中的base URL的概念都不一样。 在HTML中,base URL表示协议和域名,以及一直到最后一个’/’之前的文件目录。

Node.childNodes

返回一个包含了该节点所有子节点的实时的NodeList。NodeList 是“实时的”意思是,如果该节点的子节点发生了变化,NodeList对象就会自动更新。

Node.firstChild

返回该节点的第一个子节点,如果该节点没有子节点则返回null。

Node.lastChild

返回该节点的最后一个子节点,如果该节点没有子节点则返回null。
此处省略若干Node接口属性,更多属性查看这里。

方法

那么重点来了!
重点:从其父类EventTarget继承了addEventListener、removeEventListener、dispatchEvent等方法。

Node.appendChild()

将一个节点添加到指定父节点的子节点列表末尾。

Node.contains()

返回的是一个布尔值,来表示传入的节点是否为该节点的后代节点。

Node.cloneNode()

返回调用该方法的节点的一个副本。
此处省略若干Node接口方法,更多方法查看这里。

Element

说明

Element是非常通用的基类,所有 Document对象下的对象都继承它。这个接口描述了所有相同种类的元素所普遍具有的方法和属性。 这些继承自Element并且增加了一些额外功能的接口描述了具体的行为。
PS:HTMLElement 接口是所有HTML元素的基础接口, 而 SVGElement 接口是所有SVG元素的基本接口。
在web以外的语言,像 XUL 可以通过 XULElement 的API,也能实现它。

属性

所有属性继承至它的祖先接口 Node, 和它所扩展的接口 EventTarget, 并且从以下部分继承了属性ParentNode, ChildNode, NonDocumentTypeChildNode, 和Animatable.

Element.assignedSlot

返回元素对应的 HTMLSlotElement 接口

Element.attributes

返回一个与该元素相关的所有属性集合NamedNodeMap

Element.classList

返回该元素包含的class属性是一个DOMTokenList.

Element.className

它是一个 DOMString 表示这个元素的class.
此处省略若干Element接口属性,更多方法查看这里。

方法

那么重点来了!
从它的父类(Node)和它父类的父类(EventTarget)继承方法,并实现parentNode、ChildNode、NonDocumentTypeChildNode、Animatable。
此处省略若干Element接口方法,更多方法查看这里。

Element.closest()

方法用来获取匹配特定选择器且离当前元素最近的祖先元素(也可以是当前元素本身)。如果匹配不到,则返回 null。

Element.getAttribute()

返回元素上一个指定的属性值。如果指定的属性不存在,则返回  null 或 “” (空字符串)。

Element.getElementsByClassName()

参数中给出类的列表,返回一个动态的 HTMLCollection ,这里面包含了所有持有这些类的后代元素。
此处省略若干Element接口方法,更多方法查看这里。

HTMLElement

作用

HTMLElement 接口表示所有的 HTML 元素。一些HTML元素直接实现了HTMLElement接口,其它的间接实现HTMLElement接口。

属性

那么重点来了!
继承自父接口Element和 GlobalEventHandlers的属性。  
HTMLElement.accessKey    DOMString    获取/设置元素访问的快捷键
HTMLElement.accessKeyLabel    DOMString    返回一个包含元素访问的快捷键的字符串(只读)
HTMLElement.contentEditable    DOMString    获取/设置元素的可编辑状态
HTMLElement.isContentEditable Boolean    表明元素的内容是否可编辑(只读)
此处省略若干HTMLElement接口属性,更多方法查看这里。

Event handlers

HTMLElement.onTouchStart
HTMLElement.onTouchEnd
HTMLElement.onTouchMove
HTMLElement.onTouchEnter
HTMLElement.onTouchLeave
HTMLElement.onTouchCancel

方法

HTMLElement.blur()    void    元素失去焦点
HTMLElement.click()    void    触发元素的点击事件
HTMLElement.focus()    void    元素获得焦点
HTMLElement.forceSpellCheck()     void

GlobalEventHandlers

定义

GlobalEventHandlers接口描述了事件处理程序像HTMLElement常见的几个接口,文件,窗口,或WorkerGlobalScope Web Workers。这些接口可以实现更多的事件处理程序。

属性

GlobalEventHandlers.onabort

中断事件。

GlobalEventHandlers.onblur

失去焦点事件。

GlobalEventHandlers.onfocus

获取焦点事件。
此处省略若干GlobalEventHandlers接口属性,更多方法查看这里。

元素接口

该接口用于创建对应的元素。
如:
HTMLpElement 接口提供了一些特殊属性(它也继承了通常的 HTMLElement 接口)来操作p元素。
HTMLFormElement接口可以创建或者修改

以上就是一个完整的HTML对象是什么样的,如何生成?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1546414.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
HTML body标签中的相关标签2
上一篇 2025年12月21日 18:11:35
HTML5有哪些新特性和新标签?分享HTML5 JS新特性
下一篇 2025年12月21日 18:11:58

相关推荐

  • 修复Django电商项目中AJAX过滤产品列表图片不显示问题

    在Django电商项目中,当使用AJAX动态加载过滤后的产品列表时,常遇到图片无法正常显示的问题。这通常是由于前端模板中图片加载方式(如data-setbg属性结合JavaScript库)与AJAX动态内容更新机制不兼容所致。解决方案是直接在AJAX返回的HTML中使用标准的标签来渲染图片,确保浏览…

    2026年5月10日
    000
  • 修复点击时按钮抖动:CSS垂直对齐实践

    本文探讨了在Web开发中,交互式按钮(如播放/暂停按钮)在点击时发生意外垂直位移的问题。通过分析CSS样式变化对元素布局的影响,我们发现这是由于按钮不同状态下的边框样式和内边距改变,以及默认的垂直对齐行为共同作用所致。核心解决方案是利用CSS的vertical-align属性,将其设置为middle…

    2026年5月10日
    100
  • 如何在HTML中插入表单元素_HTML表单控件与输入类型使用指南

    HTML表单通过标签构建,包含action和method属性定义数据提交目标与方式,常用input类型如text、password、email等适配不同输入需求,配合label、required、placeholder提升可用性,结合textarea、select、button等控件实现完整交互,是…

    2026年5月10日
    100
  • 前端缓存策略与JavaScript存储管理

    根据数据特性选择合适的存储方式并制定清晰的读写与清理逻辑,能显著提升前端性能;合理运用Cookie、localStorage、sessionStorage、IndexedDB及Cache API,结合缓存策略与定期清理机制,可在保证用户体验的同时避免安全与性能隐患。 前端缓存和JavaScript存…

    2026年5月10日
    200
  • HTML5网页如何实现手势操作 HTML5网页移动端交互的处理技巧

    首先利用原生touch事件实现滑动判断,再通过preventDefault解决滚动冲突,接着引入Hammer.js处理复杂手势,最后通过优化点击区域、避免事件冲突和增加视觉反馈提升体验。 在移动端浏览器中,HTML5网页可以通过触摸事件实现手势操作,提升用户体验。虽然原生JavaScript提供了基…

    2026年5月10日
    000
  • JavaScript 闭包:理解闭包原理与内存泄漏问题

    闭包是函数访问其外部作用域变量的能力,即使外部函数已执行完毕。如 inner 函数引用 outer 中的 count,形成闭包,使变量持久存在。闭包本身无害,但可能因延长变量生命周期导致内存泄漏,例如事件监听器引用大对象时。若未及时清理 DOM 事件或定时器,闭包会阻止垃圾回收,造成内存占用过高。解…

    2026年5月10日
    100
  • JavaScript 动态菜单点击高亮效果实现教程

    本教程详细介绍了如何使用 JavaScript 实现动态菜单的点击高亮功能。通过事件委托和状态管理,当用户点击菜单项时,被点击项会高亮显示(绿色),同时其他菜单项恢复默认样式(白色)。这种方法避免了不必要的DOM操作,提高了性能和代码可维护性,确保了无论点击方向如何,功能都能稳定运行。 动态菜单高亮…

    2026年5月10日
    200
  • html5怎么画实线_HTML5用CSS border-style:solid画元素实线边框【绘制】

    可通过CSS的border-style属性设为solid添加实线边框:一、内联样式用border:2px solid #000;二、内部样式表统一设置如div{border:1px solid #333};三、外部CSS文件定义.my-box{border:3px solid red}并引入;四、单…

    2026年5月10日
    400
  • JavaScript函数中插入加载动画(Spinner)的正确方法

    本文旨在解决在JavaScript函数中插入加载动画(Spinner)时遇到的异步问题。通过引入async/await和Promise.all,确保在数据处理完成前后正确显示和隐藏加载动画,提升用户体验。我们将提供两种实现方案,并详细解释其原理和优势。 在Web开发中,当执行耗时操作时,显示加载动画…

    2026年5月10日
    100
  • 动态更新圆形进度条:JavaScript成绩计算器集成指南

    本文档旨在指导开发者如何将JavaScript成绩计算系统与动态圆形进度条集成,实现可视化展示平均成绩。我们将详细讲解如何修改现有的JavaScript代码,使其在计算出平均分后,能够动态更新圆形进度条的进度,从而提供更直观的用户体验。本文档包含详细的代码示例和注意事项,帮助开发者轻松实现这一功能。…

    2026年5月10日
    000
  • JavaScript计算器开发:解决数值显示与初始化问题

    本教程深入探讨了使用JavaScript构建计算器时常见的数值显示异常问题,特别是由于类属性未初始化导致的`Cannot read properties of undefined`错误。我们将详细分析问题根源,并通过在构造函数中调用初始化方法来解决该问题,同时优化显示逻辑,确保计算器功能稳定且界面显…

    2026年5月10日
    000
  • 使用 Ajax 和 FormData 实现文件上传及文本数据提交的完整教程

    本文旨在解决在使用 Ajax 和 FormData 进行文件上传时,遇到的 $_POST 和 $_FILES 为空的问题。通过详细的代码示例和解释,我们将展示如何正确地构建 FormData 对象,并通过 Ajax 将文件和文本数据发送到服务器端,同时避免常见的错误配置,确保数据能够成功地被 PHP…

    2026年5月10日
    000
  • JavaScript 高效判断页面所有复选框状态的技巧与实践

    本文旨在提供一套高效且专业的javascript方法,用于判断网页中所有复选框的选中状态。我们将探讨如何利用`array.some()`快速确定是否有未选中的复选框(进而判断是否全部选中),以及如何使用`array.filter()`统计选中和未选中的复选框数量。通过优化dom元素选择和数组操作,提…

    2026年5月10日
    100
  • 解决Persistent UTM代码导致链接意外添加问号的问题

    本文旨在解决在使用JavaScript持久化UTM参数时,链接在没有UTM参数的情况下被意外添加问号的问题。通过分析问题代码,找出错误原因,并提供修正后的代码示例,确保只有当存在UTM参数时,链接才会被添加相应的参数。同时,强调了代码的健壮性和可维护性,避免不必要的修改和潜在的错误。 在使用Java…

    2026年5月10日
    200
  • html标签如何读_HTML标签(语义化/结构)阅读与理解方法

    答案是掌握HTML标签的语义化含义与结构作用。理解HTML需从语义化入手,使用如article、nav、header等标签准确表达内容意义,提升可访问性、SEO和代码可维护性;阅读时应从外到内分析结构,识别页面骨架,区分语义标签与非语义标签(如div、span)的合理使用场景,避免仅凭外观选择标签,…

    2026年5月10日
    000
  • 从 JavaScript 获取 URL 并在 PHP DataGrid 中使用

    本文档旨在指导开发者如何从 JavaScript 函数中获取 URL,并将其动态应用于 PHP DataGrid。通过前端 JavaScript 动态生成 API 地址,并将其传递给后端的 PHP DataGrid,实现数据根据用户会话动态加载。 动态配置 DataGrid 的 URL 在构建动态 …

    2026年5月10日
    100
  • JavaScript 中使用多个 querySelector 更新页面元素

    本文旨在讲解如何在 JavaScript 的 if 语句中使用多个 querySelector 来更新不同的页面元素,并提供示例代码和注意事项,帮助开发者理解并应用此技术。通过该方法,可以根据特定条件动态修改页面内容,提升用户体验。 使用 querySelector 在 if 语句中更新多个元素 在…

    2026年5月10日
    100
  • HTML5代码如何制作3D效果 HTML5代码中WebGL的入门实例

    最核心的技术是WebGL,通过HTML5的canvas结合JavaScript使用WebGL API渲染3D图形。首先创建包含canvas的HTML页面,获取WebGL上下文,编写GLSL着色器定义顶点位置与颜色,编译着色器并链接成程序,接着设置顶点缓冲区传入三角形坐标和颜色数据,引入gl-matr…

    2026年5月10日
    000
  • 基于两数组数据计算结果排序的 React 教程

    本教程针对 React 应用中需要根据两个独立数组的数据计算结果进行排序的场景,提供了一种高效的解决方案。通过使用 JavaScript 的 `reduce` 和 `map` 方法,将两个数组根据唯一标识符进行合并,从而简化排序逻辑,提高代码的可读性和可维护性。避免了复杂的嵌套循环或同步迭代,提供了…

    2026年5月10日
    000
  • 控制HTML Canvas颜色空间输出24位深度TIFF图像

    本教程详细介绍了如何在web前端环境中,特别是结合`html2canvas`和`canvas-to-tiff`库时,通过明确设置html canvas的颜色空间为`srgb`,从而确保输出24位深度的tiff图像。文章将提供具体的javascript代码示例,并解释其原理,帮助开发者解决canvas…

    2026年5月10日
    200

发表回复

登录后才能评论
关注微信