1 <!DOCTYPE html>
2 <html>
3
4 <head>
5 <meta charset="utf-8" />
6 <title>Selectors API(querySelector()方法;querySelectorAll()方法) 元素遍历</title>
7 </head>
8
9 <body>
10
11 </body>
12 <script>
13 /*
14 querySelector()方法接收一个 CSS选择符,返回与该模式匹配的第一个元素,如果没有找到匹配的元素,返回 null。
15 querySelectorAll()方法接收的参数与 querySelector()方法一样,都是一个 CSS 选择符,但返回的是所有匹配的元素而不仅仅是一个元素。
16 这个方法返回的是一个 NodeList 的实例。具体来说,返回的值实际上是带有所有属性和方法的 NodeList,而其底层实现则类似于一组元素
17 的快照,而非不断对文档进行搜索的动态查询。这样实现可以避免使用 NodeList 对象通常会引起的大多数性能问题。
18 与 querySelector()类似,能够调用 querySelectorAll()方法的类型包括 Document、DocumentFragment 和 Element。
19 * */
20 //取得 body 元素
21 var body = document.querySelector("body");
22 //取得 ID 为"myDiv"的元素
23 var myDiv = document.querySelector("#myDiv");
24 //取得类为"selected"的第一个元素
25 var selected = document.querySelector(".selected");
26 //取得类为"button"的第一个图像元素
27 var img = document.body.querySelector("img.button");
28 /*
29 Selectors API Level 2 规范为 Element 类型新增了一个方法 matchesSelector()。这个方法接收
30 一个参数,即 CSS 选择符,如果调用元素与该选择符匹配,返回 true;否则,返回 false。看例子。
31 if (document.body.matchesSelector("body.page1")){
32 //true
33 } */
34 /*
35 元素遍历(详见javascript高级程序设计---DOM扩展)
36 对于元素间的空格,IE9 及之前版本不会返回文本节点,而其他所有浏览器都会返回文本节点。这样,
37 就导致了在使用 childNodes 和 firstChild 等属性时的行为不一致。为了弥补这一差异,而同时又保
38 持 DOM 规范不变,Element Traversal 规范(www.w3.org/TR/ElementTraversal/)新定义了一组属性。
39 * */
40
41 </script>
42
43 </html>