《JavaScript》——DOM

DOM (Document Object Model) 即文档对象模型, 针对 HTML 和 XML 文档的 API (应用程序接口) 。DOM 描绘了一个层次化的节点树,执行开发者加入、移除和改动页面的某一部分。

DOM中提供了两个节点接口,一个Node接口,一个是document接口,这两种接口的属性和方法基本包括了对节点树的全部操作。

那什么是节点树那?

节点树:载入 HTML 页面时, Web 浏览器生成一个树型结构, 用来表示页面内部结构。 DOM 将这样的树型结构理解为由节点组成。

比方例如以下HTML代码:

<html>
	<head>
			<title>DOM</title>
			<meta http-equiv="Content-type" content="text/html;charset=gb2312"/>
	</head>
	<body>
			<p>请先登录</p>
			<form name="myForm">
					姓名:<input type="text" name="myName">
					密码:<input type ="password" name="myPassword">
					<input type="button" value="确定">
			</form>
	</body>
</html>

生成的节点树例如以下所看到的:

从节点树中大致能够看出,节点分为三种类型,元素节点,文本节点、属性节点。DOM中提供的Document接口和Node接口的方法与属性就是对这些节点进行操作(增删改查)。

上面说了,我们利用文档接口(Document)的一些方法对HTML节点树的操作就是一些增删改查,那么在增删改查之前,我们的先得有节点吧。这些节点能够直接在HTML中编写,也能够用JavaScript脚本创建,当然了,这里用JavaScript创建节点的优点在于能够动态的对HTML文档进行改动。避免了在HTML界面直接改动代码,这样不仅达到了HTML页面与JavaScript脚本解耦和的作用。并且还能够实现JavaScript脚本动态的操纵HTML页面。

以下这幅图片是文档接口(Document) 的部分属性与方法

从上面的图片能够看出,Document接口的方法能够用来创建或获得一个节点,创建分成三种,即元素节点、属性节点、文本节点,訪问方法分为两种。

遗憾的是我所列举的方法与属性都不全,只是这些方法都是一些经常使用的。

以下在介绍一些Node节点关系与节点类型,还包含Node接口的一些方法,这些方法側重于增删改查。

在上面这幅图片中。Node接口中加入节点的方法有两个,对节点的操作还有删除、替换、复制等操作。

贴张HTML代码文档,以下的一些操作都是针对这部分HTML代码进行的。

<html>
	 <head>
		 <meta http-equiv="Content-type" content="text/html;charset=gb2312"/>
		 <title>DOM基础</title>
		 <script type="text/javascript"  src="demo.js"> </script>
	 </head>
	 <body  >

	  <div  align="center">開始</div>

		<div id="box" align="center" title="标题" class="pox" style="color:red;" >
			<p>測试div1</p>
			<p>測试div2</p>
			<p>測试div3</p>
		</div>

	<div align="center" >结束</div>
	 </body>
 </html>

1、创建元素节点p,和文本节点tex。而且在元素节点p以下加入文本节点text。代码和对照效果图例如以下

window.onload=function(){
	var box=document.getElementById(‘box‘);// 查找box节点
	var p =document.createElement(‘p‘);//仅仅是创建元素节点p 。还没有加入到文档中去,仅仅是驻留在内存中。
	box.appendChild(p);//加入节点。p为节点的名称。

var text =document.createTextNode(‘此节点为当前节点的最后一个子节点‘);//创建文本节点text 主流在内存中。还没有加入到HTML中去。

p.appendChild(text);//给p节点加入文本元素
};

     
        

2、插入节点(在某节点之前插入)

window.onload=function(){
	var box=document.getElementById(‘box‘);
	var div =document.createElement(‘div‘);//仅仅是创建元素节点p 还没有加入到文档中去。仅仅是驻留在内存中。

box.parentNode.insertBefore(div,box);  //先将指针跳到插入位置的父节点,然后在运行插入
	var text =document.createTextNode(‘測试一下啊!‘);//创建文本节点text
	div.appendChild(text);//给p节点加入文本元素
};

