document对象

1、简介

  • 当浏览器载入 HTML 文档, 它就会成为 Document 对象。
  • Document 对象是 HTML 文档的根节点。
  • Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问。
  • 提示:Document 对象是 Window 对象的一部分,可通过 window.document 属性对其进行访问。

2、DOM结构树

document 构造函数 -> HTMLDocument
HTMLDocument 构造函数 -> Document
HTMLDocument 构造出来的对象里面有 __proto__ .Document.prototype

document.__proto__ = HTMLDocument.prototype
HTMLDocument.__proto__ = Document.prototype

最终:
document 》HTMLDocument 》Document 》Node

3、获取元素的方法

// 获取元素的方法
getElementById(): 返回单个元素
    Document.prototype 中有该方法
    Element.prototype  HTMLElement.protottpe 没有该方法

getElementsByTagName(): 返回一组元素,类数组
getElementsByTagName('*') 获取所有的元素
    Document.prototype; Element.prototype 都有该方法

// getElementByTagName 原理
function getElementByTagName(element) {
    // 1、从HTML中把p元素选择出来
    // 2、new HTMLParagraphElment()
    // 3、经过实例化变为 DOM节点,DOM元素,就可以使用相应的方法
}

Document.prototype; Element.prototype 有以下四个方法:

getElementsByClassName(): 返回一组元素,类数组 IE8及以下不支持
getElementsByName(): 返回一组元素,类数组. 很少用

// 新引入WEB API, IE7就出现了
querySelector(参数为CSS选择器一样): 返回单个元素
querySelectorAll(参数为CSS选择器一样): 返回一组元素,类数组 
// 缺点: 1、性能比getElement 系列慢; 2、不实时,有缓存片段

4、其他常用方法

document.createDocumentFragment() 创建文档碎片
document.createElement()  创建元素节点
document.createComment() 创建注释节点
document.createTextNode() 创建文本节点
document.open() 打开一个流
document.write() 向文档写 HTML 表达式 或 JavaScript 代码。
document.close() 关闭用 document.open() 方法打开的输出流,并显示选定的数据。

5、属性-不常用-了解即可

对象属性:
document.head                // 获取head元素
document.title                 //设置文档标题等价于HTML的<title>标签
document.bgColor               //设置页面背景色
document.fgColor               //设置前景色(文本颜色)
document.linkColor             //未点击过的链接颜色
document.alinkColor            //激活链接(焦点在此链接上)的颜色
document.vlinkColor            //已点击过的链接颜色
document.URL                   //设置URL属性从而在同一窗口打开另一网页
document.fileCreatedDate       //文件建立日期,只读属性
document.fileModifiedDate      //文件修改日期,只读属性
document.fileSize              //文件大小,只读属性
document.cookie                //设置和读出cookie
document.charset               //设置字符集 简体中文:gb2312


body-主体子对象
document.body                   //指定文档主体的开始和结束等价于<body></body>
document.body.bgColor           //设置或获取对象后面的背景颜色
document.body.link              //未点击过的链接颜色
document.body.alink             //激活链接(焦点在此链接上)的颜色
document.body.vlink             //已点击过的链接颜色
document.body.text              //文本色
document.body.innerText         //设置<body>...</body>之间的文本
document.body.innerHTML         //设置<body>...</body>之间的HTML代码
document.body.topMargin         //页面上边距
document.body.leftMargin        //页面左边距
document.body.rightMargin       //页面右边距
document.body.bottomMargin      //页面下边距
document.body.background        //背景图片
document.body.appendChild(oTag) //动态生成一个HTML对象

常用对象事件:
document.body.onclick="func()"              //鼠标指针单击对象是触发
document.body.onmouseover="func()"          //鼠标指针移到对象时触发
document.body.onmouseout="func()"           //鼠标指针移出对象时触发 


location-位置子对象:
document.location.hash          // #号后的部分
document.location.host          // 域名+端口号
document.location.hostname      // 域名
document.location.href          // 完整URL
document.location.pathname      // 目录部分
document.location.port          // 端口号
document.location.protocol      // 网络协议(http:)
document.location.search        // ?号后的部分

常用对象事件:
documeny.location.reload()          //刷新网页
document.location.reload(URL)       //打开新的网页
document.location.assign(URL)       //打开新的网页
document.location.replace(URL)      //打开新的网页


selection-选区子对象
document.selection


images集合(页面中的图象):
a)通过集合引用
document.images                 //对应页面上的<img>标签
document.images.length          //对应页面上<img>标签的个数
document.images[0]              //第1个<img>标签           
document.images[i]              //第i-1个<img>标签

b)通过name属性直接引用
<img name="oImage">
document.images.oImage          //document.images.name属性

c)引用图片的src属性
document.images.oImage.src      //document.images.name属性.src

d)创建一个图象
var oImage
oImage = new Image()
document.images.oImage.src="1.jpg"
同时在页面上建立一个<img>标签与之对应就可以显示

示例代码(动态创建图象):
<html>
<img name=oImage>
<script language="javascript">
       var oImage
       oImage = new Image()
       document.images.oImage.src="1.jpg"
</script>
</html>

<html>
<script language="javascript">
       oImage=document.caeateElement("IMG")
       oImage.src="1.jpg"
       document.body.appendChild(oImage)
</script>
</html>


forms集合(页面中的表单):
a)通过集合引用
document.forms                     //对应页面上的<form>标签
document.forms.length              //对应页面上<form>标签的个数
document.forms[0]                  //第1个<form>标签
document.forms[i]                  //第i-1个<form>标签
document.forms[i].length           //第i-1个<form>中的控件数
document.forms[i].elements[j]      //第i-1个<form>中第j-1个控件

b)通过标签name属性直接引用
<form name="Myform"><input name="myctrl"></form>
document.Myform.myctrl             //document.表单名.控件名

c)访问表单的属性
document.forms[i].name             //对应<form name>属性
document.forms[i].action           //对应<form action>属性
document.forms[i].encoding         //对应<form enctype>属性
document.forms[i].target           //对应<form target>属性
document.forms[i].appendChild(oTag) //动态插入一个控件

6、文档碎片优化

// document.createDocumentFragment(); 创建文档片段(碎片), 不在DOM树中,只存在内存中
var oUl = document.getElementById('list');
var oFrag = document.createDocumentFragment();
for(var i = 0; i < 10000; i++) {
    var oLi = document.createElement('li');
    oLi.innerHTML = i + '、这是第' + i + '个项目';
    oLi.className = 'list-item';
    oFrag.appendChild(oLi);
}
oUl.appendChild(oFrag);