Js經過Document表示文檔類型。javascript
document對象是HTMLDocument的實例,HTMLDocument繼承自Document類型。html
document對象是window對象的一個屬性。java
Document與Node的關係:node
Js中因此節點類型都繼承自Node類型,節點類型都享有共同的·基本屬性和方法chrome
Document節點具備如下特徵:瀏覽器
Document子節點多是一個DocumentType,Element,或ProcessingInstrucion,Commentdom
(1)Document節點訪問Element子節點的方式有兩種:this
documentElement屬性,該屬性始終指向HTML頁面的url
經過childNodes列表也能夠訪問文檔元素code
var html=document.documentElement; alert(html);//[object HTMLHtmlElement] alert(document.childNodes[1]);//[object HTMLHtmlElement] alert(html===document.childNodes[1]);//true
doucment還有body屬性,指向元素。
window.onload=function(){ document.body.style.backgroundColor = "yellow";//須要事件觸發 }
(2)Document節點訪問DocumentType子節點的方式:
一般將<!DOCTYPE>標籤當作一個與文檔不一樣的實體
document.childNodes[0]
document.doctype屬性
alert(document.childNodes[0]);//[object DocumentType] alert(document.childNodes[0]===document.doctype);//true
瀏覽器對document.doctype屬性的支持不一致
(3)對於標籤外的註釋,不一樣的瀏覽器處理的方式多是不一樣的
<!--這裏是註釋--> <html> <body> .... </body> </html> <!--這裏是註釋-->
這個頁面看起來一個有兩個子節點:註釋,元素,註釋。可是在瀏覽器中有不一樣處理方式。有的可能忽略註釋,有的可能只爲第一個註釋創造節點,有的會將這兩種註釋都當作節點。
document做爲HTMLDocument的實例,有一些Document沒有的屬性
title屬性:獲取
document.title="new page title"
URL屬性:包含頁面完整的url
domain屬性:包含頁面的域名,只有domain可設置,但不能將其設置爲URL不包含的域
referrer屬性:保存着連接到當前頁面的那個頁面的url,在沒有來源頁面的狀況下,referrer可能會包含空字符串。
var url=document.URL; alert(url); var domain=document.domain;//只有domain可設置 alert(domain); var referrer=document.referrer; alert(referrer);
(1)getElementById(元素的id)
若是不存帶相應id的參數則會返回null,若是有多個元素帶相同的id,則返回文檔中第一次出現的元素
(2) getElementByTagName():接收一個參數,即要獲取的元素標籤名,返回的就是包含0或多個元素的NodeList。在html文檔中,會返回一個與NodeList類似的」動態「集合HTMLCollection。
HTMLCollection對象有一些方法和屬性:
length屬性
item()方法:訪問對象中的項,傳入索引值,和[ ]用法相似
namedItem()方法:經過元素的name特徵取得項,傳入name特徵名
<img src="1.jpg" name="myPic"> ... var images= getElementByTagName("img"); var myPic=images.namedItem("myPic");
要獲取文檔全部的元素,能夠向getElementByTagName()中傳入「*」,這樣返回HTMLCollection就包含整個頁面的全部元素,並按出現的前後順序排序。
(3)getElementByName():該方法只有HTMLDocument纔有,這個方法會返回全部給定name特性的元素。
這些都是HTMLCollection對象爲訪問文檔經常使用部分提供的快捷方式
因爲DOM有多個級別和部分,因此須要檢測瀏覽器實現了DOM的哪些部分。
document.implementation屬性爲此提供了相應的信息和功能對象。
document.implementation.hasFeature():接收兩個參數,要檢測的DOM功能名稱和版本號。若是瀏覽器支持就返回true.
alert(document.implementation.hasFeature("CSS","1.0"));//chrome中true
hasFeature的缺點:
實現這能夠自行決定是否與DOM規範部分保持一致。因此除了hasFeature檢測外,還可使用能力檢測。
將輸出流寫入網頁中,有四種方法:write(),writeln(),open()和close()。每個都接收一個字符串參數,即要寫入輸出流的文本。
<body> <p>this time is:</p> <script type="text/javascript"> document.write("<b>"+(new Date()).toString()+"</b>"); </script> </body>
writeln()方法會比write()方法的後面多加「\n"。
若是在文檔加載結束後調用document.write,那麼輸出內容將重寫整個頁面
<body> <p>this time is:</p> <script type="text/javascript"> window.onload=function(){ document.write("<b>"+(new Date()).toString()+"</b>"); } </script> </body>
open()和close()分別用於打開和關閉網頁輸出流。
function createNewDoc() { var newDoc=document.open("text/html","replace"); var txt="<html><body>Learning about the DOM is FUN!</body></html>"; newDoc.write(txt); newDoc.close(); }