3、自己定义方法。插入节点(在某节点之后)

// 插入节点(在某节点之后)利用创建一个包括insertBefore()的函数,将目标节点与插入节点座位參数传递进去。
function insertAfter(newElement,targetElement){
	 var  parent =targetElement.parentNode;                  //得到父节点,就是body   假设层次较多,父节点不一定是body
	 if(parent.lastChild==targetElement){                         //推断目标节点是否为该parent元素的最后一个节点。若是,则运行appendChild()操作
		 parent.appendChild(newElement,targetElement)
	 }else{																		 //若目标节点不是parent的最后一个节点。则将目标节点指针下移一位,得到其兄弟节点
		 parent.insertBefore(newElement,targetElement.nextSibling)    //这样就能够在目标节点之后插入了。

}
 }

 window.onload=function(){
	var box=document.getElementById(‘box‘);
	var p =document.createElement(‘p‘);
	insertAfter(p,box);
	var text=document.createTextNode(‘在此插入一个文本节点‘);
    p.appendChild(text);
 };

4、移除节点代码与效果图例如以下

window.onload=function(){
	var box=document.getElementById(‘box‘);
	alert(‘你将要移除第一个測试DIV‘);
	box.removeChild(box.childNodes[1])         //移除box的第一个子节点。
	alert(‘你将要移除整个box‘);
	box.parentNode.removeChild(box);           //移除整个box。
 };

  
 

5、替换节点

window.onload=function(){
	var box=document.getElementById(‘box‘);
	var p =document.createElement(‘p‘);//仅仅是创建元素节点p 还没有加入到文档中去。仅仅是驻留在内存中。
	box.parentNode.insertBefore(p,box);  //先将指针跳到插入位置的父节点,然后在运行插入
	var text =document.createTextNode(‘測试一下啊!

‘);//创建文本节点text
	p.appendChild(text);//给p节点加入文本元素
	alert(‘你将要把第一測试DIV换成“測试一下啊”‘);
	box.replaceChild(p,box.childNodes[1]);
};

6、克隆节点

window.onload=function(){
	var box=document.getElementById(‘box‘);
	var clone = box.childNodes[1].cloneNode(true); //获取第二个子节点,true 表示复制内容
    box.appendChild(clone);
};

小结

以上就是节点操作的部分方法,节点操作的方法不只这些,还有非常多非常多,我们学习DOM,就是学习里面对象的方法与属性的使用。希望我们能在今后的项目中经常使用。PS一句。有没有发现这些方法属性就死增删改查操作,先查,在操作,上面的一些操作都是依照这个步骤来的。

时间: 2024-10-12 03:18:31

《JavaScript》——DOM的相关文章

《JavaScript》——面向对象之原型

上一篇文章我主要介绍的是在JavaScript里对象的创建,可是,在对象的创建过程中有很多知识我们还没有学习,那就是原型,原型式什么东东哪?在这里我想用自己的理解跟大家说说,有不对的地方大家可以给我提意见. 首先说,原型就是对象,这个对象中的属性和方法可以被共享,被谁共享哪?就是被实例们共享(当我们创建一个对象后,然后再用这个对象去实例化许多实例). 我们创建的每个对象都有一个 prototype(原型)属性,这个属性是系统自动创建的,通过这个属性(prototype)就可以直接访问到该对象的原

《javascript》高级程序设计——类型转换错误

