HTML DOM 元素对象/DOM 属性对象以及 DOM 事件

01 DOM 元素对象

HTML DOM 节点

在 HTML DOM (Document Object Model) 中, 每个东西都是 节点 :

  • 文档本身就是一个文档对象
  • 所有 HTML 元素都是元素节点
  • 所有 HTML 属性都是属性节点
  • 插入到 HTML 元素文本是文本节点
  • 注释是注释节点

元素对象

在 HTML DOM 中, 元素对象代表着一个 HTML 元素。

元素对象 的 子节点可以是, 可以是元素节点,文本节点,注释节点。

NodeList 对象 代表了节点列表,类似于 HTML元素的子节点集合。

元素可以有属性。属性属于属性节点(查看下一章节)。

所有主流浏览器都支持 元素对象 和 NodeList 对象。

属性和方法

element.accessKey	设置或返回accesskey一个元素
element.addEventListener()	向指定元素添加事件句柄
element.appendChild()	为元素添加一个新的子元素
element.attributes	返回一个元素的属性数组
element.childNodes	返回元素的一个子节点的数组
element.children	返回元素的子元素的集合
element.classList	返回元素的类名,作为 DOMTokenList 对象。
element.className	设置或返回元素的class属性
element.clientHeight	在页面上返回内容的可视高度(不包括边框,边距或滚动条)
element.clientWidth	在页面上返回内容的可视宽度(不包括边框,边距或滚动条)
element.cloneNode()	克隆某个元素
element.compareDocumentPosition()	比较两个元素的文档位置。
element.contentEditable	设置或返回元素的内容是否可编辑
element.dir	设置或返回一个元素中的文本方向
element.firstChild	返回元素的第一个子节点
element.focus()	设置文档或元素获取焦点
element.getAttribute()	返回指定元素的属性值
element.getAttributeNode()	返回指定属性节点
element.getElementsByTagName()	返回指定标签名的所有子元素集合。
element. getElementsByClassName()	返回文档中所有指定类名的元素集合,作为 NodeList 对象。
element.getFeature()	返回指定特征的执行APIs对象。
element.getUserData()	返回一个元素中关联键值的对象。
element.hasAttribute()	如果元素中存在指定的属性返回 true,否则返回false。
element.hasAttributes()	如果元素有任何属性返回true,否则返回false。
element.hasChildNodes()	返回一个元素是否具有任何子元素
element.hasFocus()	返回布尔值,检测文档或元素是否获取焦点
element.id	设置或者返回元素的 id。
element.innerHTML	设置或者返回元素的内容。
element.insertBefore()	现有的子元素之前插入一个新的子元素
element.isContentEditable	如果元素内容可编辑返回 true,否则返回false
element.isDefaultNamespace()	如果指定了namespaceURI 返回 true,否则返回 false。
element.isEqualNode()	检查两个元素是否相等
element.isSameNode()	检查两个元素所有有相同节点。
element.isSupported()	如果在元素中支持指定特征返回 true。
element.lang	设置或者返回一个元素的语言。
element.lastChild	返回的最后一个子节点
element.namespaceURI	返回命名空间的 URI。
element.nextSibling	返回该元素紧跟的一个节点
element.nextElementSibling	返回指定元素之后的下一个兄弟元素(相同节点树层中的下一个元素节点)。
element.nodeName	返回元素的标记名(大写)
element.nodeType	返回元素的节点类型
element.nodeValue	返回元素的节点值
element.normalize()	使得此成为一个"normal"的形式,其中只有结构(如元素,注释,处理指令,CDATA节和实体引用)隔开Text节点,即元素(包括属性)下面的所有文本节点,既没有相邻的文本节点也没有空的文本节点
element.offsetHeight	返回任何一个元素的高度包括边框和填充,但不是边距
element.offsetWidth	返回元素的宽度,包括边框和填充,但不是边距
element.offsetLeft	返回当前元素的相对水平偏移位置的偏移容器
element.offsetParent	返回元素的偏移容器
element.offsetTop	返回当前元素的相对垂直偏移位置的偏移容器
element.ownerDocument	返回元素的根元素(文档对象)
element.parentNode	返回元素的父节点
element.previousSibling	返回某个元素紧接之前元素
element.previousElementSibling	返回指定元素的前一个兄弟元素(相同节点树层中的前一个元素节点)。
element.querySelector()	返回匹配指定 CSS 选择器元素的第一个子元素
document.querySelectorAll()	返回匹配指定 CSS 选择器元素的所有子元素节点列表
element.removeAttribute()	从元素中删除指定的属性
element.removeAttributeNode()	删除指定属性节点并返回移除后的节点。
element.removeChild()	删除一个子元素
element.removeEventListener()	移除由 addEventListener() 方法添加的事件句柄
element.replaceChild()	替换一个子元素
element.scrollHeight	返回整个元素的高度(包括带滚动条的隐蔽的地方)
element.scrollLeft	返回当前视图中的实际元素的左边缘和左边缘之间的距离
element.scrollTop	返回当前视图中的实际元素的顶部边缘和顶部边缘之间的距离
element.scrollWidth	返回元素的整个宽度(包括带滚动条的隐蔽的地方)
element.setAttribute()	设置或者改变指定属性并指定值。
element.setAttributeNode()	设置或者改变指定属性节点。
element.setIdAttribute()	
element.setIdAttributeNode()	
element.setUserData()	在元素中为指定键值关联对象。
element.style	设置或返回元素的样式属性
element.tabIndex	设置或返回元素的标签顺序。
element.tagName	作为一个字符串返回某个元素的标记名(大写)
element.textContent	设置或返回一个节点和它的文本内容
element.title	设置或返回元素的title属性
element.toString()	一个元素转换成字符串
nodelist.item()	返回某个元素基于文档树的索引
nodelist.length	返回节点列表的节点数目。

