JavaScript对象之document对象
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不唯一,可以找到多个元素,返回数组
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<div id="d1">
<div></div>
<span></span>
</div>
<div class="c1"></div>
<span class="c1"></span>
<input type="button" name="uname" />
</body>
</html>
<script>
var a = document.getElementById("d1"); //根据id找元素
var b = document.getElementsByClassName("c1"); //根据class找元素
var c = document.getElementsByTagName("div"); //根据标签名找元素
var d = document.getElementsByName("uname"); //根据name找元素
alert(a+"\n"+b[1]+"\n"+c[0]+"\n"+d[0]);
</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]方法找该元素的子元素
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<div id="d1">
<div></div>
<span></span>
</div>
<div class="c1"></div>
<span class="c1"></span>
<input type="button" name="uname" />
</body>
</html>
<script>
var a = document.getElementById("d1"); //根据id找元素
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");
</script>

如上我们可以看出,找子元素会找到多个,返回的一定是数组,id为d1的元素内有5个子元素三个文本,一个div元素,一个span元素
注意:这个方法不仅找出了标签内的标签,还会找出文本,这里回车换行也被识别成文本写入了数组
a.parentNode 找父级元素
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<div id="d1">
<div></div>
<span></span>
</div>
<div class="c1"></div>
<span class="c1"></span>
<input type="button" name="uname" />
</body>
</html>
<script>
var a = document.getElementById("d1"); //根据id找元素
alert(a.parentNode);
</script>

父级元素只能有一个,如上是id=d1的元素的父级元素body元素
找同级元素
a.previousSibling 找上一个同级元素
a.nextSibling 找下一个同级元素
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body><div id="d1">
<div></div>
<span></span>
</div><div class="c1"></div>
<span class="c1"></span>
<input type="button" name="uname" />
</body>
</html>
<script>
var a = document.getElementById("d1"); //根据id找元素
alert(a.previousSibling+"\n"+a.nextSibling);
</script>

在如上代码中,我们先让id=d1的元素紧贴跟前后不留回车等文本内容,得出上一个同级元素没有,下一个同级元素为div
第二类:控制元素
remove删除元素
createElement创建元素
appendChild追加元素
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<div id="d1">
<div></div>
<span></span>
</div>
<div id="d2">
</div>
</body>
</html>
<script>
var a = document.getElementById("d1"); //根据id找元素
var b = document.getElementById("d2");
a.remove(); //移除元素
var s = document.createElement("p"); //创建元素
b.appendChild(s); //追加元素
</script>

通过审查元素,我们可以看到id=d1的元素已被移除,id=d2的元素被追加了子元素<p>
第三类:操作内容
普通元素的操作
innerText获取内容文本
innerHTML获取内容代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<div id="d1">
<span>这是div中的span中的内容</span>
</div>
<div id="d2">
<span>这是div2中的span中的内容</span>
</div>
<div id="d3">
<span>这是div3中的span中的内容</span>
</div>
</body>
</html>
<script>
var a = document.getElementById("d1"); //根据id找元素
var b = document.getElementById("d2");
var c = document.getElementById("d3");
alert(a.innerText+"\n"+a.innerHTML);
b.innerText="hello"; //给元素赋值,针对文本,其他内容会被替换
c.innerHTML="<b>加粗</b>"
</script>



以上我们可以看出innerText只会获取内容文本,而innerHTML会将内容代码一起获取
这两个方法不仅可获取内容,还可以赋值写入内容,赋值写入的内容会替换原来的内容,并且通过innerHTML赋值写入的内容会和正常代码一样在网页中生效
表单元素的操作
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<input type="text" name="uname" id="d5"/>
</body>
</html>
<script>
var a = document.getElementById("d5");
a.value="hello"; //给元素赋值
alert(a.value); //元素的取值
</script>

如上我们可以通过调用value来给表单元素赋值和取值。
第四类:操作属性
setAttribute(属性名,属性值)设置属性
removeAttribute(属性名)移除属性
getAttribute(属性名)获取属性
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<div id="d1">
<span>这是div中的span中的内容</span>
</div>
<div id="d2">
<span>这是div2中的span中的内容</span>
</div>
</body>
</html>
<script>
var a = document.getElementById("d1");
var b = document.getElementById("d2");
a.setAttribute("bs",100); //添加属性bs=100
b.setAttribute("bs",100); //添加属性bs=100
alert(a.getAttribute("bs")); //获取属性bs的值
b.removeAttribute("bs"); //删除b的属性bs
</script>


如上我们可以看出我们添加的bs属性,和第二个div中被移除的bs属性,以及获取的bs属性。
第五类:操作样式
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<div id="d1" style="height:100px;broder:1px">
这是div1中的内容
</div>
<div id="d2" style="height:100px">
这是div2中的内容
</div>
</body>
</html>
<script>
var a = document.getElementById("d1");
var b = document.getElementById("d2");
a.style.backgroundColor="red"; //设置样式,加的是内联的
b.style.backgroundColor="red"; //设置样式,加的是内联的
alert(a.style.height); //获取样式
b.style.backgroundColor=""; //移除样式
</script>


