【JavaScript】DOM节点常用方法介绍02

DOM节点常用方法介绍02

1.替换节点
replaceChild()
把一个给定父元素里的一个子节点替换为另外一个子节点
var reference = element.replaceChild(newChild,oldChild);
返回值是一个指向已被替换的那个子节点的引用指针。
如果被插入的子节点还有子节点,则那些子节点也被插入到目标节点中

例子:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
		<title>js测试</title>

	</head>
	<body> 

	  您喜欢的城市:<br>
	   <ul>
	   	 <li id="bj" value="beijing">北京</li>
		 <li id="sh" value="shanghai">上海</li>
		 <li id="cq" value="chongqing"> 重庆</li>
	   </ul>

	  您喜欢的游戏:<br>
	   <ul>
	   	 <li id="fk" value="fangkong">反恐<p>xxx</p></li>
		 <li id="ms" value="moshou">魔兽</li>
		 <li id="cq" value="chuanqi">传奇</li>
	   </ul>   

	    <script language="javascript">
			//点击北京节点,将被反恐节点替换

			//改写北京节点的onclick方法
			document.getElementById("bj").onclick=function(){

				//获取反恐节点
				var fkElement=document.getElementById("fk");
				//获取北京节点的父节点
				var bjParentElement=this.parentNode;

				//替换(反恐的子节点xxx也过去)
				var oldElement=bjParentElement.replaceChild(fkElement,this);

				//测试
				alert(oldElement.getAttribute("value"));
			}

	    </script>
	</body>

</html>

2.查找属性节点
getAttribute()   
返回一个给定元素的一个给定属性节点的值
var attributeValue = element.getAttribute(attributeName);
给定属性的名字必须以字符串的形式传递给该方法。
给定属性的值将以字符串的形式返回,如果给定属性不存在,getAttribute() 将返回一个空字符串.

通过属性获取属性节点
getAttributeNode(属性的名称)--Node

例子:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
		<title>js测试</title>

	</head>
	<body> 

	   您喜欢的城市:<br>
	   <ul>
	   	 <li id="bj" value="beijing">北京</li>
		 <li id="sh" value="shanghai">上海</li>
		 <li id="cq" value="chongqing">重庆</li>
	   </ul>

	  您喜欢的游戏:<br>
	   <ul>
	   	 <li id="fk" value="fangkong">反恐</li>
		 <li id="ms" value="moshou">魔兽</li>
		 <li id="xj" value="xingji">星际争霸</li>
	   </ul>   

	    <script language="javascript">
			//获取"星际争霸"节点的value值
			var xjElement=document.getElementById("xj");
			alert(xjElement.getAttribute("value"));

	    </script>
	</body>

</html>

3.设置属性节点
setAttribute()
将给定元素节点添加一个新的属性值或改变它的现有属性的值。
   element.setAttribute(attributeName,attributeValue);
属性的名字和值必须以字符串的形式传递给此方法
如果这个属性已经存在,它的值将被刷新;
如果不存在,setAttribute()方法将先创建它再为其赋值。

例子:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
		<title>js测试</title>

	</head>
	<body> 

	   您喜欢的城市:<br>
	   <ul>
	   	 <li id="bj" value="beijing">北京</li>
		 <li id="sh" value="shanghai">上海</li>
		 <li id="cq" value="chongqing">重庆</li>
	   </ul>

	  您喜欢的游戏:<br>
	   <ul>
	   	 <li id="fk" value="fangkong">反恐</li>
		 <li id="ms" value="moshou">魔兽</li>
		 <li id="xj" value="xingji">星际争霸</li>
	   </ul>   

	    <script language="javascript">
			//获取"星际争霸"节点,并增加一个name属性
			var xjElement=document.getElementById("xj");

			//获取当前属性
			alert(xjElement.getAttribute("name"));

			//增加属性
			xjElement.setAttribute("name","xingjizhengba");

			//获取增加后的属性
			alert(xjElement.getAttribute("name"));

	    </script>
	</body>

</html>

4.创建新元素节点
createElement()
按照给定的标签名创建一个新的元素节点。方法只有一个参数:将被创建的元素的名字,是一个字符串.
  var reference = document.createElement(element);
