DOM对象:当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。

HTML DOM 模型被构造为对象的树。

打开网页后,首先看到的是浏览器窗口,即顶层的window对象。

其次,看到的是网页文档的内容,即document文档。

首先看一下w3c提供的document对象的定义和其他相关知识:

现在我们来详细的看一下document对象:

第一类:找元素

四种基本的找元素的方法

  document.getElementById("d1");

  根据id找元素,因为id是唯一的,只能找的一个元素

  getElementsByClassName("c1");

  根据class找元素,因为class不唯一,可以找到多个元素,返回数组

  document.getElementsByTagName("div");

  根据标签名找元素,因为标签名不唯一,可以找到多个元素,返回数组

  document.getElementsByName("uname");

  根据name找元素,主要用于表单元素,因为有单选等情况name不唯一,可以找到多个元素,返回数组

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5 <title>无标题文档</title>
6 </head>
7 <body>
8 <div id="d1">
9 <div></div>
10 <span></span>
11 </div>
12 <div class="c1"></div>
13 <span class="c1"></span>
14 <input type="button" name="uname" />
15 </body>
16 </html>
17 <script>
18 var a = document.getElementById("d1"); //根据id找元素
19 var b = document.getElementsByClassName("c1"); //根据class找元素
20 var c = document.getElementsByTagName("div"); //根据标签名找元素
21 var d = document.getElementsByName("uname"); //根据name找元素
22 alert(a+"\n"+b[1]+"\n"+c[0]+"\n"+d[0]);
23 </script>

id=d1的返回值a,找到div元素

class=c1的返回值数组b,b[1],数组b中的第二个元素,找到span元素

标签=div的返回值数组c,c[0],数组c第一个元素,找到div元素

name=uname的返回值数组d,d[0],数组d的第一个元素,找到input元素

如上我们可以看出除了根据id找元素,其他方法找元素都可以找到多个,返回数组

复杂的找元素

a.childNodes[0]方法找该元素的子元素

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5 <title>无标题文档</title>
6 </head>
7 <body>
8 <div id="d1">
9 <div></div>
10 <span></span>
11 </div>
12 <div class="c1"></div>
13 <span class="c1"></span>
14 <input type="button" name="uname" />
15 </body>
16 </html>
17 <script>
18 var a = document.getElementById("d1"); //根据id找元素
19 alert(a.childNodes[0]+"\n"+a.childNodes[1]+"\n"+a.childNodes[2]+"\n"+a.childNodes[3]+"\n"+a.childNodes[4]+"\n"+a.childNodes[5]+"\n");
20 </script>

如上我们可以看出,找子元素会找到多个,返回的一定是数组,id为d1的元素内有5个子元素三个文本,一个div元素,一个span元素

注意:这个方法不仅找出了标签内的标签,还会找出文本,这里回车换行也被识别成文本写入了数组

a.parentNode 找父级元素

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5 <title>无标题文档</title>
6 </head>
7 <body>
8 <div id="d1">
9 <div></div>
10 <span></span>
11 </div>
12 <div class="c1"></div>
13 <span class="c1"></span>
14 <input type="button" name="uname" />
15 </body>
16 </html>
17 <script>
18 var a = document.getElementById("d1"); //根据id找元素
19 alert(a.parentNode);
20 </script>

父级元素只能有一个,如上是id=d1的元素的父级元素body元素

找同级元素

a.previousSibling 找上一个同级元素

a.nextSibling 找下一个同级元素

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5 <title>无标题文档</title>
6 </head>
7 <body><div id="d1">
8 <div></div>
9 <span></span>
10 </div><div class="c1"></div>
11 <span class="c1"></span>
12 <input type="button" name="uname" />
13 </body>
14 </html>
15 <script>
16 var a = document.getElementById("d1"); //根据id找元素
17 alert(a.previousSibling+"\n"+a.nextSibling);
18 </script>

在如上代码中,我们先让id=d1的元素紧贴跟前后不留回车等文本内容,得出上一个同级元素没有,下一个同级元素为div

第二类:控制元素

remove删除元素

createElement创建元素

