怎么生成一个完整的HTML对象

小编给大家分享一下怎么生成一个完整的HTML对象,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!

创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站建设、成都网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的平阴网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

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接口可以创建或者修改

对象;它继承了HTMLElement接口的方法和属性。
HTMLAnchorElement 接口表示超链接元素,并提供一些特别的属性和方法(除了那些继承自普通 HTMLElement对象接口的之外)以用于操作这些元素的布局和显示。
......

回答前面问题

通过上面的知识,我们了解到:
HTMLpElement(其他元素接口) 继承 HTMLElement 和 GlobalEventHandlers 接口。
HTMLElement 继承 Element 接口。
Element 继承 Node 接口。
Node 继承 EventTarget 接口。
怎么生成一个完整的HTML对象为什么p元素甚至是所有的html元素都可以使用addEventListener来添加事件呢?
回答:从 EventTarget 接口中继承而来。
为什么每个DOM节点都有parentNode、firstChild、nodeType等属性呢?
回答:从 Node 接口中继承而来。
为什么每个DOM元素都有className、classList、innerHTML等属性呢?
回答:从 Element 接口中继承而来。
为什么有些DOM元素有accessKey、contentEditable、isContentEditable等属性呢?
回答:从 HTMLElement 接口中继承而来。
为什么每个DOM元素都有onclick、ondblclick、ondrag等属性?
回答:从 GlobalEventHandlers 接口中继承而来。
那么重点来了!

end:只有通过上面的继承关系,我们得到的 DOM 元素才是一个完整的 HTML 对象,我们才能为它设置/获取属性、绑定事件、添加样式类等操作。

看完了这篇文章,相信你对怎么生成一个完整的HTML对象有了一定的了解,想了解更多相关知识,欢迎关注创新互联行业资讯频道,感谢各位的阅读!


当前文章:怎么生成一个完整的HTML对象
链接URL:http://pwwzsj.com/article/ipogee.html