方法的返回值:是一个指向新建节点的引用指针。返回值是一个元素节点,所以它的 nodeType 属性值等于 1。
新元素节点不会自动添加到文档里,新节点没有 nodeParent 属性,它只是一个存在于 JavaScript 上下文的对象.
var pElement = document.createElement("p");

5.创建文本节点
createTextNode()
创建一个包含着给定文本的新文本节点。这个方法的返回值是一个指向新建文本节点引用指针。
  var textNode = document.createTextNode(text);
方法只有一个参数:新建文本节点所包含的文本字符串
方法的返回值:是一个指向新建节点的引用指针。它是一个文本节点,所以它的 nodeType 属性等于 3.
新元素节点不会自动添加到文档里,新节点没有 nodeParent 属性
var pElementText=document.createElement("li");
var textElement=document.createTextNode("南京");
pElementText.appendChild(textElement);

6.插入节点1
appendChild()
为给定元素增加一个子节点:                                   
   var newreference = element.appendChild(newChild).              
   给定子节点 newChild 将成为给定元素节点 element 的最后一个子节点。
方法的返回值是一个指向新增子节点的引用指针。
该方法通常与 createElement() createTextNode() 配合使用
新节点可以被追加给文档中的任何一个元素

4和5、6综合例子:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
		<title>js测试</title>

	</head>
	<body> 

	   您喜欢的城市:<br>
	   <ul id="city">
	   	 <li id="bj" value="beijing">北京</li>
		 <li id="sh" value="shanghai">上海</li>
		 <li id="cq" value="chongqing">重庆</li>
	   </ul>

	  您喜欢的游戏:<br>
	   <ul>
	   	 <li id="fk" value="fangkong">反恐</li>
		 <li id="ms" value="moshou">魔兽</li>
		 <li id="xj" value="xingji">星际争霸</li>
	   </ul>

	    <script language="javascript">
			//增加城市节点<li id="tj" value="tianjing">天津</li>

			//<li></li>
			var liElement=document.createElement("li");

			//设置属性<li id="tj" value="tianjing"></li>
			liElement.setAttribute("id","tj");
			liElement.setAttribute("value","tianjing");

			//创建文本节点"天津"
			var textElement=document.createTextNode("天津");

			//增加文本节点"天津"到<li id="tj" value="tianjing"></li>形成<li id="tj" value="tianjing">天津</li>
			liElement.appendChild(textElement);

			//获取父节点
			var cityElement=document.getElementById("city");

			//添加<li id="tj" value="tianjing">天津</li>到父节点下
			cityElement.appendChild(liElement);

	    </script>
	</body>

</html>

刷新界面后多出了一个"天津"节点,但是我们查看源代码,发现没有"天津"节点,原因是因为我们用过js动态添加的代码通过浏览器的源码查看器是查看不出来的。如果是jsp转过来的是可以看到的。

4和5、6例子2:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
		<title>js测试</title>

	</head>
	<body> 

	     <select name="edu" id="edu">
	   	  <option value="博士">博士^^^^^</option>
		  <option value="硕士">硕士^^^^^</option>
		  <option value="本科">本科^^^^^</option>
		  <option value="幼儿园">幼儿园^^^^^</option>
	   </select>

	    <script language="javascript">
			//增加节点<option value="大专">大专^^^^^</option>

			//创建<option value="大专">大专^^^^^</option>
			var optionElement=document.createElement("option");
			optionElement.setAttribute("value","大专");
			var textElement=document.createTextNode("大专^^^^^");
			optionElement.appendChild(textElement);

			//获取id="edu"节点
			var eduElement=document.getElementById("edu");

			//添加
			eduElement.appendChild(optionElement);

	    </script>
	</body>

</html>

7.插入节点2
insertBefore()
把一个给定节点插入到一个给定元素节点的给定子节点的前面
  var reference =  element.insertBefore(newNode,targetNode);
  节点 newNode 将被插入到元素节点 element 中并出现在节点 targetNode 的前面.
节点 targetNode 必须是 element 元素的一个子节点。
该方法通常与 createElement() 和 createTextNode() 配合使用

