在HTML文档树中:树形的根部是Document节点,它代表整个文档;代表HTML元素的节点是Element节点;代表文本的节点是Text节点;Document、Element、Text是Node的子类;
getElementById():根据ID选取元素,对匹配元素的ID不区分大小写;
getElementsByName():根据name选取元素,返回一个NodeList对象;
如果在HTML文档中用id属性来为元素命名,并且如果Window对象没有此名字的属性,Window对象会赋予一个属性,它的名字是id属性的值,而他们的值指向表示文档元素的HTMLElement对象;
在Document对象中,为<form>、<img>、<iframe>、<applet>、<embed>或<object>元素设置name属性值,在Document对象中会创建以此name属性值为名字的属性;
getElementsByTagName():通过标签名选取元素,返回NodeList对象;Element类也定义了getElementsByTagName()方法,只选取调用该方法的元素的后代元素;
HTMLDocument类定义了一些快捷属性来访问各种各样的节点,images、forms和links等属性指向行为类似只读数组的<img>、<form>和<a>,这些属性指代HTMLCollection对象,它们很像NodeList对象,但除此之外它们可以用元素的ID或名字来索引;HTMLDocument对象还有两个属性,document.body是HTML文档的<body>元素,document.head是<head>元素;
documentElement属性:指代文档的根元素,在HTML文档中,它中指代<html>元素;
getElementsByClassName():通过CSS类选取元素,类标识符之间用空格隔开;
querySelectorAll():接受包含一个CSS选择器的字符串参数,返回一个表示文档中匹配选择器的所有元素的NodeList对象;返回的NodeList对象并不是实时的,并不更新后续文档的变化;
querySelector():返回第一个匹配的元素,如果没有返回null;
Node对象的重要属性:
parentNode属性:该节点的父节点;
childNodes属性:该节点的子节点的实时表示;
firstChild、lastChild:该节点的子节点中的第一个和最后一个;
nextSibling、previoursSibling:该节点兄弟节点中的前一个和后一个;
nodeType属性:该节点的类型;
nodeValue属性:Text节点或Comment节点的文本内容;
nodeName属性:元素的标签名,以大写形式表示;
Element对象:
children属性:是一个NodeList对象,只包含Element对象;
firstElementChild、lastElementChild:类似firstChild和lastChild,但只代表子Element;
nextElementSibling、previousSibling:类似nextSibling和previousSibling,但只代表兄弟Element;
shildElementCount属性:子元素的数量,返回值和children.length值相等;
getAttribute()、setAttribute()方法:用来查询和设置非标准的HTML属性;
hasAttribute()、removeAttribute()方法:用来检测命名属性是否存在和完全删除属性;
在HTML5文档中,任意以”data-“为前缀的小写的属性名字都是合法的,定义了一种标准的、附加额外数据的方法;HTML5还在Element对象上定义了dataset属性,该属性指代一个对象,它的各个属性对应于去掉前缀的data-属性;
attributes属性:它可以用数字索引也可以用属性名索引访问元素的所有属性;当索引attributes对象时得到的值是Attr对象,Attr的name和value属性返回该属性的名字和值;
innerHTML属性:作为字符串返回元素的内容;
outerHTML属性:返回的字符串包含被查询元素的开头和结尾标签;
textContent属性:将指定元素的所有后代Text节点简单地串联在一起;
创建节点:
Document对象的createElement()方法:创建新的Element节点;
Document对象的createTextNode()方法:创建Text节点;
每个节点有一个cloneNode()方法:返回该节点的一个全新副本,传参为true递归复制后代节点,传参为false只执行一个浅复制;
插入节点:
Node的appendChild()方法:插入指定的节点使其成为那个节点的最后一个子节点;
Node的insertBefore()方法:接受两个参数,第一个参数就是待插入的节点,第二个参数为已存在的节点,将新节点插入该节点的前面;该方法应该是在新节点的父节点上调用;
删除和替换节点:
removeChild():从文档树中删除一个节点;
replaceChild():删除一个子节点并用一个新的节点取而代之;第一个参数是新节点,第二个参数是需要代替的节点;
DocumentFragment:
是一种特殊的Node,它作为一个其他节点的一个临时的容器,是独立的而不是任何其他文档的一部分;可以通过createDocumentFragment()来创建;它的特殊之处在于它使得一组节点被当做一个节点看待;
Document的属性有body、documentElement和forms等这些特殊的文档元素,还有一些其他的属性:
cookie:允许JavaScript程序读、写HTTP cookie的特殊的属性;
domain:该属性允许当web页面之间交互时,相同域名下互相信任的web服务器之间协作放宽同源策略安全限制;
lastModified:包含文档修改时间的字符串;
location:与Window对象的location属性引用同一个Location对象;
referrer:表示浏览器导航到当前连接的上一个文档,该属性值和HTTP的Referer头信息的内容相同;
title:文档的<title>和</title>标签之间的内容;
URL:文档的URL;
可编辑的内容:
有两种方法来启用编辑功能:其一,设置任何标签的HTML contenteditable属性;其二,设置对应元素的JavaScript contenteditable属性;
将Document对象的designMode属性设置为字符串”on“使得整个文档可编辑;