自己的学习记录,有什么不对的望指正。
DOM节点
一、节点介绍
-
文本节点(3),IE8以下空格节点获取不到。
-
元素节点(1) div。
-
属性节点(2) class、id、value。
-
注释节点(8)
二、获取节点
-
获取节点
document.querySelector() 方法返回文档中与给定选择器组匹配的第一个元素。document.querySelectorAll() 返回与给定选择器组匹配的文档中的元素列表。document.getElementsByTagName()方法可返回带有指定标签名的对象的集合。document.getElementsByClassName()方法返回文档中所有指定类名的元素集合。document.getElementById()方法可返回对拥有指定 ID 的第一个对象的引用。
-
子代节点
ele.childNodes:文本节点、元素节点。ele.children:只获取元素节点。ele.firstChild:返回第一个包括文本节点和注释节点。ele.firstElementChild:获取第一个元素节点。ele.lastChild:获取到文本和注释节点。ele.lastElementChild:获取最后一个元素节点。ele.childElementCount:获取子元素节点的数量ele.hasChildNodes()判断一个元素是否具有任何子元素
-
父亲节点
ele.parentNode:获取父亲节点。ele.offsetParent:找到定位父级。
-
兄弟节点
ele.nextSibling:获取到下一个节点,包括文本、注释节点。ele.nextElementSibling:只获取元素节点。ele.previousSibling:获取到上一个节点,包括文本、注释节点。ele.previousElementSibling:只获取元素节点。
三、节点的操作
-
创建节点:
document.createElement('nodename'),放标签名,创建元素节点,创建节点是document的方法,创建完的节点可以直接进行dom操作。
-
创建文本节点:
createTextNode。
-
删除节点:
parentNode.removeChild(node),删除节点只能从父级开始删除,不能自己删除自己。
-
克隆节点:
node.cloneNode(),克隆只克隆元素本身还有元素节点,不会克隆事件,可以接受一个布尔类型,若是true,则克隆子孙元素。
-
添加节点:
parentNode.appendChild(node),只能从父级节点开始添加,添加位置在最后的子节点后面。
-
替换节点:
parentNode.replaceChild(new, old),第一个用来替换新元素,第二个被替换元素。
-
在节点前添加节点:
parentNode.insertBefore(new, old),第一个用来插入的新元素,第二个在这个元素前插入。
四、节点属性
-
获取节点属性:
ele.attributes返回一个元素的属性数组ele.getAttribute(key),获取节点属性名称,直接返回值。ele.getAttributeNode,返回节点对象。ele.className赋值则设置calss属性值、直接则返回元素的class属性值ele.classList返回元素的类名
-
设置节点属性:
ele.setAttribute(key, value),不要用数字来当做key。ele.setAttributeNode(node),node是一个节点对象。
-
判断节点:
ele.hasAttribute(key)如果元素中存在指定的属性返回 true,否则返回false。ele.hasAttributes()如果元素有任何属性返回true,否则返回false。
-
创建节点对象:
document.createAttribute("nodeName"),创建完之后要设置value值。
-
删除节点对象:
ele.removeAttribute(key)
-
节点类型: 1--element--元素节点、2--属性节点、3--#text--文本节点、8--#comment--注释节点、9--document--文档节点。
-
tagName是只有元素节点才有,nodeName是所有节点都有。
五、其它操作
-
ele.nodeName返回元素的标记名(大写) -
ele.nodeType返回元素的节点类型 -
ele.nodeValue返回元素的节点值 -
ele.hasFocus()返回布尔值,检测文档或元素是否获取焦点 -
ele.innerHTML设置或者返回元素的内容 -
ele.isContentEditable如果元素内容可编辑返回 true,否则返回false -
ele.isEqualNode()检查两个元素是否相等 -
ele.isSameNode()检查两个元素所有有相同节点。 -
ele.offsetHeight返回任何一个元素的高度包括边框和填充,但不是边距 -
ele.offsetWidth返回元素的宽度,包括边框和填充,但不是边距 -
ele.offsetLeft返回当前元素的相对水平偏移位置的偏移容器 -
ele.offsetTop返回当前元素的相对垂直偏移位置的偏移容器 -
ele.offsetParent返回元素的偏移容器 -
ele.addEventListener()向指定元素添加事件句柄 -
ele.removeEventListener()移除由 addEventListener() 方法添加的事件句柄 -
ele.textContent设置或返回一个节点和它的文本内容 -
ele.clientHeight在页面上返回内容的可视高度(不包括边框,边距或滚动条) -
ele.clientWidth在页面上返回内容的可视宽度(不包括边框,边距或滚动条) -
ele.scrollHeight返回整个元素的高度(包括带滚动条的隐蔽的地方) -
ele.scrollLeft返回当前视图中的实际元素的左边缘和左边缘之间的距离 -
ele.scrollTop返回当前视图中的实际元素的顶部边缘和顶部边缘之间的距离 -
ele.scrollWidth返回元素的整个宽度(包括带滚动条的隐蔽的地方)
DOM事件
鼠标事件
-
onclick当用户点击某个对象时调用的事件句柄。 -
oncontextmenu在用户点击鼠标右键打开上下文菜单时触发。 -
ondblclick当用户双击某个对象时调用的事件句柄。 -
onmousedown鼠标按钮被按下。 -
onmouseenter当鼠标指针移动到元素上时触发。 -
onmouseleave当鼠标指针移出元素时触发 -
onmousemove鼠标被移动。 -
onmouseover鼠标移到某元素之上。 -
onmouseout鼠标从某元素移开。 -
onmouseup鼠标按键被松开。
键盘事件
-
onkeydown某个键盘按键被按下。 -
onkeypress某个键盘按键被按下并松开。 -
onkeyup某个键盘按键被松开。
框架/对象(Frame/Object)事件
-
onabort图像的加载被中断。 (<object>) -
onbeforeunload该事件在即将离开页面(刷新或关闭)时触发 -
onerror在加载文档或图像时发生错误。 (<object>, <body>和<frameset>) -
onhashchange该事件在当前 URL 的锚部分发生修改时触发。 -
onload一张页面或一幅图像完成加载。 -
onpageshow该事件在用户访问页面时触发 -
onpagehide该事件在用户离开当前网页跳转到另外一个页面时触发 -
onresize窗口或框架被重新调整大小。 -
onscroll当文档被滚动时发生的事件。 -
onunload用户退出页面。 (<body> 和 <frameset>)
表单事件
-
onblur元素失去焦点时触发 -
onchange该事件在表单元素的内容改变时触发(<input>, <keygen>, <select>, 和 <textarea>) -
onfocus元素获取焦点时触发 -
onfocusin元素即将获取焦点时触发 -
onfocusout元素即将失去焦点时触发 -
oninput元素获取用户输入时触发 -
onreset表单重置时触发 -
onsearch用户向搜索域输入文本时触发 (<input="search">) -
onselect用户选取文本时触发 (<input>和<textarea>) -
onsubmit表单提交时触发
剪贴板事件
-
oncopy该事件在用户拷贝元素内容时触发 -
oncut该事件在用户剪切元素内容时触发 -
onpaste该事件在用户粘贴元素内容时触发
打印事件
-
onafterprint该事件在页面已经开始打印,或者打印窗口已经关闭时触发 -
onbeforeprint该事件在页面即将开始打印时触发
拖动事件
-
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该事件在鼠标滚轮在元素上下滚动时触发
DOM Console 对象
-
cosnole.count()记录 count() 调用次数,一般用于计数。 -
console.time()计时器,开始计时间,与 timeEnd() 联合使用,用于算出一个操作所花费的准确时间。 -
console.timeEnd()计时结束 -
console.info()控制台输出一条信息
CSS 样式声明对象(CSSStyleDeclaration)
CSSStyleDeclaration 对象属性
-
cssText设置或返回样式声明文本,cssText 对应的是 HTML 元素的 style 属性。 -
length返回样式中包含多少条声明。 -
parentRule返回包含当前规则的规则。
CSSStyleDeclaration 对象方法
-
getPropertyPriority(CSS属性)返回指定的 CSS 属性是否设置了 "important!" 属性。 -
getPropertyValue(CSS属性)返回指定的 CSS 属性值。 -
item()通过索引方式返回 CSS 声明中的 CSS 属性名。 -
removeProperty()移除 CSS 声明中的 CSS 属性。 -
setProperty()在 CSS 声明块中新建或者修改 CSS 属性。