如上我们可以添加样式,也可以获取样式的值,还可以用样式的值为空的方式来移除样式。
JavaScript对象之document对象的更多相关文章
- JavaScript中的global对象,window对象以及document对象的区别和联系
JavaScript中的global对象,window对象以及document对象的区别和联系 一.概念区分:JavaScript中的global对象,window对象以及document对象 1.g ...
- 使用 JavaScript 中的 document 对象查找 HTML 元素,实现“登录”按钮的高亮特效 鼠标悬浮于“登录”按钮时,按钮高亮显示;
查看本章节 查看作业目录 需求说明: 使用 JavaScript 中的 document 对象查找 HTML 元素,实现"登录"按钮的高亮特效 鼠标悬浮于"登录" ...
- 使用 JavaScript 中的 document 对象的属性,根据下拉框中选择的属性,更改页面中的字体颜色和背景颜色
查看本章节 查看作业目录 需求说明: 使用 JavaScript 中的 document 对象的属性,根据下拉框中选择的属性,更改页面中的字体颜色和背景颜色 实现思路: 在页面的 <body&g ...
- Unit06: 外部对象概述 、 window 对象 、 document 对象
Unit06: 外部对象概述 . window 对象 . document 对象 小代码演示: <!DOCTYPE html> <html> <head> < ...
- 【温故而知新-Javascript】使用 Document 对象
Document 对象时通往DOM功能的入口,它向你提供了当前文档的信息,以及一组可供探索.导航.搜索或操作结构与内容的功能. 我们通过全局变量document访问Document对象,它是浏览器为我 ...
- JavaScript基础知识----document对象
对象属性document.title //设置文档标题等价于HTML的<title>标签document.bgColor //设 ...
- window对象;document对象;
window对象: DOM:文档对象模型 --树模型文档:标签文档,对象:文档中每个元素对象,模型:抽象化的东西 一:window: 属性(值或者子对象):opener:打开当前窗口的源窗口,如果当前 ...
- 9.22 window对象、document对象
一.window对象: 属性(值或者子对象): opener:打开当前窗口的源窗口,如果当前窗口是首次启动浏览器打开的,则opener是null,可以利用这个属性来关闭源窗口 dialogArgume ...
- 详解HTML中的window对象和document对象
Window -- 代表浏览器中一个打开的窗口: 对象属性 window //窗口自身 window.self //引用本窗户window=window.self window.name //为窗口命 ...
随机推荐
- Jfinal中Db类的的使用
Jfinal提供了两种操作数据库的组件,分别是Model类和DB类,可以极大地减少代码量,提高开发效率. Db类提供了在Model类之外更丰富的的数据库操作能力,使用Db类以及嵌套的Record类时, ...
- Android学习资料整理
1.官方网站 http://developer.android.com/index.html http://android-developers.blogspot.com/ 2.Android Des ...
- 进击 spring !!
1.spring简介 Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用某一个组件,同时为 J2EE 应用程序开发提供集成 ...
- mysql获取当前日期的周一和周日的日期
,,date_format(curdate(),)//获取当前日期 在本周的周一 的日期 ,,date_format(curdate(),)//获取当前日期 在本周的周日 的日期
- JWebFileTrans(JDownload): 一款可以从网络上下载文件的小程序(三),多线程断点下载
一 前言 本篇博客是<JWebFileTrans(JDownload):一款可以从网络上下载文件的小程序>系列博客的第三篇,本篇博客的内容主要是在前两篇的基础上增加多线程的功能.简言之,本 ...
- 关于java中的==,equals()
1. 先从一道面试题说起 请问下面的 public class Demo { public static void main(String args[]){ String a = "a&qu ...
- NancyFx 2.0的开源框架的使用-Caching
新建一个空的Web项目,命名CachingDemo 然后添加三个Nuget安装包 Nancy Nancy.Hosting.Aspnet Nancy.ViewsEngines.Razor 然后往项目里面 ...
- 传感器系列之4.12GPS定位传感器
4.12 GPS定位实验 一.实验目的 了解GPS的基本概念 了解NMEA-0183格式数据串的组成和关于GPS的常用语句 GPS的数据串解析 二.实验材料 具有串口通讯的电脑一台 ADS1.2开发环 ...
- Day4-内置函数--未完待续,慢慢写
内置函数:https://docs.python.org/3/library/functions.html?highlight=built#ascii 未完待续....
- Automated Front End Test - Xvfb, Chromedriver, Selenium, Jenkins
1. Install Xvfbm, google-chrome-stable and chromedriver in Jenkins sudo apt-get install -y xvfb goog ...