例子:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
		<title>js测试</title>

	</head>
	<body> 

	     <ul>
	   	 <li id="bj" name="beijing">北京</li>
		 <li id="sh" name="shanghai">上海</li>
		 <li id="cq" name="chongqing">重庆</li>
	   </ul>

	    <script language="javascript">
			// 插入新的节点 <li id="tj" name="tianjin">天津</li>
			// 在 <li id="cq" name="chongqing">重庆</li>的前面

			//创建 <li id="tj" name="tianjin">天津</li>
			var tjElement=document.createElement("li");
			tjElement.setAttribute("id","tj");
			tjElement.setAttribute("value","tianjing");
			var textElement=document.createTextNode("天津");
			tjElement.appendChild(textElement);

			//获取重庆 <li id="cq" name="chongqing">重庆</li>
			 var cqElement=document.getElementById("cq");

			//获取重庆节点的父节点
			  var ulElement=cqElement.parentNode;

			//插入到重庆前
			 ulElement.insertBefore(tjElement,cqElement);

	    </script>
	</body>

</html>

8.插入节点3
DOM 没有提供 insertAfter() 方法
我们用自己的实现方式去实现类似于insertAfter() 的方法

例子1:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
		<title>js测试</title>

	</head>
	<body> 

	     <ul>
	   	 <li id="bj" name="beijing">北京</li>
		 <li id="sh" name="shanghai">上海</li>
		 <li id="cq" name="chongqing">重庆</li>
	   </ul>

	    <script language="javascript">
			// 插入新的节点 <li id="tj" name="tianjin">天津</li>
			// 在 <li id="cq" name="chongqing">上海</li>的后面

			//创建 <li id="tj" name="tianjin">天津</li>
			var tjElement=document.createElement("li");
			tjElement.setAttribute("id","tj");
			tjElement.setAttribute("value","tianjing");
			var textElement=document.createTextNode("天津");
			tjElement.appendChild(textElement);

			//获取上海 <li id="cq" name="chongqing">重庆</li>
			 var shElement=document.getElementById("sh");

			//获取上海节点的下一个兄弟节点重庆
			  var nextElement=shElement.nextSibling;

			//获取上海节点的父亲节点
			 var shParentElement=shElement.parentNode;

			 //添加到上海节点的下一个兄弟节点重庆的前面
			 shParentElement.insertBefore(tjElement,nextElement);

	    </script>
	</body>

</html>

例子2:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
		<title>js测试</title>

	</head>
	<body> 

	     <ul>
			 <li id="cq" name="chongqing">重庆</li>
			 <li id="bj" name="beijing">北京</li>
			 <li id="sh" name="shanghai">上海</li>
	     </ul>

	    <script language="javascript">
			// 插入新的节点 <li id="tj" name="tianjin">天津</li> 到<li id="sh" name="shanghai">上海</li>这个节点
			// 如上海节点是最后一个节点插入到该节点的<li id="sh" name="shanghai">上海</li>的后面,
			// 否则插入到该节点的前面

			//创建<li id="tj" name="tianjin">上海</li>节点
			var liElement=document.createElement("li");
			liElement.setAttribute("id","tj");
			liElement.setAttribute("name","tianjin");
			var textElement=document.createTextNode("天津");
			liElement.appendChild(textElement);

			//获取上海节点
			var shElement=document.getElementById("sh");

			//获取上海节点的父节点
			var shParentElement=shElement.parentNode;

			//获取上海节点的父节点中的最后一个子节点
			var lastChildParentElement=shParentElement.childNodes[5];

			//比对上海节点和上海节点的父节点中的最后一个子节点
			if(shElement == lastChildParentElement){
				//如果相等,表示上海节点是最后一个节点,此时插入上海节点的后面
				shParentElement.appendChild(liElement);
			}else{
				//如果不相等,表示上海节点不是最后一个节点,此时插入上海节点的前面
				shParentElement.insertBefore(liElement,shElement);
			}

	    </script>
	</body>

</html>

9.删除节点
removeChild()
从一个给定元素里删除一个子节点
   var reference = element.removeChild(node);
