#Selector API
querySelector()
接受一个css选择符,返回第一个匹配的元素
// 在整个文档范围查找
var divEl = document.querySelector("div");
// 在某个元素后代范围内查找
divEl.querySelector("div");
querySelectorAll()
接受一个css选择符,返回第一个NodeList实例(静态,非实时)
var list = document.querySelectorAll("div");
matchesSelector()
接受一个css选择符,如果调用元素与该css选择符匹配,返回true,否则返回false
#元素遍历
childElementCount()
返回子元素的个数(不包括文本节点和注释)
firstElementChild()
指向第一个子元素(ELement类型)
lastElementChild()
指向最后一个子元素(ELement类型)
previousElementSibling()
指向前一个同胞元素(ELement类型)
nextElementSibling()
指向后一个同胞元素(ELement类型)
/**
<ul id ="myList">
<li>1</li>
<li>2</li>
</ul>
*/
var list = document.querySelector("#myList");
console.log(list.childNodes.length);//5
console.log(list.childElementCount);//2
HTML5
HTML5新增了很多API
###与类相关
1.
document.getElementsByClassNameName();
classList
属性
HTML5新增了操作类名的方式。为所有的元素添加classList属性。
classList是DOMTockenList的实例
add(value)
将给定的值添加到列表中,如果值已存在,就不添加。
contains()
表示列表中是否存在指定的值
remove()
从列表中删除指定的值
toggle()
如果列表中存在,删除它,否则,添加它
###焦点管理
activeElement
属性,改属性始终引用DOM树中的获得焦点的元素。元素获得焦点的方式有页面加载,用户输入,在代码中调用focus()
document.hasFocus()
确定文档是否获得焦点
###HTMLDocument的变化
1.document.readyState
该属性有两个可能的值,
loading
正在加载文档
complete
文档加载完成
2.document.compatMode
属性,表示浏览器渲染页面的模式
标准模式值为"CSS1Compat"
混杂模式值为"backCompat"
3.head属性
4.字符集属性
document.charset文档实际使用的字符集
document.defaultCharset浏览器默认字符集
5.自定义属性
data-
dataset
属性的值是一个DOMStringMap的一个实例。包含键值对。在映射中,data-name形式自定义属性有对应的属性。
//<div class="mod-relation" data-version="1.0.0"></div>
//访问自定义属性
document.querySelector(".mod-relation").dataset.version;//1.0.0
//修改自定义属性
document.querySelector(".mod-relation").dataset.version = 5;
6.插入标记
innerHTML
属性
返回内容包含描述所有元素后代的序列化HTML代码的字符串
outerHTML
属性
获取元素(包括其后代)的序列化HTML片段。它也可以设置为用从给定字符串解析的节点替换元素。
/**
<div id="content">
xixi&
</div>
*/
var con = document.querySelector("#content");
console.log(con.innerHTML);//xixi&
con.innerHTML = "<h1>inner</h1>";
console.log(con.innerHTML);//a & b<h1>innerHTML</h1>
console.log(con.outerHTML);//<div id="content">a & b<h1>innerHTML</h1></div>
insertAdjacentHTML()
将指定的文本解析为HTML或XML,并将结果节点插入到DOM树中的指定位置。
/*
html-----------
<div id="outer">
<div id="content">inner</div>
</div>
css------------
#outer {
border: 1px solid green;
}
#content {
border:1px solid red;
}
*/
//在该元素之前插入一个同胞元素
con.insertAdjacentHTML("beforebegin","<p>beforeagain</p>");
//在该元素之前插入一个子元素
con.insertAdjacentHTML("afterbegin","<p>afterbegin</p>");
//在该元素之后插入一个子元素
con.insertAdjacentHTML("beforeend","<p>beforeend</p>");
//在该元素之后插入一个同胞元素
con.insertAdjacentHTML("afterend","<p>afterend</p>");
注意: beforebegin和afterend位置,仅在节点在树中且节点具有一个parent元素时工作.
scrollIntoView()
scrollIntoView()可以在任何函数上调用,参数为boolean类型,传入参数为true,使得元素顶部尽可能与窗口顶部对齐。传入参数为false,使得元素顶部尽可能与窗口底部对齐。
`contains()
判断某个节点是不是某个节点的后代。用父节点调用contains()方法, 传入要检测的节点。
document.querySelector("html").contains(document.head);//true
document.body.contains(document.head);//false