appendChild追加元素

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5 <title>无标题文档</title>
6 </head>
7 <body>
8 <div id="d1">
9 <div></div>
10 <span></span>
11 </div>
12 <div id="d2">
13 </div>
14 </body>
15 </html>
16 <script>
17 var a = document.getElementById("d1"); //根据id找元素
18 var b = document.getElementById("d2");
19 a.remove(); //移除元素
20 var s = document.createElement("p"); //创建元素
21 b.appendChild(s); //追加元素
22 </script>

通过审查元素,我们可以看到id=d1的元素已被移除,id=d2的元素被追加了子元素<p>

第三类:操作内容

普通元素的操作

innerText获取内容文本

innerHTML获取内容代码

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5 <title>无标题文档</title>
6 </head>
7 <body>
8 <div id="d1">
9 <span>这是div中的span中的内容</span>
10 </div>
11 <div id="d2">
12 <span>这是div2中的span中的内容</span>
13 </div>
14 <div id="d3">
15 <span>这是div3中的span中的内容</span>
16 </div>
17 </body>
18 </html>
19 <script>
20 var a = document.getElementById("d1"); //根据id找元素
21 var b = document.getElementById("d2");
22 var c = document.getElementById("d3");
23 alert(a.innerText+"\n"+a.innerHTML);
24 b.innerText="hello"; //给元素赋值,针对文本,其他内容会被替换
25 c.innerHTML="<b>加粗</b>"
26 </script>

以上我们可以看出innerText只会获取内容文本,而innerHTML会将内容代码一起获取

这两个方法不仅可获取内容,还可以赋值写入内容,赋值写入的内容会替换原来的内容,并且通过innerHTML赋值写入的内容会和正常代码一样在网页中生效

表单元素的操作

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5 <title>无标题文档</title>
6 </head>
7 <body>
8 <input type="text" name="uname" id="d5"/>
9 </body>
10 </html>
11 <script>
12 var a = document.getElementById("d5");
13 a.value="hello"; //给元素赋值
14 alert(a.value); //元素的取值
15 </script>

如上我们可以通过调用value来给表单元素赋值和取值。

第四类:操作属性

setAttribute(属性名,属性值)设置属性

removeAttribute(属性名)移除属性

getAttribute(属性名)获取属性

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5 <title>无标题文档</title>
6 </head>
7 <body>
8 <div id="d1">
9 <span>这是div中的span中的内容</span>
10 </div>
11 <div id="d2">
12 <span>这是div2中的span中的内容</span>
13 </div>
14 </body>
15 </html>
16 <script>
17 var a = document.getElementById("d1");
18 var b = document.getElementById("d2");
19 a.setAttribute("bs",100); //添加属性bs=100
20 b.setAttribute("bs",100); //添加属性bs=100
21 alert(a.getAttribute("bs")); //获取属性bs的值
22 b.removeAttribute("bs"); //删除b的属性bs
23 </script>

如上我们可以看出我们添加的bs属性,和第二个div中被移除的bs属性,以及获取的bs属性。

第五类:操作样式

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5 <title>无标题文档</title>
6 </head>
7 <body>
8 <div id="d1" style="height:100px;broder:1px">
9 这是div1中的内容
10 </div>
11 <div id="d2" style="height:100px">
12 这是div2中的内容
13 </div>
14 </body>
15 </html>
16 <script>
17 var a = document.getElementById("d1");
18 var b = document.getElementById("d2");
19 a.style.backgroundColor="red"; //设置样式,加的是内联的
20 b.style.backgroundColor="red"; //设置样式,加的是内联的
21 alert(a.style.height); //获取样式
22 b.style.backgroundColor=""; //移除样式
23 </script>

如上我们可以添加样式,也可以获取样式的值,还可以用样式的值为空的方式来移除样式。

