一、DOM简介
DOM全称是文档对象模型。全称是Document Object Model,文档对象模型。Js中通过DOM来对HTML文档进行操作,把html\xml等文档的标签,属性,文本,转换成为对象来管理。
只要理解了DOM就可以随心所欲操作WEB页面。
文档:文档表示整个HTML网页文档,一个HTML网页就是一个文档
对象:表示将网页中的每一个部分都转换成一个对象。(网页中所有的一切都是对象)
模型:使用模型来表示对象之间的关系,方便我们获取对象
二、节点
2.1概述
节点Node,是构成HTML文档的最基本单元,网页中的每一个部分都可以称为一个节点。比如html标签、属性、文本、注释、整个文档等,都是一个节点。
注意:虽然都是节点,但实际上他们具体类型是不同的。比如标签我们称为元素节点,属性称为属性节点,文本称为文本节点,文档称为文档节点。节点的类型不同,属性和方法也不同
常用节点 就是四个对象
文档节点(Document对象):整个HTML文档
元素节点(Element对象):HTML文档中的HTML标签。(非常重要)
Element对象.属性名【=属性值】 //获取或修改此标签的某个属性。由于class是关键字,所以获取class属性的属性名为className
Element对象.innerHTML【=属性值】 //获取或修改此标签的文本内容。自结束标签没有文本内容
属性节点(对象):元素的属性
文本节点(对象):HTML标签中的文本内容
nodeValue:文本内容
2.2节点的属性(每个节点都有的通用属性)
nodeName(节点名)
nodeValue (节点值) //文本节点常用这个属性,元素节点都是用innerHTML属性来获取值
nodeType(节点类型):Number (类型代码)
三、模型
Document代表整个文档。
<html lang="zn_ch"> <head> <title>My title</title> </head> <body> <a href="http://www.baidu.com">My link</a> <h1>My header</h1> </body> </html>
以下为上面html代码都转换为dom对象后所对应的树形结构图。这个树形结构图由document对象进行管理和维护,Document让所有标签都对象化,我们可以通过Document对象访问所有的标签对象。
1、总述 (这些节点都是对象)
整个文档是一个文档节点每个 HTML 元素是元素节点HTML 元素内的文本是文本节点 备注:文本也是节点TextNode,创建文本节点即 createTextNode("文本内容")每个 HTML 属性是属性节点注释是注释节点2、由图可见:
<html> 节点没有父节点;它是根节点<head> 和 <body> 的父节点是 <html> 节点文本节点 "My header" 的父节点是 <h1> 节点并且:
<html> 节点拥有两个子节点:<head> 和 <body><head> 节点拥有一个子节点:<title> 节点<title> 节点也拥有一个子节点:文本节点 "My title"<a> 和 <h1> 节点是同胞节点,同时也是 <body> 的子节点并且:
<head> 元素是 <html> 元素的首个子节点<body> 元素是 <html> 元素的最后一个子节点<a> 元素是 <body> 元素的首个子节点<h1> 元素是 <body> 元素的最后一个子节点2、节点的常用属性和方法 (用于比较复杂DOM结构的标签查询)
常用方法1:通过具体的元素节点调用 getElementsByTagName()方法,获取当前节点的指定标签名孩子节点。比如document.getElementsByTagName("input") 就是说获取document孩子节点 所有input标签
常用方法2:appendChild(oChildNode) 语法:document.(某元素).appendChild(oChildNode)
给某元素添加一个子节点,oChildNode是要添加的孩子节点名
常用属性: 通用语法, document.getElement(s)By(Id/Name/TagName).常用属性
childNodes属性:获取当前节点的所有子节点
firstChild属性:获取当前节点的第一个子节点
lastChild属性:获取当前节点的最后一个子节点
parentNode属性:获取当前节点的父节点
nextSibling属性:获取当前节点的下一个节点
previousSibling属性:获取当前节点的上一个节点
className用于获取或设置标签的class属性值。 为了防止和.class冲突,所以用className
innerHTML属性:表示获取/设置起始标签和结束标签中的内容
innerText属性:表示获取/设置起始标签和结束标签中的文本
Exp:获取id为 city 的所有子节点个数: (1)获取city (2)通过city获取所有子节点
document.getElementById("city").childNodes.length;
Exp:用JS代码创建html标签,并显示在html页面上,内容是<div>我忍不住了,我要射了</div>
window.οnlοad=function(){ //这句表示在页面加载完成后,执行{}代码。如果没加载完成,显示不出来
var divObj=document.createElement("div"); //创建div标签,还没内容
divObj.innerHTML="我忍不住了,我要射了"; //给div标签添加内容
document.body.appendChild(divObj); //给body添加子元素 div