JavaScript如何利用HTML DOM进行文档操作

一、DOM简介


DOM是W3C制定的用于访问诸如XML和XHTML等结构化文档的标准。


W3C文档对象模型(DOM)是一个使程序和脚本有能力动态地访问和更新文档的内容、结构以及样式的平台和语言中立的接口


核心DOM:用于任何结构化文档的标准模型


XML DOM:用于XML文档的标准模型。是用于获取、更改、添加或删除XML元素的标准。


HTML DOM: 用于HTML文档的标准模型。定义了所有HTML元素的对象和属性,以及访问它们的方法(接口)。


二、DOM节点


根据DOM规范,文档中的每个成分都是一个节点。DOM的规定:


整个文档是一个文档节点,又称为根节点


每个标签是一个元素节点


包含在标签中的文本是文本节点


标签的每一个属性是一个属性节点


注释属于注释节点




2.1DOM接口及其属性和方法


DOM把文档模拟为一系列节点接口。可通过JavaScript或其他编程语言来访问节点。对


DOM的编程接口是通过一套标准的属性和方法来定义的。


2.1.1DOM属性


一些典型的DOM属性:


x.nodeName:x的名称


x.nodeValue:x的值

x.parentNode:x的父节点,,除了根节点外,只有唯一一个父节点


x.childNodes:x的子节点,可以有多个子节点


x.attributes:x的属性节点集合,可以有多个属性


其中,x是一个节点对象




2.1.2DOM方法


一些典型的DOM方法:


x.getElementsByTagName(name) :获取带有指定标签名称的所有元素


x.appendChild(node) :向x插入子节点


x.removeChild(node) :从x删除子节点


实例:


//获得文档标题的文本内容
document.getElementsByTagName("title")[0].childNode[0].nodeValue






2.1.3访问节点


方法一:通过使用getElementsByTagName()方法


方法二:通过循环遍历节点树


方法三:通过利用节点的关系在节点树中导航




2.1.4节点信息:


nodeName : 获取节点的名称,是只读的。


nodeValue: 获取或设置节点的值


nodeType:节点的类型,是只读的。1,表示元素,2表示属性,3表示文本,8


表示注释,9表示文档


三、节点操作


3.1创建节点

createElement(tagName):创建元素节点


createTextNode(text):创建文本节点


createAttribute(attrName):创建属性节点




3.2添加节点


新创建的节点需要与其他已经存在的节点组织关系,才能让它真正属于文档树。

appendChild(node) 在当前节点内部最后一个子节点后面添加新的子节点,参数为新的子节点

insertBefore(newNode,node) 在当前节点内部指定的子节点之前添加新的子节点,第一个参数为新的子节点,第二个参数为当前节点内部指定的子节点

insertAfter()在当前节点内部指定的子节点之后添加新的子节点,第一个参数为新的子节点,第二个参数为当前节点内部指定的子节点

setAttributeNode()在当前元素节点设置属性节点,邀请调用此方法的节点的类型为元素类型,参数要设置的属性节点


示例:


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>使用DOM创建并添加节点</title>
<script type="text/javascript">
function createAndAddNode(){
//div标签元素节点
var container = document.body.getElementsByTagName("div")[0];
//创建元素节点对象,元素名即标签名 <p>
var pEle = document.createElement("p");
//创建文本节点对象,文本内容就是参数值
var txtOfP = document.createTextNode("这是段落的文字");
//在元素节点内部添加一个文本节点<p>这是段落的文字
pEle.appendChild(txtOfP);
//在div元素节点后面添加新的子节点。<div><p>这是段落的文字</div>
container.appendChild(pEle);
//创建一个超链接标签节点
var aEle = document.createElement("a");
//创建文本节点
var txtOfA = document.createTextNode("博客园");
//在元素节点中添加文本节点,<a>博客园</a>
aEle.appendChild(txtOfA);
//创建一个href属性节点
var attrOfA = document.createAttribute("href");
//将href属性节点设置其属性值
attrOfA.nodeValue = "http:www.cnblogs.com";
//将属性节点添加到超链接元素节点中,即设置a元素标签的属性节点
aEle.setAttributeNode(attrOfA);
//将元素节点a添加到div中
container.appendChild(aEle);
}
//浏览器窗口加载时调用该方法
window.onload = createAndAddNode;
</script>
</head>
<body>
<div></div>
</body>
</html>