返回值是一个指向已被删除的子节点的引用指针。
某个节点被removeChild()方法删除时,这个节点所包含的所有子节点将同时被删除。

例子:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
		<title>js测试</title>

	</head>
	<body> 

	     <ul>
			 <li id="cq" name="chongqing">重庆</li>
			 <li id="bj" name="beijing">北京</li>
			 <li id="sh" name="shanghai">上海</li>
	     </ul>

	    <script language="javascript">
			//删除<ul id="city"> 下<li id="bj" name="beijing">北京</li>这个节点</ul>

			//获取子节点
			var bjElement=document.getElementById("bj");

			//获取父节点
			var cityElement=bjElement.parentNode;

			//删除
			var oldElement=cityElement.removeChild(bjElement);

			//测试
			alert("被删除的节点的id是:"+oldElement.getAttribute("id"));

	    </script>
	</body>

</html>

10.遍历节点树

(1)遍历
ChildNodes:返回一个数组,这个数组由给定元素节点的子节点构成:
var nodeList = node.childNodes;
文本节点和属性节点都不可能再包含任何子节点,所以它们的 ChildNodes 属性永远会返回一个空数组。
如果想知道某个元素有没有子节点,可以用 hasChildNodes 方法。
如果想知道某个元素有多少个子节点,可以用 childNodes 数组的 length 属性。
childNodes 属性是一个只读属性。

(2)获取第一个子节点
firstChild:该属性返回一个给定元素节点的第一个子节点,返回这个节点对象的指针。
    var reference = node.firstChild;
文本节点和属性节点都不可能包含任何子节点,所以它们的 firstChild 属性永远会返回 null。
某个元素的 firstChild 属性等价于这个元素的 childNodes 节点集合中的第一个节点,即:
  var reference = node.ChildNodes[0];
firstChild 属性是一个只读属性。

(2)获取最后一个子节点
lastChild:对应 firstChild 的一个属性。
nextSibling: 返回一个给定节点的下一个兄弟节点。
parentNode:返回一个给定节点的父节点。
parentNode 属性返回的节点永远是一个元素节点,因为只有元素节点才有可能包含子节点。
document 节点的没有父节点。
previousSibling:返回一个给定节点的上一个兄弟节点

例子:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
		<title>js测试</title>

	</head>
	<body> 

	     <ul>
			 <li id="cq" name="chongqing">重庆</li>
			 <li id="bj" name="beijing">北京</li>
			 <li id="sh" name="shanghai">上海</li>
	     </ul>

	    <script language="javascript">
			//遍历节点树并输出每个节点的名称

			//获取ul节点
			var ulELement=document.getElementsByTagName("ul");

			//获取ul节点的节点树
			var ulChildNodes=ulELement[0].childNodes;

			//遍历
			for(var i=0;i< ulChildNodes.length;i++){
				alert(ulChildNodes[i].nodeName);
			}

	    </script>
	</body>

</html>

11.innerHTML属性
浏览器几乎都支持该属性,但不是 DOM 标准的组成部分。
innerHTML 属性可以用来读,写某给定元素里的 HTML 内容。

例子:(在div层中插入 <h1>今天</h1>)
老方法:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
		<title>js测试</title>

	</head>
	<body> 

	    <div id="city"></div>

	    <script language="javascript">
			//在div层中插入 <h1>今天</h1>

			//创建<h1>今天</h1>
			var jintianElement=document.createElement("h1");
			var textElement=document.createTextNode("今天");
			jintianElement.appendChild(textElement);

			//获取div节点
			var divElement=document.getElementById("city");

			//添加
			divElement.appendChild(jintianElement);

	    </script>
	</body>

</html>

使用innerHTML的方法

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
		<title>js测试</title>

	</head>
	<body> 

	    <div id="city"></div>

	    <script language="javascript">
			//在div层中插入 <h1>今天</h1>
			document.getElementById("city").innerHTML="<h1>今天</h1>";
	    </script>
	</body>

</html>

转载请注明出处:http://blog.csdn.net/acmman/article/details/47946639

时间: 2024-11-02 19:12:29

【JavaScript】DOM节点常用方法介绍02的相关文章

【JavaScript】DOM节点常用方法介绍01

