【DOM】Document类型

1、在浏览器中,ducument对象是HTMLDocument(继承至Document类型)的一个实例,表示整个HTML页面。
2、document对象是window对象的一个属性,因此可以将其作为全局对象来访问。

document节点特征

  • nodeType的值是9;
  • nodeName的值为“#document”;
  • nodeValue的值为null;
  • parentNode的值为null;
  • ownerDocument的值为null;
  • 其子节点可能是一个DocumentType(最多一个)、Element(最多一个)、ProcessingInstruction或Comment。

文档的子节点

所有浏览器都支持document.documentElementdocument.body属性。

documentElement属性

  • documentElement属性:该属性始终指向HTML页面中的<html>元素。(更快捷、更直接)
  • childNodes属性:访问文档元素。
<html>
    <body>
    </body>
</html>
//这个页面经过浏览器解析后,其文档中只包含一个子节点,即<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的支持不一致,因此这个属性的用处很有限。
同样,浏览器之间的不一致性也导致位于<html>元素外部的注释没有什么用处。

文档类型(如果存在的话)是只读的,而且只能有一个元素子节点,因此用不着在document对象上调用appandChild()、removeChild()和replaceChild()方法。

文档信息

title属性

//取得文档标题
var originalTitle = document.title;

//设置文档标题
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是可以设置的。但由于安全方面的限制,并不是可以设置任何值。

//假设页面来自p2p.wrox.com域
document.domain = "wrox.com";       //成功
document.domain = "nczonline.net";  //出错!

由于跨域安全限制,来自不同子域的页面无法通过JavaScript通信,而通过将每个页面的document.domain设置为相同的值,这些页面就可以互相访问对方包含的JavaScript对象

/* 
 浏览器对domain的限制:如果域名一开始是“松散的”(loose),那么不能将它设置为“紧绷的”(tight)。
*/
//假设页面来自于p2p.wrox.com域
document.domain = "wrox.com";       //松散的(成功)
document.domain = "p2p.wrox.com";   //紧绷的(出错!)

查找元素

getElementById()

/*
 * getElementById()
 * param:要取得元素的ID。
 *       (必须与页面中元素的id特性严格匹配,包括大小写)
 * 返回:
 *       如果找到相应的元素则返回该元素;
 *       如果不存在带有相应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对象,作为一个“动态”集合。)
 */
 
 //取得页面所有<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特性的所有元素。
 */
 //最常用的是取得单选按钮:确保发送给浏览器的值正确无误,所有单选按钮必须具有相同的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")得到的结果相同;
  • document.images:包含文档中所有的<img>元素,与document.getElementsByTagName("img")得到的结果相同;
  • document.links:包含文档中所有带href特性的<a>元素。

文档写入

write()、writeln()、open()、close()

write()、writeln()方法接受一个字符串参数,即要写入到输出流的文本。在页面被夹在过程中,可以使用这两个方法向页面中动态的加入内容。
open()、close()分别用来打开和关闭网页的输出流。如果是在页面加载期间使用write()或writeln()方法,则不需要用到这两个方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,099评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,473评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,229评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,570评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,427评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,335评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,737评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,392评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,693评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,730评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,512评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,349评论 3 314
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,750评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,017评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,290评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,706评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,904评论 2 335

推荐阅读更多精彩内容