02 DOM 属性对象

HTML DOM 节点

在 HTML DOM (Document Object Model) 中, 所有的都是 节点:

  • 文档是文档节点
  • 所有 HTML 元素是元素节点
  • 所有 HTML 属性都是属性节点
  • 插入到 HTML 元素中的文本为文本节点
  • 注释是注释节点

Attr 对象

在 HTML DOM 中, Attr 对象 代表一个 HTML 属性。

HTML属性总是属于HTML元素。

NamedNodeMap 对象

在 HTML DOM 中, the NamedNodeMap 对象 表示一个无顺序的节点列表。

我们可通过节点名称来访问 NamedNodeMap 中的节点。

所有主流浏览器都支持 Attr 对象和 NamedNodeMap 对象。

attr.isId	如果属性是 ID 类型,则 isId 属性返回 true,否则返回 false。
attr.name	返回属性名称
attr.value	设置或者返回属性值
attr.specified	如果属性被指定返回 true ,否则返回 false
 	 
nodemap.getNamedItem()	从节点列表中返回的指定属性节点。
nodemap.item()	返回节点列表中处于指定索引号的节点。
nodemap.length	返回节点列表的节点数目。
nodemap.removeNamedItem()	删除指定属性节点
nodemap.setNamedItem()	设置指定属性节点(通过名称)

DOM 4 警告 !!!

在 W3C DOM 内核中, Attr (属性) 对象继承节点对象的所有属性和方法

在 DOM 4 中, Attr (属性) 对象不再从节点对象中继承。

从长远的代码质量来考虑,在属性对象中你需要避免使用节点对象属性和方法:

attr.appendChild()	属性没有子节点
attr.attributes	属性没有属性
attr.baseURI	使用 document.baseURI 替代
attr.childNodes	属性没有子节点
attr.cloneNode()	使用 attr.value 替代
attr.firstChild	属性没有子节点
attr.hasAttributes()	属性没有属性
attr.hasChildNodes	属性没有子节点
attr.insertBefore()	属性没有子节点
attr.isEqualNode()	没有意义
attr.isSameNode()	没有意义
attr.isSupported()	通常为 true
attr.lastChild	属性没有子节点
attr.nextSibling	属性没有兄弟节点
attr.nodeName	使用 attr.name 替代
attr.nodeType	通常为 2 (ATTRIBUTE-NODE)
attr.nodeValue	使用 attr.value 替代
attr.normalize()	属性没有规范
attr.ownerDocument	通常为你的 HTML 文档
attr.ownerElement	你用来访问属性的 HTML 元素
attr.parentNode	你用来访问属性的 HTML 元素
attr.previousSibling	属性没有兄弟节点
attr.removeChild	属性没有子节点
attr.replaceChild	属性没有子节点
attr.textContent	使用 attr.value 替代

03 HTML DOM 事件

HTML DOM 事件

HTML DOM 事件允许JavascriptHTML文档元素中注册不同事件处理程序。

