0

0

JavaScript文档对象模型-Document类型

黄舟

黄舟

发布时间:2017-01-20 14:27:56

|

1580人浏览过

|

来源于php中文网

原创

javascript通过document类型来表示文档。在浏览器中,document对象是htmldocument的一个实例,表示整个html页面。而且document对象是window对象的一个实例,因此可以将它作为全局对象来访问。document类型节点具有下面的一些特征:

它的子节点可能是一个DocumentType(最多一个)、Element(最多一个)、ProcessingInstruction或Comment。

Document类型可以表示HTML页面或其它基于XML的文档。最常见的应用是作为HTMLDocument实例的document对象。通过这个文档对象,不仅可以取得与页面相关的信息,而且还能操作页面的外观和它底层的结构。

 文档的子节点

虽然DOM标准规定Document节点的子节点可以是DocumentType、、Element、ProcessingInstruction或Comment,但还有两个内置的访问它的子节点的快捷方式。第一个是documentElement属性,该属性始终指向HTML页面的元素。另一个是通过childNodes列表访问文档元素,但是通过documentElement属性能够更加快捷的访问该元素。下面是一个例子:


    
         
    

上面的页面经过浏览器解析之后,其文档中只包含一个子节点,及元素。通过documentElement属性和childNodes列表来访问这个元素的代码如下:

//取得元素的引用
var html = document.documentElement;
alert(html === document.childNodes[0]);     //true
alert(html === document.firstChild);        //true

上面的例子说明,documentElement、firstChild和childNodes[0]的值相同,都指向元素。

作为HTMLDocument的实例,document对象还有一个body属性,直接指向

属性。document.body是我们在开发中经常使用的属性:
var body = document.body;

所有的浏览器都支持document.documentElement属性和document.body属性。

Document另外一个可能的子节点是DocumentType,通常将标签看成一个与文档其它部分不同的实体,可以通过doctype属性来访问它。

var doctype = document.doctype;     //获取的引用

 document对象的属性和方法

document对象是window对象的一个属性。当窗口划分为几个框架的时候,每一个框架都是window对象的一个属性,框架本身实际上也是window对象的一个实例。document对象的常用属性如下表所示:

506.png

上面列出的是一些常用的document属性,要查看当前浏览器支持的所有document属性,可以使用下面的方法:

