国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > HTML > 正文

一個(gè)完整的HTML對(duì)象是什么樣的,如何生成?

2020-03-24 17:27:06
字體:
供稿:網(wǎng)友
對(duì)html對(duì)象,首先要先提到Node節(jié)點(diǎn),Node是一個(gè)接口,許多DOM類型從這個(gè)接口繼承,并允許類似地處理(或測(cè)試)這些各種類型。有那些接口重Node繼承其方法和屬性?先看看本文章吧。apache php mysql

為何寫這篇文章?

你可能做Web開發(fā)已經(jīng)有一段時(shí)間,你是否有想過下列問題呢?
為什么p元素甚至是所有的html元素都可以使用addEventListener來添加事件呢?
為什么每個(gè)DOM節(jié)點(diǎn)都有parentNode、firstChild、nodeType等屬性呢?
為什么每個(gè)DOM元素都有className、classList、innerHTML等屬性呢?
為什么有些DOM元素有accessKey、contentEditable、isContentEditable等屬性呢?
為什么每個(gè)DOM元素都有onclick、ondblclick、ondrag等屬性?
本文就是來解答這些簡(jiǎn)單而又不“簡(jiǎn)單”的問題。

EventTarget定義

EventTarget 是一個(gè)由可以接收事件的對(duì)象實(shí)現(xiàn)的接口,并且可以為它們創(chuàng)建偵聽器。

作用

Element,document 和 window 是最常見的事件目標(biāo),但是其他對(duì)象也可以是事件目標(biāo),比如XMLHttpRequest,AudioNode,AudioContext 等等。
許多事件目標(biāo)(包括元素,文檔和 window)還支持通過 onXXX(如onclick) 屬性和屬性設(shè)置事件處理程序。

該接口的方法EventTarget.addEventListener()

在EventTarget上注冊(cè)特定事件類型的事件處理程序。

EventTarget.removeEventListener()

EventTarget中刪除事件偵聽器。

EventTarget.dispatchEvent()

將事件分派到此EventTarget。

我們自己實(shí)現(xiàn)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 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 i++) { stack[i].call(this, event); return !event.defaultPrevented;};
Node定義

Node是一個(gè)接口,許多DOM類型從這個(gè)接口繼承,并允許類似地處理(或測(cè)試)這些各種類型。Node是一個(gè)接口,許多DOM類型從這個(gè)接口繼承,并允許類似地處理(或測(cè)試)這些各種類型。

有那些接口重Node繼承其方法和屬性?

Document, Element, CharacterData (which Text, Comment, and CDATASection inherit), ProcessingInstruction, DocumentFragment, DocumentType, Notation, Entity, EntityReference
PS:在方法和屬性不相關(guān)的特定情況下,這些接口可能返回null。它們可能會(huì)拋出異常 - 例如,當(dāng)將子節(jié)點(diǎn)添加到不允許子節(jié)點(diǎn)存在的節(jié)點(diǎn)時(shí)。

接口相關(guān)的屬性和方法屬性Node.baseURI

返回一個(gè)表示base URL的DOMString。不同語(yǔ)言中的base URL的概念都不一樣。 在HTML中,base URL表示協(xié)議和域名,以及一直到最后一個(gè) / 之前的文件目錄。

Node.childNodes

返回一個(gè)包含了該節(jié)點(diǎn)所有子節(jié)點(diǎn)的實(shí)時(shí)的NodeList。NodeList 是“實(shí)時(shí)的”意思是,如果該節(jié)點(diǎn)的子節(jié)點(diǎn)發(fā)生了變化,NodeList對(duì)象就會(huì)自動(dòng)更新。

Node.firstChild

返回該節(jié)點(diǎn)的第一個(gè)子節(jié)點(diǎn),如果該節(jié)點(diǎn)沒有子節(jié)點(diǎn)則返回null。

Node.lastChild

返回該節(jié)點(diǎn)的最后一個(gè)子節(jié)點(diǎn),如果該節(jié)點(diǎn)沒有子節(jié)點(diǎn)則返回null。
此處省略若干Node接口屬性,更多屬性查看這里。

方法

那么重點(diǎn)來了!
重點(diǎn):從其父類EventTarget繼承了addEventListener、removeEventListener、dispatchEvent等方法。

Node.appendChild()

將一個(gè)節(jié)點(diǎn)添加到指定父節(jié)點(diǎn)的子節(jié)點(diǎn)列表末尾。

Node.contains()

返回的是一個(gè)布爾值,來表示傳入的節(jié)點(diǎn)是否為該節(jié)點(diǎn)的后代節(jié)點(diǎn)。

Node.cloneNode()

返回調(diào)用該方法的節(jié)點(diǎn)的一個(gè)副本。
此處省略若干Node接口方法,更多方法查看這里。

Element說明

Element是非常通用的基類,所有 Document對(duì)象下的對(duì)象都繼承它。這個(gè)接口描述了所有相同種類的元素所普遍具有的方法和屬性。 這些繼承自Element并且增加了一些額外功能的接口描述了具體的行為。
PS:HTMLElement 接口是所有HTML元素的基礎(chǔ)接口, 而 SVGElement 接口是所有SVG元素的基本接口。
在web以外的語(yǔ)言,像 XUL 可以通過 XULElement 的API,也能實(shí)現(xiàn)它。

屬性

所有屬性繼承至它的祖先接口 Node, 和它所擴(kuò)展的接口 EventTarget, 并且從以下部分繼承了屬性ParentNode, ChildNode, NonDocumentTypeChildNode, 和Animatable.

Element.assignedSlot

返回元素對(duì)應(yīng)的 HTMLSlotElement 接口

Element.attributes

返回一個(gè)與該元素相關(guān)的所有屬性集合NamedNodeMap

