Node(节点)是一个接口,很多类型DOM节点都继承自他,nodeType有以下12种
{
ELEMENT_NODE: 1, // 元素节点
ATTRIBUTE_NODE: 2, // 属性节点
TEXT_NODE: 3, // 文本节点
DATA_SECTION_NODE: 4,
ENTITY_REFERENCE_NODE: 5,
ENTITY_NODE: 6,
PROCESSING_INSTRUCTION_NODE: 7,
COMMENT_NODE: 8, // 注释节点
DOCUMENT_NODE: 9, // 文档
DOCUMENT_TYPE_NODE: 10,
DOCUMENT_FRAGMENT_NODE: 11, // 文档碎片
}
HTMLCollection、NodeList
区别:HTMLCollection是元素集合/NodeList是节点和元素的集合
-
<div><span></span></div>
-
<div>
<span></span>
</div>
- 这2者所获取的NodeList是不一样的,因为2会把空节点也算进去
获取方法
- HTMLCollection(元素顺序为文档流中的顺序,实时更新)
- Node.children
- document.getElementsByTagName
- getElementsByClassName
- NodeList(节点列表,即使是空节点也会算进去)
- Node.childNodes
- document.getElementsByName
- document.querySelectAll() //返回的是固定的,前2者返回的结果是实时的
节点查找API
查找HTMLCollection
- 额外的: document.forms
节点创建API
- createElement: 不是一个document对象
- cloneNode(boolean): 是否复制子节点
- createTextNode
- createDucomentFragement: 文档碎片,大量操作DOM时能提升性能
节点修改API
- parent.appendChild(child)
- parent.insertBefore(newChild,oldChild)
- parent.removeChild(child)
- parent.replaceChild(newChild,oldChild)
节点关系API
父关系API
- parentNode
- parentElement: 返回父元素节点,父节点必须是element,否则返回null
子关系API
- children: HTMLCollection
- childNodes: NodeList
- firstChild/firestElementChild
- lastChild/lastElementChild
兄弟关系型API
- previousSibling: 前一个节点
- nextSibling: 后一个节点
- previousElementSibling/nextElementSibling
元素属性型API
- getAttribute('name')
- setAttribute('name','bin')
样式相关API
直接修改样式
elem.style.color = 'red';
elem.style.setProperty('font-size', '16px');
elem.style.removeProperty('color');
动态添加样式
var style = document.createElement('style');
style.innerHTML = 'body{color:red} #top:hover{background-color: red;color: white;}';
document.head.appendChild(style);