var attrs = new Array();
for(var property in window.document) {
    attrs.push(property);
    attrs.sort();
}
document.write("");
for(var i=0;i");
    }
    if(i > 0 && i%5 == 0){
        document.write("");
    }
    document.write("");
}
document.write("
" + attrs[i] + "
");

上面的代码会将当前浏览器支持的document属性按字母排序后移表格的方式打印在页面中。

在上面的document对象的属性中,URL、domain和referrer属性于网页的请求有关。URL属性包含完整的URL地址,及线索在地址栏中的页面地址。domain属性只包含页面的域名,而referrer属性中则保存着链接到当前页面的那一个页面的URL地址。在没有来源页面的情况下,referrer属性可能包含空字符串。所有的这些信息都在HTTP请求头中,只不过我们可以使用JavaScript来访问它们。

//取得完整的URL地址
var URL = document.URL;
//取得域名
var domain = document.domain;
//取得来源页面的URL
var referrer = document.referrer;

 查找元素

在DOM的应用当中,最常见的操作时取得某个或某组元素的引用,然后再执行一些操作。取得元素的操作可以通过document对象的以下一些方法来完成。

  • document.getElementById()

  • document.getElementsByTagName

    Maven 使用指南 中文WORD版
    Maven 使用指南 中文WORD版

    本文档主要讲述的是Maven 使用指南;Apache Maven,是一个软件(特别是Java软件)项目管理及自动构建工具,由Apache软件基金会所提供。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看

    下载
  • document.getElementsByName()

第一个方法document.getElementById()接收一个参数:要获取的元素的ID。如果找到该元素则返回该元素,否则返回null。如果页面中存在多个具有相同ID的元素,那么getElementById()方法只返回文档中第一次的元素。在IE7及以下版本的IE浏览器中,如果表单元素的name属性与要查找的元素ID相同,该表单元素也会被返回,例如:


div

当使用document.getElementById("someId")来查找元素的时候,IE7浏览器会将元素返回。而其它浏览器则是返回div元素。

另一个经常使用的方法是document.getElementsByTagName,通过标签名来查找元素。该方法接收一个参数:要查找的标签名称。它会返回0个或多个元素的NodeList。在HTML文档中,该方法返回一个HTMLCollection对象,称为“动态”集合。例如,下面的代码获取页面中所有的JavaScript文档对象模型-Document类型元素,并返回一个HTMLCollection:

var images = document.getElementByTagName("img");

与NodeList相似,可以使用方括号语法或item()方法来访问HTMLCollection对象:

alert(images.length);           //图片的数量
alert(images[0].src);           //第一张图片的src属性
alert(images.item(0).src);      //第一张图片的src属性

HTMLCollection对象还有一个方法:namedItem(),使用这个方法可以通过元素的name属性取得集合中的项。例如上面的图片集合中,如果有一张图片的name属性为mypic:

@@##@@

那么就可以通过下面的方法从images变量中获取这张图片:

var mypic = images.namedItem("mypic");

如果想要获取页面中的所有元素,可以通过在getElementByTagName()方法中传入“*”通配符来获取。

var allElements = document.getElementByTagName("*");

第3个获取元素的方法是HTMLDocument特有的方法:getElementByName()。该方法会返回指定name属性的所有元素。例如下面的代码:

var authors = document.getElementByName("author");

上面的代码会返回所有的li元素。同样,getElementByName()方法也会返回一个HTMLCollection对象。

 HTML5中的querySelector和querySelectorAll方法

除了上面的三个查找元素的方法之外,在HTML5向Web API新引入了新的document.querySelector和document.querySelectorAll方法用来更方便地从DOM选取元素,功能类似于jQuery的选择器。

这两个方法使用差不多的语法,都是接收一个字符串参数,这个参数需要是合法的CSS选择语法。

element = document.querySelector('selectors');
elementList = document.querySelectorAll('selectors');

其中参数selectors 可以包含多个CSS选择器,用逗号隔开。

element = document.querySelector('selector1,selector2,...');
elementList = document.querySelectorAll('selector1,selector2,...');

使用这两个方法无法查找带伪类状态的元素,比如querySelector(':hover')不会得到预期结果。

querySelector方法返回满足条件的单个元素。按照深度优先和先序遍历的原则使用参数提供的CSS选择器在DOM进行查找,返回第一个满足条件的元素。

element = document.querySelector('div#container');//返回id为container的首个div
element = document.querySelector('.foo,.bar');//返回带有foo或者bar样式类的首个元素

querySelectorAll方法返回所有满足条件的元素,结果是个nodeList集合。查找规则与前面所述一样。

elements = document.querySelectorAll('div.foo');//返回所有带foo类样式的div

但需要注意的是返回的nodeList集合中的元素是非实时(no-live)的,想要区别什么是实时非实时的返回结果,请看下面的例子:

//首先选取页面中id为container的元素
container=document.getElementById('#container');
console.log(container.childNodes.length)//结果为2
//然后通过代码为其添加一个子元素
container.appendChild(document.createElement('div'));
//这个元素不但添加到页面了,这里的变量container也自动更新了
console.log(container.childNodes.length)//结果为3

通过上面的例子就很好地理解了什么是会实时更新的元素。document.getElementById返回的便是实时结果,上面对其添加一个子元素后,再次获取所有子元素个数,已经由原来的2个更新为3个(这里不考虑有些浏览器比如Chrome会把空白也解析为一个子节点)。

 文档的写入

document对象可以将输出流写入到网页中,它有4个方法:write()、writeln()、open()和close()。其中,write()和writeln()方法接收一个字符串参数,即要写入到输出流的文本。write()方法会原样写出,而writeln()方法会在字符串的末尾添加一个换行符(\n)。在页面加载的过程中,可以使用这两个方法来动态的添加内容,例如下面的代码:




    
    Document


    

当前的时间为:

以上就是JavaScript文档对象模型-Document类型的内容,更多相关内容请关注PHP中文网(www.php.cn)!

JavaScript文档对象模型-Document类型

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

2

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

golang 循环遍历
golang 循环遍历

本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。

0

2026.01.31

Golang人工智能合集
Golang人工智能合集

本专题整合了Golang人工智能相关内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

76

2026.01.31

高干文在线阅读网站大全
高干文在线阅读网站大全

汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

73

2026.01.31

无需付费的漫画app大全
无需付费的漫画app大全

想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

67

2026.01.31

漫画免费在线观看地址大全
漫画免费在线观看地址大全

想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

19

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 4.4万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 2.6万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号