DOM对象之document对象

简介:

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=10020     b.setAttribute("bs",100);    //添加属性bs=10021     alert(a.getAttribute("bs"));    //获取属性bs的值22     b.removeAttribute("bs");    //删除b的属性bs23 </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>

复制代码


本文转自  zddnd  51CTO博客,原文链接:http://blog.51cto.com/13013666/1940109
相关文章
|
2月前
|
XML 编解码 JavaScript
DOM(文档对象模型)和 BOM(浏览器对象模型)
【10月更文挑战第19天】在前端开发中,理解 DOM(文档对象模型)和 BOM(浏览器对象模型)是至关重要的。它们是 Web 开发的基础,为我们提供了与网页文档和浏览器进行交互的能力。
|
4月前
|
JavaScript 前端开发
js之DOM 文档对象模型
js之DOM 文档对象模型
29 1
js之DOM 文档对象模型
|
4月前
|
XML JavaScript 测试技术
Web自动化测试框架(基础篇)--HTML页面元素和DOM对象
本文为Web自动化测试入门指南,介绍了HTML页面元素和DOM对象的基础知识,以及如何使用Python中的Selenium WebDriver进行元素定位、操作和等待机制,旨在帮助初学者理解Web自动化测试中的关键概念和操作技巧。
56 1
|
4月前
|
JavaScript 前端开发 API
前端开发者的救赎:揭秘JQ对象与DOM元素的神秘转换术
【8月更文挑战第23天】在Web前端开发领域,jQuery(简称JQ)作为一款流行的JavaScript库,极大简化了HTML文档遍历、事件处理、动画及Ajax交互等操作。理解和掌握jQuery对象与DOM元素间的转换至关重要。
47 0
|
4月前
|
JavaScript 前端开发
js之DOM 文档对象模型
js之DOM 文档对象模型
|
5月前
|
JavaScript
react18【系列实用教程】useRef —— 创建 ref 对象,获取 DOM (2024最新版)
react18【系列实用教程】useRef —— 创建 ref 对象,获取 DOM (2024最新版)
66 0
|
6月前
|
JavaScript 前端开发 API
jQuery对象与DOM对象简介及相互转换
jQuery对象与DOM对象简介及相互转换
|
2月前
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)
|
2月前
|
JavaScript
HTML DOM 节点树
HTML DOM 节点是指在 HTML 文档对象模型中,文档中的所有内容都被视为节点。整个文档是一个文档节点,每个 HTML 元素是元素节点,元素内的文本是文本节点,属性是属性节点,注释是注释节点。DOM 将文档表示为节点树,节点之间有父子和同胞关系。
|
2月前
|
JavaScript
HTML DOM 节点
HTML DOM(文档对象模型)将HTML文档视为节点树,其中每个部分都是节点:文档本身是文档节点,HTML元素是元素节点,元素内的文本是文本节点,属性是属性节点,注释是注释节点。节点间存在父子及同胞关系,形成层次结构。