2018-12-20

10.1.2 Document 类型

4、特殊集合

除了属性和方法,document对象还有一些特殊的集合
这些集合都是HTMLCollection对象,为访问文档常用的部分提供了快捷方式,包括:
◆ document.anchors,包含文档中所有带name特性的 <a>元素
◆ document.applets,包含文档中所有的<applet>元素,因为不再推荐使用<applet>元素,所以这个集合已经不建议使用了
◆ document.forms,包含文档中所有的<form>元素,与document.getElementByTagName(‘forms’)得到的结果相同;
◆ document.images,包含文档中所有的<img>元素,与document.getElementByTagName(‘img’)得到的结果相同;
◆ document.links,包含文档中所有带href特性的<a>元素。

5、DOM一致性检测

由于DOM分为多个级别,也包含多个部分,因此检测浏览器实现了DOM的哪些部分就十分必要了。
document.implementation属性就是为此提供相应信息和功能的对象,与浏览器对DOM的实现直接对应。
DOM1级只为document.implementation规定了一个办法,即hasFeature()。
这个方法要接受两个参数:要检测的DOM功能的名称及版本号。如果浏览器支持给定名称和版本的功能,则该方法返回true。

var hasXmlDom = document.implementation.hasFeature("XML","1.0");
image.png

hasFeature()也有缺点,因为实现者可以自行决定是否与DOM规范的不同部分保持一致。

6 文档写入

有一个document对象的功能已经存在很多年了,那就是将输出流写入到网页中的能力。
体现在下列4个方法中:write()、writeln()open()和close。

write()和writeln()方法都接受一个字符串参数,即要写入到输出流中的文本。write()会原样写入,而writeln()则会在字符串的末尾添加一个换行符( \n )
在页面被加载的过程中,可以使用这两个方法向页面中动态的加入内容:

<html>
    <head>
        <title>document.write() Example</title>
    </head>
    <body>
        <p>The current date and time is:</p>
        <script type="text/javascript">
            document.write("<strong>"+(new date()).toString()+"</strong>");
        </script>
    </body>
</html>

还可以使用write()和writeln()方法动态的包含外部资源,例如Javascript文件等。在包含Javascript文件时,必须注意不能像下面的例子那样直接包含字符串"</script>",因为这会导致该字符串被解释为脚本块的结束,它后面的代码将无法执行。

<html>
    <head>
        <title>document.write() Example2</title>
    </head>
    <body>
        <script type="text/javascript">
            document.write("<script type=\"text/javascript\" src=\"fils.js\">"+"<\/script>");
        </script>
    </body>
</html>

字符串"</script>"不会被当作外部<script>标签的关闭标签,因而页面中也就不会出现多余的内容了。

如果再文档加载结束后再调用document.write(),那么输出的内容将会重写整个页面

方法open()和close()分别用于打开和关闭网页的输出流。

10.1.3 Element 类型

除了Document类型之外,Element 类型就要算是web变成中最常用的类型了。
Element 类型用于表现XML或HTML元素,提供了对元素签名、子节点即特性的访问。Element 节点具有以下特征:
◆ nodeType 的值为1;
◆ nodeName 的值为元素的标签名;
◆ nodeValue 的值为null;
◆ parentNode 可能是Document 或 Element;
◆ 其子节点可能是Element、Text、Comment、ProcessingInstruction、CDATASection 或 EntityReference。

要访问元素的签名,可以使用nodeName,也可以使用tagName;这两个属性会返回相同的值(使用后者主要是为了清晰起见。)

<div id = "myDiv"></div>

var div = document.getElementById("myDiv");
alert(div.tagName);//"DIV"
alert(div.tagName == div.nodeName);//true

在HTML中,标签名始终都以全部大写表示;而在XML中,标签名则始终会与源代码中的保持一致。
假如不确定自己的脚本将会在HTML还是XML文档中执行,最好是在比较之前将标签名转换为相同的大小写形式:

if(element.tagName.toLowerCase() == "div"){//这样最好(适用于任何文档)
    //在此执行某些操作
}
1.HTML元素

HTMLElement类型直接继承自Element并添加了一些属性:
◆ id:元素在文档中的唯一标识符
◆ title:有关元素的附加说明信息,一般通过工具提示条显示出来。
◆ lang:元素内容的语言代码,很少使用
◆ dir:语言的方向,值为“ltr”(left-to-right,从左至右)或者“rtl”也很少使用
◆ className:与元素的calss特性对应,即为元素指定的css类。没有将这个属性命名为class,是因为class是ECMAScript的保留字

<div id = "myDiv" class = "bd" title="Body text" lang="en" dir="ltr"></div>

var div = document.getElementById("myDiv");
alert(div.id);  //"myDiv"
alert(div.className);  //"bd"
alert(div.title);  //"Body text"
alert(div.lang);  //"en"
alert(div.dir);  //"ltr"


//也可以通过为每个属性赋予新的值,修改对应的每个特性:
div.id = "someOtherId";
div.className="ft";
div.title="Some other text";
div.lang="fr";
div.dir = "rtl";
2、取得特性:

每个元素都有一或者多个特性,这些特性的用途是给出相应元素或其内容的附加信息。
操作特性的DOM方法主要有三个:getAttribute()、setAttribute()和removeAtteibute()。这三个方法可以针对任何特性使用,包括那以HTMLElement类型属性的形式定义的特性。

注意,传递给getAttribute()的特性名与实际的特姓名相同。因此要想得到class特性值,应该传入“class”而不是“className”,后者只有在通过对象属性访问特性时才用,如果给定名称的特性不存在,getAttribute()返回null

通过getAttribute()方法也可以取得自定义特性的值,不过特性的名称是不区分大小写的,即“ID”和“id”代表的都是同一个特性。要注意的是:根据HTML5规范,自定义特性应该加上data-前缀以便验证

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

推荐阅读更多精彩内容

  •   DOM(文档对象模型)是针对 HTML 和 XML 文档的一个 API(应用程序编程接口)。   DOM 描绘...
    霜天晓阅读 3,623评论 0 7
  • 本章内容 理解包含不同层次节点的 DOM 使用不同的节点类型 克服浏览器兼容性问题及各种陷阱 DOM 是针对 HT...
    闷油瓶小张阅读 629评论 0 1
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,453评论 1 45
  • 第10章 DOM 1. 节点层次 文档节点是每个文档的根节点。 (1) Node 类型 每个节点都有一个 node...
    yinxmm阅读 390评论 0 0
  • 《怦然心动》是2010年美国上映一部爱情喜剧片,剧情相当简单。一个小姑娘喜欢上邻居的小男孩,并进行了热烈的追求,但...
    橙君阅读 259评论 0 1