容易发生类型转换错误的另一个地方,就是流控制语句.像if之类的语句在确定下一步操作之前,会自动把任何值转换成布尔值.尤其是if语句,如果使用不当,最容易出错.来看下面的例子. function concat(str1,str2,str3){ var result= str1 + str2; if (str3){ //绝对不要这样 result += str3; } return result; } 这个函数的用意是拼接两或三个字符串,然后返回结果.其中,第三个字符串是可选的,因此必须要检查.第3

《JavaScript》——宏观把控

JavaScript诞生于1995 年, 它当时的作用是为了验证表单输入的验证(在客户端验证,减轻服务器的负担),到现在已经发展成能增强web互动,并且可以加强用户的体验的功能了. 一. JavaScript定义:JavaScript是一种动态类型.弱类型.内置支持类型.基于原型的一种脚本语言. 二.JavaScript导图分析 三.导图分析 JavaScript特点 1.脚本语言:JavaScript是一种解释型的脚本语言,C.C++等语言先编译后执行,而JavaScript是在程序的运行过程

《JavaScript》高级程序设计第21章:Ajax和Comet

Ajax的技术核心是XMLHttpRequest对象(简称XHR) 一.创建XMLHttpRequest对象 1 function createXHR(){ 2 if(typeof XMLHttpRequest != "undefined"){ 3 //IE7, FireFox, Opera, Chrome, Safari都支持原生的XHR对象,这些浏览器中可以使用XMLHttpRequest构造函数 4 return new XMLHttpRequest(); 5 } else if

《JavaScript》——面向对象之继承

继承是面向对象中一个比较核心的概念. 其他正统面向对象语言都会用两种方式实现继承:一个是接口实现,一个是继承.而 ECMAScript 只支持继承,不支持接口实现,而实现继承的方式依靠原型链完成.在JavaScript中的继承中,分了好几类继承,可以说是伴随着问题的出现,继承的方法也升级了,不光是原型链继承,还有组合继承.原型继承.寄生式继承.寄生组合继承等等.他们伴随着不同问题的出现而出现,下面我分别介绍一下这几种继承方式. 1.原型链式继承 <span style="font-fami

《JavaScript》——面向对象与原型

谈到面向对象,我们之前学过Vb和C#,从抽象到封装再到继承和多态,面向对象的世界真的很好玩,但是JavaScript中的面向对象有些特殊,因为里面没有类,而且对象的创建方式也不同. 对象的创建大约有四种方式:使用new关键字创建.使用字面量创建.使用工厂方法创建.使用构造函数创建. 1.使用new关键字 var box = new Object(); //创建一个 Object 对象 box.name = 'Lee'; //创建一个 name 属性并赋值 box.age = 100; //创建一

《JavaScript》 程序基本知识 数据类型。 {0912上}

JS脚本语言: 这是JaxaScript的全称名 JS是网页里面使用的脚本语言 JS是一个非常强大的语言 JS的基础语法 注释语法:  单行注释 //     多行注释 /**/ 输出语法:   双标签公式:<script>公式内容</script> alert("信息")        公式内容} 此代码是在页面上弹出信息 confirm(”信息“);     公式内容}        此代码会弹出一个和用户交互的对话框. 有{确定}{取消} prompt(&

07.30《JavaScript》——JS创建对象的三种方式

1.第一种创建对象的方式:先定义类再创建对象 // 第一种创建对象的方式:先定义类再创建对象 function stu(sno, name, age){ this.sno = sno; this.name = name; this.age = age; this.study = function(){ alert("学号为"+this.sno+"的学生,姓名叫做"+this.name+",正在努力学习,年龄为"+this.age); } } va

《JavaScript》高级程序设计第7章 函数表达式

7.2 闭包 定义: 闭包是指有权访问另一个函数作用域中的变量的函数. 理解闭包: 作用域链: 当某个函数被调用时,会创建一个执行环境以及相应的作用域链. 作用域链中,外部函数的活动对象始终处于第二位,外部函数的外部函数的活动对象处于第三位.....直至作为作用域链终点的全局执行环境 变量对象: 全局函数的变量对象始终存在, 而局部环境的变量对象只在函数执行的过程中存在. 一般来讲, 当函数执行完毕后, 局部活动对象就会被销毁, 内存中仅保存全局作用域(全局执行环境中的变量对象)但是闭包的情况又