3.3修改节点


改变节点一般指改变元素内部的文本,或改变元素的属性值。这两种情况都可以在访问到文本节点或属性节点后,为其nodeValue赋值来实现更改。对于后者,还可以

在元素节点上调用setAttribute方法来实现属性值的改变。

示例:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>使用DOM改变节点</title>
<script type="text/javascript">
function changeSize(){
var target = document.getElementById("txt_1");
//设置列的属性值为50
target.setAttribute("cols", "50");
//设置行的属性值为6  先访问属性节点集合,然后通过getNamedItem定位属性名,
target.attributes.getNamedItem("rows").nodeValue = "6";
}

function changeText() {
var target = document.getElementById("lbl_1");
//先访问该元素节点的子节点,子节点个数可以是多个,因此用了数组下标访问指定元素。然后通过nodeValue修改其值
target.childNodes[0].nodeValue = "您的个人简历:";
}
</script>
</head>
<body>
<form action="">

<label id="lbl_1" for="txt_1">多行文本框的标签文字</label>
<textarea id="txt_1" ></textarea>
<input type="button" name="btn" value="改变多行文本域的尺寸" οnclick="changeSize();" />
<input type="button" name="btn" value="改变标签的文字" οnclick="changeText();" />

</form>
</body>
</html>




3.3删除节点


删除节点一般指从元素节点内部删除子元素或元素包含的文本,也可实现对元素节点包含的属性节点的删除


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>使用DOM删除节点</title>
<script type="text/javascript">
function doRemoveNode() {
//label标签元素节点
var targetLbl = document.getElementById("lbl_1");
//从label元素节点中删除第一个子节点
targetLbl.removeChild(targetLbl.firstChild);
//文档元素,通过访问文档元素集合,指定位置元素获得多行文本域
var tagetArea = document.documentElement.getElementsByTagName("textarea")[0];
//文档中第一个form标签元素节点
var tagetForm = document.documentElement.getElementsByTagName("form")[0];
//删除文档中第一个form标签中的textarea
tagetForm.removeChild(tagetArea);
}
</script>
</head>
<body>
<form>
<label id="lbl_1" for="txt_1">多行文本框的标签文字</label>
<textarea id="txt_1" rows="" cols=""></textarea>
<input type="button" name="btn" value="删除节点"  οnclick="doRemoveNode();"/>
</form>
</body>
</html>


四、小结


DOM是文档在内存中表现的树形结构,称为DOM树;DOM是W3C制定的访问文档的标准方法和属性,称为DOM接口


文档中的每个数据在树形结构上表示为一个节点,由所有节点组成的树形结构称为节点树或DOM树


节点有多种类型,常见的有元素节点、属性节点、文本节点、根节点、等。节点有名称和值,但不同类型的节点其名称和值含义不同


createElement()方法用于创建元素节点,createAttribute()方法用于创建属性节点,createTextNode()方法用于创建文本节点,向元素节点内添加子元素节点或文本节点,可使用appendChild()方法。还有insertAfter()和insertBefore()方法用于在特定的节点前后插入新的节点。需要注意的是为元素节点添加属性节点的方法却是setAttributeNode()方法。

要修改文本节点的值或更改属性节点的值,应使用节点的nodeValue属性