事件通常与函数结合使用,函数不会在事件发生前被执行! (如用户点击按钮)。

提示: 在 W3C 2 级 DOM 事件中规范了事件模型。

HTML DOM 事件

DOM: 指明使用的 DOM 属性级别。

鼠标事件

属性+描述+DOM

onclick	当用户点击某个对象时调用的事件句柄。	2
oncontextmenu	在用户点击鼠标右键打开上下文菜单时触发	 
ondblclick	当用户双击某个对象时调用的事件句柄。	2
onmousedown	鼠标按钮被按下。	2
onmouseenter	当鼠标指针移动到元素上时触发。	2
onmouseleave	当鼠标指针移出元素时触发	2
onmousemove	鼠标被移动。	2
onmouseover	鼠标移到某元素之上。	2
onmouseout	鼠标从某元素移开。	2
onmouseup	鼠标按键被松开。	2

键盘事件

onkeydown	某个键盘按键被按下。	2
onkeypress	某个键盘按键被按下并松开。	2
onkeyup	某个键盘按键被松开。	2

框架/对象(Frame/Object)事件

onabort	图像的加载被中断。 ( <object>)	2
onbeforeunload	该事件在即将离开页面(刷新或关闭)时触发	2
onerror	在加载文档或图像时发生错误。 ( <object>, <body><frameset>)	 
onhashchange	该事件在当前 URL 的锚部分发生修改时触发。	 
onload	一张页面或一幅图像完成加载。	2
onpageshow	该事件在用户访问页面时触发	
onpagehide	该事件在用户离开当前网页跳转到另外一个页面时触发	
onresize	窗口或框架被重新调整大小。	2
onscroll	当文档被滚动时发生的事件。	2
onunload	用户退出页面。 ( <body><frameset>)	2

表单事件

onblur	元素失去焦点时触发	2
onchange	该事件在表单元素的内容改变时触发( <input>, <keygen>, <select>,<textarea>)	2
onfocus	元素获取焦点时触发	2
onfocusin	元素即将获取焦点时触发	2
onfocusout	元素即将失去焦点时触发	2
oninput	元素获取用户输入时触发	3
onreset	表单重置时触发	2
onsearch	用户向搜索域输入文本时触发 ( <input="search">)	 
onselect	用户选取文本时触发 ( <input><textarea>)	2
onsubmit	表单提交时触发	2

剪贴板事件

oncopy	该事件在用户拷贝元素内容时触发	 
oncut	该事件在用户剪切元素内容时触发	 
onpaste	该事件在用户粘贴元素内容时触发

拖动事件

ondrag	该事件在元素正在拖动时触发	 
ondragend	该事件在用户完成元素的拖动时触发	 
ondragenter	该事件在拖动的元素进入放置目标时触发	 
ondragleave	该事件在拖动元素离开放置目标时触发	 
ondragover	该事件在拖动元素在放置目标上时触发	 
ondragstart	该事件在用户开始拖动元素时触发	 
ondrop	该事件在拖动元素放置在目标区域时触发

多媒体(Media)事件

onabort	事件在视频/音频(audio/video)终止加载时触发。	 
oncanplay	事件在用户可以开始播放视频/音频(audio/video)时触发。	 
oncanplaythrough	事件在视频/音频(audio/video)可以正常播放且无需停顿和缓冲时触发。	 
ondurationchange	事件在视频/音频(audio/video)的时长发生变化时触发。	 
onemptied	当期播放列表为空时触发	 
onended	事件在视频/音频(audio/video)播放结束时触发。	 
onerror	事件在视频/音频(audio/video)数据加载期间发生错误时触发。	 
onloadeddata	事件在浏览器加载视频/音频(audio/video)当前帧时触发触发。	 
onloadedmetadata	事件在指定视频/音频(audio/video)的元数据加载后触发。	 
onloadstart	事件在浏览器开始寻找指定视频/音频(audio/video)触发。	 
onpause	事件在视频/音频(audio/video)暂停时触发。	 
onplay	事件在视频/音频(audio/video)开始播放时触发。	 
onplaying	事件在视频/音频(audio/video)暂停或者在缓冲后准备重新开始播放时触发。	 
onprogress	事件在浏览器下载指定的视频/音频(audio/video)时触发。	 
onratechange	事件在视频/音频(audio/video)的播放速度发送改变时触发。	 
onseeked	事件在用户重新定位视频/音频(audio/video)的播放位置后触发。	 
onseeking	事件在用户开始重新定位视频/音频(audio/video)时触发。	 
onstalled	事件在浏览器获取媒体数据,但媒体数据不可用时触发。	 
onsuspend	事件在浏览器读取媒体数据中止时触发。	 
ontimeupdate	事件在当前的播放位置发送改变时触发。	 
onvolumechange	事件在音量发生改变时触发。	 
onwaiting	事件在视频由于要播放下一帧而需要缓冲时触发。

