Javascript-DOM擴展

一、選擇符API

Selectors API(www.w3.org/TR/selectors-api/)是由W3C 發起制定的一個標準,致力于讓瀏覽器原生支持CSS 查詢。所有實現這一功能的JavaScript 庫都會寫一個基礎的CSS 解析器,然后再使用已有的DOM 方法查詢文檔并找到匹配的節點。

1、querySelector()方法

querySelector()方法接收一個CSS 選擇符,返回與該模式匹配的第一個元素,如果沒有找到匹配的元素,返回null。

var obody = document.querySelector("body");
var myDiv = document.querySelector("#myDiv");
var selected = document.querySelector(".selected");
var img = document.body.querySelector("img.button");

2、querySelectorAll()方法

querySelectorAll()方法接收的參數與querySelector()方法一樣,都是一個CSS 選擇符,但返回的是所有匹配的元素而不僅僅是一個元素。這個方法返回的是一個NodeList 的實例。

3、matchesSelector()方法

這個方法接收一個參數,即CSS 選擇符,如果調用元素與該選擇符匹配,返回true;否則,返回false。

二、遍歷元素

三、HTML5

1 、與類相關的擴充

·getElementsByClassName()支持getElementsByClassName()方法的瀏覽器有**IE 9+**、Firefox 3+、Safari 3.1+、Chrome 和Opera 9.5+。classList屬性`

HTML5 新增了一種操作類名的方式,可以讓操作更簡單也更安全,那就是為所有元素添加classList 屬性。這個classList 屬性是新集合類型DOMTokenList 的實例。與其他DOM 集合類似,DOMTokenList 有一個表示自己包含多少元素的length 屬性,而要取得每個元素可以使用item()方法,也可以使用方括號語法。此外,這個新類型還定義如下方法。
add(value):將給定的字符串值添加到列表中。如果值已經存在,就不添加了。
?contains(value):表示列表中是否存在給定的值,如果存在則返回true,否則返回false。
?remove(value):從列表中刪除給定的字符串。
? toggle(value):如果列表中已經存在給定的值,刪除它;如果列表中沒有給定的值,添加它。

2、焦點管理

元素獲得焦點的方式有頁面加載、用戶輸入(通常是通過按Tab 鍵)和在代碼中調用focus()方法。
document.activeElement屬性 hasFocus()方法

var button = document.getElementById("myButton");
button.focus();
alert(document.activeElement === button);   
alert(document.hasFocus()); 

注意:默認情況下,文檔剛剛加載完成時,document.activeElement 中保存的是document.body 元素的引用。文檔加載期間,document.activeElement 的值為null。

3、HTMLDocument的變化

readyState屬性
有兩個值:

  • loading,正在加載文檔
  • complete,已經加載完文檔
if(document.readyState === "complete"){
}

compatMode 兼容模式
自從IE6 開始區分渲染頁面的模式是標準的還是混雜的,檢測頁面的兼容模式就成為瀏覽器的必要功能。
head屬性
HTML5新增的document.head屬性

4、字符集屬性

document.charset
document.defaultCharset

5、自定義數據屬性

HTML5 規定可以為元素添加非標準的屬性,但要添加前綴data-,目的是為元素提供與渲染無關的信息,或者提供語義信息。這些屬性可以任意添加、隨便命名,只要以data-開頭即可

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <div id="myDiv" data-appid="12345" data-myname="Tom"></div>
        <script>
        var div = document.getElementById("myDiv");
        var appId = div.dataset.appid;
        var myName = div.dataset.myname;

        div.dataset.appid = 3434;
        div.dataset.myname = "jerry";
        if(div.dataset.myname){
            alert("hello, " + div.dataset.myname);
        }
        </script>
    </body>
</html>

6、插入標記

innerHTML屬性
outerHTML屬性

7、scrollIntoView()方法

四、專有方法

children屬性
個屬性是HTMLCollection 的實例,只包含元素中同樣還是元素的子節點。除此之外,children 屬性與childNodes 沒有什么區別,即在元素只包含元素子節點時,這兩個屬性的值相同。
contains()方法

alert(document.documentElement.contains(document.body)); //true

innerText
通過innertText 屬性可以操作元素中包含的所有文本內容,包括子文檔樹中的文本。在通過innerText 讀取值時,它會按照由淺入深的順序,將子文檔樹中的所有文本拼接起來。在通過innerText 寫入值時,結果會刪除元素的所有子節點,插入包含相應文本值的文本節點
outerText
除了作用范圍擴大到了包含調用它的節點之外,outerText 與innerText 基本上沒有多大區別。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 選擇符API Selectors API(www.w3.org/TR/selectors-api/)是由W3C發起...
    shanruopeng閱讀 255評論 0 0
  • 概述 DOM(Document Object Model)文檔對象模型,指的是 XML 文檔,需要說明的是,HTM...
    bowen_wu閱讀 406評論 0 0
  • 基本介紹 文檔對象模型 (DOM) 是HTML和XML文檔的編程接口。它給文檔(結構樹)提供了一個結構化的表述并且...
    草鞋弟閱讀 475評論 0 0
  • 經典臺詞: 樹林:搶劫,兜兒給我裝滿咯、 程:歡迎歡迎熱烈歡迎,歡迎歡迎,熱烈歡迎 樹林:停,尊重一下我的職業好不...
    一切趁早l閱讀 274評論 1 1
  • 1如果不讀書,行萬里路你也不過就是個郵差。 透析:猶太人有對智慧渴望的基因,而書籍,是智者留下的感悟。 2如果你只...
    萬華商學院閱讀 258評論 0 0