1、在瀏覽器中械馆,ducument對象是HTMLDocument(繼承至Document類型)的一個實例耍攘,表示整個HTML頁面。
2堪滨、document對象是window對象的一個屬性胯陋,因此可以將其作為全局對象來訪問。
document節(jié)點特征
- nodeType的值是9袱箱;
- nodeName的值為“#document”遏乔;
- nodeValue的值為null;
- parentNode的值為null发笔;
- ownerDocument的值為null盟萨;
- 其子節(jié)點可能是一個DocumentType(最多一個)、Element(最多一個)了讨、ProcessingInstruction或Comment捻激。
文檔的子節(jié)點
所有瀏覽器都支持document.documentElement和document.body屬性制轰。
documentElement屬性
- documentElement屬性:該屬性始終指向HTML頁面中的<html>元素。(更快捷胞谭、更直接)
- childNodes屬性:訪問文檔元素垃杖。
<html>
<body>
</body>
</html>
//這個頁面經(jīng)過瀏覽器解析后,其文檔中只包含一個子節(jié)點丈屹,即<html>元素调俘。
var html = document.documentElement; //取得對<html>的引用
alert(html === document.childNodes[0]); //true
alert(html === document.firstChild); //true
body屬性
var body = document.body; //取得對<body>的引用
doctype屬性
var doctype = document.doctype; //取得對<!doctype>的引用
因為瀏覽器對document.doctype的支持不一致,因此這個屬性的用處很有限旺垒。
同樣彩库,瀏覽器之間的不一致性也導(dǎo)致位于<html>元素外部的注釋沒有什么用處。
文檔類型(如果存在的話)是只讀的袖牙,而且只能有一個元素子節(jié)點侧巨,因此用不著在document對象上調(diào)用appandChild()、removeChild()和replaceChild()方法鞭达。
文檔信息
title屬性
//取得文檔標題
var originalTitle = document.title;
//設(shè)置文檔標題
document.title = "New Page title";
URL屬性
包含頁面完整的URL。(即地址欄中顯示的URL)
domain屬性
包含頁面的域名皇忿。
referrer屬性
保存著鏈接到當前頁面的那個頁面的URL畴蹭。在沒有來源頁面的情況下,referrer屬性中可能會包含空字符串鳍烁。
//取得完整的URL
var url = document.URL;
//取得域名
var domain = document.domain;
//取得來源頁面的URL
var referrer = document.referrer;
三個屬性中叨襟,只有domain是可以設(shè)置的。但由于安全方面的限制幔荒,并不是可以設(shè)置任何值糊闽。
//假設(shè)頁面來自p2p.wrox.com域
document.domain = "wrox.com"; //成功
document.domain = "nczonline.net"; //出錯!
由于跨域安全限制爹梁,來自不同子域的頁面無法通過JavaScript通信右犹,而通過將每個頁面的document.domain設(shè)置為相同的值,這些頁面就可以互相訪問對方包含的JavaScript對象姚垃。
/*
瀏覽器對domain的限制:如果域名一開始是“松散的”(loose)念链,那么不能將它設(shè)置為“緊繃的”(tight)。
*/
//假設(shè)頁面來自于p2p.wrox.com域
document.domain = "wrox.com"; //松散的(成功)
document.domain = "p2p.wrox.com"; //緊繃的(出錯;础)
查找元素
getElementById()
/*
* getElementById()
* param:要取得元素的ID掂墓。
* (必須與頁面中元素的id特性嚴格匹配,包括大小寫)
* 返回:
* 如果找到相應(yīng)的元素則返回該元素看成;
* 如果不存在帶有相應(yīng)ID的元素君编,則返回null
*/
<div id="myDiv">text</div>
var div = document.getElementById("myDiv");
var div = document.getElementById("mydiv"); // 無效的ID(IE7 及以前可以)
getElementsByTagName()
/*
* getElementsByTagName()
* param:要取得元素的標簽名。
* 返回:包含0或多個元素的NodeList川慌。
* (在HTML文檔中吃嘿,這個方法會返回一個HTMLCollection對象偿荷,作為一個“動態(tài)”集合。)
*/
//取得頁面所有<img>元素唠椭,并返回一個HTMLCollection跳纳。
var images = document.getElementsByTagName("img");
//可以用方括號語法或item()方法來訪問HTMLCollection對象中的項。
alert(images.length);
alert(images[0].src);
alert(images.item(0).src);
//HTMLCollection還有一個方法:namedItem()贪嫂,可以通過元素的name特性取得集合中的項寺庄。
<img src="myimage.jpg" name="myImage">
var myImage = images.namedItem("myImage");
var myImage = images["myImage"];
//取得文檔中所有元素,向getElementsByTagName()中傳入“*”力崇。
var allElement = document.getElementsByTagName("*");
getElementsByName
只有HTMLDocument類型才有的方法斗塘。
/*
* getElementsByName()
* param:要取得元素的name。
* 返回:帶有給定name特性的所有元素亮靴。
*/
//最常用的是取得單選按鈕:確保發(fā)送給瀏覽器的值正確無誤馍盟,所有單選按鈕必須具有相同的name特性。
<input name="x" type="radio" value="貓">
<input name="x" type="radio" value="狗">
var x=document.getElementsByName("x");
alert(x.length);
特殊集合
- document.anchors:包含文檔中所有帶name特性的<a>元素茧吊;
- document.applets:包含文檔中所有的<applet>元素(不推薦使用)
- document.forms:包含文檔中所有的<form>元素贞岭,與document.getElementsByTagName("form")得到的結(jié)果相同;
- document.images:包含文檔中所有的<img>元素搓侄,與document.getElementsByTagName("img")得到的結(jié)果相同瞄桨;
- document.links:包含文檔中所有帶href特性的<a>元素。
文檔寫入
write()讶踪、writeln()芯侥、open()、close()
write()乳讥、writeln()方法接受一個字符串參數(shù)柱查,即要寫入到輸出流的文本。在頁面被夾在過程中云石,可以使用這兩個方法向頁面中動態(tài)的加入內(nèi)容唉工。
open()、close()分別用來打開和關(guān)閉網(wǎng)頁的輸出流留晚。如果是在頁面加載期間使用write()或writeln()方法酵紫,則不需要用到這兩個方法。