动画事件

animationend	该事件在 CSS 动画结束播放时触发	 
animationiteration	该事件在 CSS 动画重复播放时触发	 
animationstart	该事件在 CSS 动画开始播放时触发

过渡事件

transitionend	该事件在 CSS 完成过渡后触发。

其他事件

onmessage	该事件通过或者从对象(WebSocket, Web Worker, Event Source 或者子 frame 或父窗口)接收到消息时触发	 
onmousewheel	已废弃。 使用 onwheel 事件替代	 
ononline	该事件在浏览器开始在线工作时触发。	 
onoffline	该事件在浏览器开始离线工作时触发。	 
onpopstate	该事件在窗口的浏览历史(history 对象)发生改变时触发。	 
onshow	该事件当 <menu> 元素在上下文菜单显示时触发	 
onstorage	该事件在 Web Storage(HTML 5 Web 存储)更新时触发	 
ontoggle	该事件在用户打开或关闭 <details> 元素时触发	 
onwheel	该事件在鼠标滚轮在元素上下滚动时触发

事件对象

常量

CAPTURING-PHASE	当前事件阶段为捕获阶段(1)	1
AT-TARGET	当前事件是目标阶段,在评估目标事件(1)	2
BUBBLING-PHASE	当前的事件为冒泡阶段 (3)	3

属性

bubbles	返回布尔值,指示事件是否是起泡事件类型。	2
cancelable	返回布尔值,指示事件是否可拥可取消的默认动作。	2
currentTarget	返回其事件监听器触发该事件的元素。	2
eventPhase	返回事件传播的当前阶段。	2
target	返回触发此事件的元素(事件的目标节点)。	2
timeStamp	返回事件生成的日期和时间。	2
type	返回当前 Event 对象表示的事件的名称。	2

方法

initEvent()	初始化新创建的 Event 对象的属性。	2
preventDefault()	通知浏览器不要执行与事件关联的默认动作。	2
stopPropagation()	不再派发事件。	2

目标事件对象

方法

addEventListener()	允许在目标事件中注册监听事件(IE8 = attachEvent())	2
dispatchEvent()	允许发送事件到监听器上 (IE8 = fireEvent())	2
removeEventListener()	运行一次注册在事件目标上的监听事件(IE8 = detachEvent())	2

事件监听对象

方法

handleEvent()	把任意对象注册为事件处理程序 2

文档事件对象

createEvent()

鼠标/键盘事件对象

属性

altKey	返回当事件被触发时,"ALT" 是否被按下。	2
button	返回当事件被触发时,哪个鼠标按钮被点击。	2
clientX	返回当事件被触发时,鼠标指针的水平坐标。	2
clientY	返回当事件被触发时,鼠标指针的垂直坐标。	2
ctrlKey	返回当事件被触发时,"CTRL" 键是否被按下。	2
Location	返回按键在设备上的位置	3
charCode	返回onkeypress事件触发键值的字母代码。	2
key	在按下按键时返回按键的标识符。	3
keyCode	返回onkeypress事件触发的键的值的字符代码,或者 onkeydown 或 onkeyup 事件的键的代码。	2
which	返回onkeypress事件触发的键的值的字符代码,或者 onkeydown 或 onkeyup 事件的键的代码。	2
metaKey	返回当事件被触发时,"meta" 键是否被按下。	2
relatedTarget	返回与事件的目标节点相关的节点。	2
screenX	返回当某个事件被触发时,鼠标指针的水平坐标。	2
screenY	返回当某个事件被触发时,鼠标指针的垂直坐标。	2
shiftKey	返回当事件被触发时,"SHIFT" 键是否被按下。	2

方法

initMouseEvent()	初始化鼠标事件对象的值	2
initKeyboardEvent()	初始化键盘事件对象的值	3

你可能感兴趣的:(HTML DOM 元素对象/DOM 属性对象以及 DOM 事件)