DOM对象之document对象的更多相关文章

  1. JavaScript对象之document对象

    DOM对象之document对象 DOM对象:当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). HTML DOM 模型被构造为对象的树. 打开网页后,首先 ...

  2. Unit06: 外部对象概述 、 window 对象 、 document 对象

    Unit06: 外部对象概述 . window 对象 . document 对象 小代码演示: <!DOCTYPE html> <html> <head> < ...

  3. JavaScript中的global对象,window对象以及document对象的区别和联系

    JavaScript中的global对象,window对象以及document对象的区别和联系 一.概念区分:JavaScript中的global对象,window对象以及document对象 1.g ...

  4. 【使用 DOM】使用 Document 对象

    Document 对象时通往DOM功能的入口,它向你提供了当前文档的信息,以及一组可供探索.导航.搜索或操作结构与内容的功能. 我们通过全局变量document访问Document对象,它是浏览器为我 ...

  5. HTML中 DOM操作的Document 对象详解(收藏)

    Document 对象Document 对象代表整个HTML 文档,可用来访问页面中的所有元素.Document 对象是 Window 对象的一个部分,可通过 window.document 属性来访 ...

  6. window对象;document对象;

    window对象: DOM:文档对象模型 --树模型文档:标签文档,对象:文档中每个元素对象,模型:抽象化的东西 一:window: 属性(值或者子对象):opener:打开当前窗口的源窗口,如果当前 ...

  7. 9.22 window对象、document对象

    一.window对象: 属性(值或者子对象): opener:打开当前窗口的源窗口,如果当前窗口是首次启动浏览器打开的,则opener是null,可以利用这个属性来关闭源窗口 dialogArgume ...

  8. 详解HTML中的window对象和document对象

    Window -- 代表浏览器中一个打开的窗口: 对象属性 window //窗口自身 window.self //引用本窗户window=window.self window.name //为窗口命 ...

  9. 具体解释HTML中的window对象和document对象

    Window -- 代表浏览器中一个打开的窗体: 对象属性 window //窗体自身 window.self //引用本窗户window=window.self window.name //为窗体命 ...

随机推荐

  1. innodb和myisam数据库文件存储详解以及mysql表空间

    数据库常用的两种引擎有Innodb和Myisam,关于二者的区别参考:https://www.cnblogs.com/qlqwjy/p/7965460.html 1.关于数据库的存储在两种引擎的存储是 ...

  2. 页面跳转时中间参数保存(memcache/cookie)

    2014年1月19日 17:30:27 我这篇文章就说了一句话:用cookie保存页面间跳转时的参数 情景: 客服在后台操作的时候,经常从列表页进入到编辑页,编辑完信息后,还要自动返回之前的列表页 问 ...

  3. GET和POST两种基本请求方法的区别(转载)

    get与post请求的区别: 通常回答: GET在浏览器回退时是无害的,而POST会再次提交请求. GET产生的URL地址可以被Bookmark,而POST不可以. GET请求会被浏览器主动cache ...

  4. unmappable character for US-ASCII

    编码错误编译时加-encoding UTF-8即可 :javac -encoding UTF- file.java //

  5. Windows xp下安装sql server2005所碰到的一些问题及解决方法

    之前提到的帮老板做的一个中船重工的项目,其中的一个子模块:windows下获取特定进程网络流量 一开始是用VS2010做的,后来老板把项目书拿给我看后,明确要求开发环境为VS2005和Sql serv ...

  6. ***Bootstrap FileInput插件的使用经验汇总

    插件下载地址: https://github.com/kartik-v/bootstrap-fileinput/ 官方DEMO查看: http://plugins.krajee.com/file-ba ...

  7. 说一下PHP中die()和exit()区别

    PHP手册:die()Equivalent to exit(). 说明:die()和exit()都是中止脚本执行函数:其实exit和die这两个名字指向的是同一个函数,die()是exit()函数的别 ...

  8. [转] 钉钉的H5性能优化方案

    对于一个H5的产品,功能无疑很重要,但是性能同样是用户体验中不可或缺的一环.原本H5的渲染性能就不及native的app,如果不把性能优化做起来,将极大地影响用户使用产品的积极性. 用户感受 当用户能 ...

  9. Card Game Cheater HDU1528

    二分图最大匹配问题 扑克题还是用map比较方便 #include<bits/stdc++.h> using namespace std; #define MAXI 52 ]; ]; int ...

  10. 【Java】 大话数据结构(16) 排序算法(3) (堆排序)

    本文根据<大话数据结构>一书,实现了Java版的堆排序. 更多:数据结构与算法合集 基本概念 堆排序种的堆指的是数据结构中的堆,而不是内存模型中的堆. 堆:可以看成一棵完全二叉树,每个结点 ...