DOM节点常用方法介绍01 1.查找元素节点 1.1getElementById()       寻找一个有着给定 id 属性值的元素,返回值是一个有着给定id属性值的元素节点.如果不存在这样的元素,它返回null. var oElement = document.getElementById ( sID )      该方法只能用于document对象 例子: <pre name="code" class="html"><!DOCTYPE htm

JavaScript DOM节点添加示例_javascript技巧

<!DOCTYPE html> <html> <body> <div id="div1"> <p id="p1">这是一个段落.</p> <p id="p2">这是另一个段落.</p> </div> <script> var para=document.createElement("h1"); var nod

javascript dom 节点遍历实用函数

function is_all_ws(nod) { return !(/[^tnr ]/.test(nod.data)); } function is_ignorable(nod) { return (nod.nodeType == 8) || ((nod.nodeType == 3) && is_all_ws(nod)); } function node_before(sib) { while ((sib = sib.previousSibling)) { if (!is_ignorab

浅谈Javascript中的12种DOM节点类型_javascript技巧

前言 DOM的作用是将网页转为一个javascript对象,从而可以使用javascript对网页进行各种操作(比如增删内容).浏览器会根据DOM模型,将HTML文档解析成一系列的节点,再由这些节点组成一个树状结构.DOM的最小组成单位叫做节点(node),文档的树形结构(DOM树)由12种类型的节点组成. 属性 一般地,节点至少拥有nodeType.nodeName和nodeValue这三个基本属性. 节点类型不同,这三个属性的值也不相同 nodeType nodeType属性返回节点类型的常

JavaScript操作HTML DOM节点的基础教程_基础知识

因为 DOM 的存在,这使我们可以通过 JavaScript 来获取.创建.修改.或删除节点. NOTE:下面提供的例子中的 element 均为元素节点.获取节点 父子关系 element.parentNode element.firstChild/element.lastChild element.childNodes/element.children 兄弟关系 element.previousSibling/element.nextSibling element.previousEleme

JavaScript中对DOM节点的访问、创建、修改、删除_基础知识

DOMDOM就是Document object Model的缩写.文档对象模型是把XML或HTML以树节点为表现形式的文档.用DOM方法和属性,你可以访问,修改,删除页面上任意一个元素,也是可以添加一个元素.DOM是独立于语言的API,可以被任意语言所实现,当然也包括了Javascript 看看下面的一个文本. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/x

JavaScript Dom编程:介绍学习书籍

JavaScript Dom编程 学习书籍选择 JavaScript Dom编程学习,很多朋友无疑对如何选择入门的书籍,比较头疼.或许也是他们一直畏惧,甚至放弃学习JavaScript的理由. 在JavaScript 方面,自己不是什么专家,也不是什么高手,但自己一路走来,JavaScript 从迷茫到认识,对于JavaScript 书籍的认识或许还有些借鉴价值. 入门推荐首选书籍:<JavaScript DOM 编程艺术 > 当初读了不下4遍,书内容简单,易学,上手快,编程思想严谨.好的入门

JavaScript DOM 学习第九章 选取范围的介绍_基础知识

虽然我们会讲解用程序创建范围对象,但是我们把精力主要集中在如何将用户的选取范围转换成为W3C 范围或者微软的文档范围对象.   什么是范围 范围是指HTML文档中的任意一部分内容.一个范围的开始和结束点都可以是随意的,甚至是相同的(一个空范围).最常见的范围就是用户选取的文本.当用户在页面上选取了一部分,你就可以他的选取部分转换为范围对象.然而,你也可以让程序自动选择范围. 让我们以下面的代码为例.假设用户选择了下面的文字: <h4 id="entry1196"><a

javascript将DOM节点添加到文档的方法实例分析_javascript技巧

本文实例讲述了javascript将DOM节点添加到文档的方法.分享给大家供大家参考.具体如下: 这里对两种方法进行了比较:第一种:先创建所有节点,再添加到文档方式的运行时长:第二种:先向文档添加一个空容器,然后每创建一个节点,再添加到容器中方式的运行时长,从测试来看,第二种方法优于第一种! 运行效果如下图所示: 具体代码如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-eq