删除节点使用removeChild()方法。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 第1篇 JavaScript基础篇 第1章 JavaScript简介 1.1 JavaScript概述 1.1.1 什么是JavaScript 1.1.2 JavaScfipt的基本特点 1.1.3 常用的Web开发语言 1.2 JavaScript的应用 1.2.1 客户端应用 1.2.2 服务器端应用 1.3 在web页面中使用JavaScript 1.3.1 HTML的基本结构 1.3.2 在HTML中嵌入JavaScript 1.3.3 链接JavaScript文件 1.4 编写JavaScript的工具 1.4.1 使用纯文本编辑器 1.4.2 使用专业化脚本编辑工具 1.4.3 使用Microsoft脚本编辑器 第2章 JavaScript编程基础 2.1 基础语法 2.1.1 数据类型 2.1.2 变量和常量 2.1.3 表达式 2.1.4 运算符 2.2 流程控制 2.2.1 条件语句r 2.2.2 循环语句 2.2.3 其他语句 2.3 使用对话框 2.3.1 警告对话框 2.3.2 确认对话框 2.3.3 提示对话框 第2篇 JavaScript内置对象篇 第3章 JavaScript内置对象 3.1 JavaScript对象概述 3.1.1 对象的概念 3.1.2 使用JavaScript对象基础知识 3.2 Array对象 3.2.1 创建Array对象 3.2.2 Array对象属性 3.2.3 Array对象方法 3.3 String对象 3.3.1 创建String对象 3.3.2 String对象属性 3.3.3 String对象方法 3.4 Math对象 3.5 Date对象 3.5.1 Date对象方法 3.5.2 使用Date对象 3.6 自定义对象 第4章 JavaScript常用对象 4.1 Document对象 4.1.1 Document对象概述 4.1.2 使用Document对象 4.2 Form对象及其元素 4.2.1 Form对象概述 4.2.2 表单元素 4.2.3 表单元素属性和事件 4.2.4 表单验证 4.3 Anchor与Link对象 4.3.1 Anchor对象 4.3.2 Link对象 4.4 Image对象 4.4.1 图像翻转 4.4.2 图像载入 第5章 JavaScnpt其他常用窗口对象 5.1 Window对象 5.1.1 常用属性和方法 5.1.2 多窗口控制 5.2 Screen对象 5.3 Navigator对象 5.4 Location对象 5.4.1 常用属性和方法 5.4.2 Location对象的应用实例 5.5 History对象 5.5.1 常用属性和方法 5.5.2 History对象的应用实例 5.6 Frame对象 5.6.1 Frame对象概述 5.6.2 常用属性 5.6.3 Frame对象的应用实例 第6章 DoM对象 6.1 DOM概述 6.1.1 DOM简介 6.1.2 DOMHTML文档 6.2 DOM对象 6.2.1 DOM基本接口 6.2.2 DOM基本对象 6.3 使用DOM 6.3.1 DOM基础 6.3.2 Node和NodeList接口 6.3.3 Element接口 6.3.4 Text接口和Attr接口 6.4 操作HTML文档 6.4.1 访问元素 6.4..2 添加节点 6.4.3 删除节点 6.4.4 对属性进行操作 第3篇 JavaScript高级编程篇 第7章 正则表达式 7.1 正则表达式及其作用 7.2 正则表达式参考语法 7.2.1 限定符 7.2.2 选择匹配符 7.2.3 分组组合和反向引用符 7.2.4 特殊字符 7.2.5 字符匹配符 7.2.6 定位符 7.2.7 原义字符 7.3 RegExp对象 7.3.1 创建RegExp对象实例的两种方式 7.3.2 RegExp对象的属性 7.3.3 RegExp对象的方法 7.4 String对象中与正则表达式有关的方法 第8章 高级DoM技术 8.1 CSS样式 8.1.1 CSS语法 8.1.2 CSS属性 8.2 样式控制 8.2.1 Style对象 8.2.2 使用CSS属性 8.2.3 自定义鼠标提示 8.2.4 可折叠区域 8.3 StyleSheet对象 8.3.1 StyleSheet对象的属性 8.3.2 StyleSheet对象的方法 8.4 修改内容 8.5 实例应用 8.5.1 制作动态新闻框 8.5.2 显示当前日期 8.5.3 进度条控制滚动图片 8.5.4 百叶窗效果 8.5.5 更改表格间隔背景色 第9章 JavaScript中的XML 9.1 XML语言 9.1.1 XML概述 9.1.2 XML文档结构 9.1.3 XML标记 9.1.4 XML文档元素 9.1.5 XML属性 9.1.6 XML命名空间 9.2 XMLDOM 9.2.1 通用接口 9.2.2 IE中的XMLDOM支持 9.2.3 Mozilla中XMLDOM支持 9.2.4 XMLDOM实例 9.3 XPath 9.3.1 XPath概述 9.3.2 IE中的XPath支持 9.3.3 Mozilla中的XPath支持 9.4 XSLT 9.4.1 XSLT概述 9.4.2 IE中的XSLT支持 9.4.3 MozilIa中XSLT支持 9.5 数据岛技术 第10章 JavaScript事件处理 10.1 事件概述 10.1.1 事件简介 10.1.2 指定事件 10.2 原始事件模型 10.2.1 事件类型 10.2.2 使用事件返回值 10.2.3 使用事件this关键字 10.2.4 使用属性处理事件 10.2.5 使用JavaScript处理事件 10.3 标准事件模型 10.3.1 事件传播 10.3.2 注册事件处理程序 10.3.3 设置对象的事件处理程序 10.3.4 事件的模块和类型 10.3.5 Event接口和对象 10.4 IE事件模型 10.4.1 IEEvent对象 10.4.2 IE的事件传播 10.5 常用事件 10.5.1 鼠标事件 10.5.2 键盘事件 10.5.3 表单事件 10.5.4 编辑事件 10.5.5 页面事件 第11章 使用Cookie和文件 11.1 Cookie 11.1.1 Cookie概述 11.1.2 Cookie属性 11.1.3 创建Cookie 11.1.4 读取Cookie 11.1.5 删除Cookie 11.1.6 在客户机设置Cookie 11.1.7 保存用户登录状态 11.2 文件处理 11.2.1 FileSystemObjeet对象 11.2.2 Drive对象 11.2.3 Folder对象 11.2.4 File对象 11.2.5 资源管理器 第12章 JavaScript与Ajax 12.1 Ajax概述 12.1.1 Ajax运行机制 12.1.2 A1ax技术优势 12.2 Ajax核心技术 12.2.1 JavaSeript 12.2.2 DOM 12.2.3 XML 12.2.4 XMLHtlpRequest 12.3 使用Ajax 12.3.1 创建XMLHttp,Request对象 12.3.2 获取XMLHttp,Request对象的信息 12.3.3 向服务器发送请求 12.3.4 处理服务器响应 12.3.5 用户注册实例 12.3.6 处理XML请求 12.3.7 动态列表 第13章 JavaScript安全与异常处理 13.1 JavaScript安全 13.1.1 域策略 13.1.2 IntemetExplorer安全区域 13.2 IE浏览器内建的错误报告 13.3 异常处理 13.3.1 异常类型 13.3.2 触发onError事件处理异常 13.3.3 使用trycatch语句处理异常 13.3.4 Error对象 13.3.5 使用throw语句 13.4 JavaScript调试技法 13.4.1 使用alen()语句 13.4.2 使用write()语句 13.4.3 抛出自定义异常消息 第4篇 JaVflscript特效应用 第14章 JavaScript网页特效 14.1 文字特效 14.1.1 文字向上不间断无缝滚动 14.1 12灼热的文字(IE) 14.1.3 标题栏文字循环向左移动 14.1.4 各种形式输出文字 14.1.5 跑马灯式说明文字 14.1.6 跳动的文字 14.2 图片特效 14.2.1 线性幻灯片 14.2.2 非线性幻灯片 14.2.3 展示翻页效果 14.2.4 展示缩略图新闻效果 14.2.5 图片滑动效果 14.2.6 三维相册 14.3 时间特效 14.3.1 时钟提示自动关闭 14.3.2 日历生成器 14.4 窗口特效 14.4.1 窗口拖动 14.4.2 图层受标签控制显示 14.5 鼠标特效 14.5.1 鼠标方向提示 14.5.2 鼠标控制页面上下移动 14.6 菜单特效 14.6.1 树状菜单 14.6.2 折叠菜单 14.6.3 滑动菜单 14.6.4 右键菜单 ……

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值