Element.classList

返回該元素包含的class屬性是一個(gè)DOMTokenList.

Element.className

它是一個(gè) DOMString 表示這個(gè)元素的class.
此處省略若干Element接口屬性,更多方法查看這里。

方法

那么重點(diǎn)來了!
從它的父類(Node)和它父類的父類(EventTarget)繼承方法,并實(shí)現(xiàn)parentNode、ChildNode、NonDocumentTypeChildNode、Animatable。
此處省略若干Element接口方法,更多方法查看這里。

Element.closest()

方法用來獲取匹配特定選擇器且離當(dāng)前元素最近的祖先元素(也可以是當(dāng)前元素本身)。如果匹配不到,則返回 null。

Element.getAttribute()

返回元素上一個(gè)指定的屬性值。如果指定的屬性不存在,則返回 null 或 (空字符串)。

Element.getElementsByClassName()

參數(shù)中給出類的列表,返回一個(gè)動(dòng)態(tài)的 HTMLCollection ,這里面包含了所有持有這些類的后代元素。
此處省略若干Element接口方法,更多方法查看這里。

HTMLElement作用

HTMLElement 接口表示所有的 HTML 元素。一些HTML元素直接實(shí)現(xiàn)了HTMLElement接口,其它的間接實(shí)現(xiàn)HTMLElement接口。

屬性

那么重點(diǎn)來了!
繼承自父接口Element和 GlobalEventHandlers的屬性。
HTMLElement.accessKey DOMString 獲取/設(shè)置元素訪問的快捷鍵
HTMLElement.accessKeyLabel DOMString 返回一個(gè)包含元素訪問的快捷鍵的字符串(只讀)
HTMLElement.contentEditable DOMString 獲取/設(shè)置元素的可編輯狀態(tài)
HTMLElement.isContentEditable Boolean 表明元素的內(nèi)容是否可編輯(只讀)
此處省略若干HTMLElement接口屬性,更多方法查看這里。

Event handlers

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

方法

HTMLElement.blur() void 元素失去焦點(diǎn)
HTMLElement.click() void 觸發(fā)元素的點(diǎn)擊事件
HTMLElement.focus() void 元素獲得焦點(diǎn)
HTMLElement.forceSpellCheck() void

GlobalEventHandlers定義

GlobalEventHandlers接口描述了事件處理程序像HTMLElement常見的幾個(gè)接口,文件,窗口,或WorkerGlobalScope Web Workers。這些接口可以實(shí)現(xiàn)更多的事件處理程序。

屬性GlobalEventHandlers.onabort

中斷事件。

GlobalEventHandlers.onblur

失去焦點(diǎn)事件。

GlobalEventHandlers.onfocus

獲取焦點(diǎn)事件。
此處省略若干GlobalEventHandlers接口屬性,更多方法查看這里。

元素接口

該接口用于創(chuàng)建對(duì)應(yīng)的元素。
如:
HTMLpElement 接口提供了一些特殊屬性(它也繼承了通常的 HTMLElement 接口)來操作p元素。
HTMLFormElement接口可以創(chuàng)建或者修改 form 它繼承了HTMLElement接口的方法和屬性。
HTMLAnchorElement 接口表示超鏈接元素,并提供一些特別的屬性和方法(除了那些繼承自普通 HTMLElement對(duì)象接口的之外)以用于操作這些元素的布局和顯示。
......

回答前面問題

通過上面的知識(shí),我們了解到:
HTMLpElement(其他元素接口) 繼承 HTMLElement 和 GlobalEventHandlers 接口。
HTMLElement 繼承 Element 接口。
Element 繼承 Node 接口。
Node 繼承 EventTarget 接口。
搜狗截圖18年07月30日1717_17.png為什么p元素甚至是所有的html元素都可以使用addEventListener來添加事件呢?
回答:從 EventTarget 接口中繼承而來。
為什么每個(gè)DOM節(jié)點(diǎn)都有parentNode、firstChild、nodeType等屬性呢?
回答:從 Node 接口中繼承而來。
為什么每個(gè)DOM元素都有className、classList、innerHTML等屬性呢?
回答:從 Element 接口中繼承而來。
為什么有些DOM元素有accessKey、contentEditable、isContentEditable等屬性呢?
回答:從 HTMLElement 接口中繼承而來。
為什么每個(gè)DOM元素都有onclick、ondblclick、ondrag等屬性?
回答:從 GlobalEventHandlers 接口中繼承而來。
那么重點(diǎn)來了!

end:只有通過上面的繼承關(guān)系,我們得到的 DOM 元素才是一個(gè)完整的 HTML 對(duì)象,我們才能為它設(shè)置/獲取屬性、綁定事件、添加樣式類等操作。

相關(guān)文章:

如何判斷出一個(gè)js對(duì)象是否一個(gè)dom對(duì)象

數(shù)據(jù)庫(kù)完整性是什么概念?

相關(guān)視頻:

HTML5 完整版手冊(cè)

以上就是一個(gè)完整的HTML對(duì)象是什么樣的,如何生成?的詳細(xì)內(nèi)容,html教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宁津县| 察哈| 湖口县| 米林县| 石林| 墨玉县| 山东| 永春县| 定边县| 积石山| 新宾| 玛曲县| 阿克苏市| 阳信县| 通城县| 托克逊县| 周宁县| 德令哈市| 正蓝旗| 山西省| 涡阳县| 鹤壁市| 阿克| 建德市| 玉溪市| 蚌埠市| 电白县| 金湖县| 潢川县| 镇巴县| 静海县| 界首市| 纳雍县| 陆河县| 黑山县| 台南市| 平武县| 淮滨县| 大渡口区| 井冈山市| 栾城县|