Document Object Model(文档对象模型)
DOM的主要功能:
页面中的节点(Node),通过构造函数(Document,Element,Text,Comment…等构造函数),构造出对应的对象。
Node也是一个构造函数, 派生于 Object,所以 Node 构造出来的函数,也有 Object 的公有属性。
Node 构造了 Document DocumentType Elment Text Comment DocumentFragment… 等类型。
Document构造了<html>标签。Element构造了<head><body><meta><title><script><h1>…标签。Text构造了页面中文本。Comment构造了页面中注释。
Node 接口
Node 属性:查阅MDN
childNode,fristChild,innerText,lastChild,nextSibling,nodeName,nodeType,nodeValue,outerValue,ownDocument,parentElement,parentNode,previousSibling,textContent
- 1.innerText 和 textContent 区别
- 2.nodeType 1 和 3 分别代表什么
Node 方法:查阅MDN
appendChild()添加子元素cloneNode()克隆节点(分true深拷贝、false浅拷贝)contains()是否包含另一个元素hasChildNodes()是否有子元素,返回一个布尔值insertBefore()把…插到…前面isEqualNode()是否是相等的节点isSameNode()是否是相同的节点(同一个 ‘===’)removeChild()移除子元素(还是存在于内存中)replaceChild()替换子元素()normalize()使…正常
Document 接口
查看document属性 console.dir(document)
Document MDN
Document 属性 查询MDN
body,characterSet,childElementCount,children,doctype,documentElement,domain,fullscreen,head,hidden,images,
links,location,onxxxxxx,origin,plugins,readState,referrer,scripts,scrollingElement,styleSheets,title,visibilityState
Document 方法 查询MDN
close()createAttributecreateElement
DOM事件 看一下
事件监听
btn.onclick.call(this,arguments) //this = btn,arguments = 参数DOM Level 0
onclick onerror onload onmouseenter
html 写法 要加括号
1 | onclick = fn() //fn 类型为字符串 |
js 写法 不能加括号,调用是时候才加
1 | X.onclick = fn //fn 类型为函数对象 |
DOM Level 1
DOM Level 2 (最广泛)
(2000/11/13)
addEventListenerremoveEventListener- 事件冒泡,事件捕获
addEventListener 可以添加多个 click 方法(队列,先进先出)
1 | // 先打印1,再打印2 |
onclick,属性,唯一(工作中,可能别人也用了onclick,可能会把别人的覆盖)
1 | // 只打印2,后面`onclick`的把前面的覆盖了 |
DOM Events(先事件捕获,绑定同一对象按代码先后顺序,最后事件冒泡)
注:jQuery 不支持设置 true或false
事件冒泡(从里到外)
false或者不填
1 | // 点击 里 |
事件捕获(从外到里)
多加了一个参数
true
1 | // 点击 里 |
如果同一个事件,绑定了2次,那么就按 先后顺序执行,true,false 失效
点击别处关闭浮层
stopPropagation()阻止传播one('click',function..)只监听一次
JS(document 随时被监听,如果 popover 有很多,则不节省内存)
1 | btn.addEventListener('click', function () { |
JQ(仅仅需要在 popover show() 出来后监听一次,节省内存)
stopPropagation()和setTimeout()这两种方法实现
查看stopPropagation()方法完整代码
查看setTimeout()方法完整代码
1 | //方法一 stopPropagation |