HTML DOM方法

一些 DOM 对象方法

这里提供一些您将在本教程中学到的常用方法:

方法 描述
getElementById() 返回带有指定 ID 的元素。
getElementsByTagName() 返回包含带有指定标签名称的所有元素的节点列表(集合/节点数组)。
getElementsByClassName() 返回包含带有指定类名的所有元素的节点列表。
appendChild() 把新的子节点添加到指定节点。
removeChild() 删除子节点。
replaceChild() 替换子节点。
insertBefore() 在指定的子节点前面插入新的子节点。
createAttribute() 创建属性节点。
createElement() 创建元素节点。
createTextNode() 创建文本节点。
getAttribute() 返回指定的属性值。
setAttribute() 把指定属性设置或修改为指定的值。

nodeType 属性

nodeType 属性返回节点的类型。nodeType 是只读的。

比较重要的节点类型有:

元素类型 NodeType
元素 1
属性 2
文本 3
注释 8
文档 9

HTML DOM 节点树

HTML DOM 将 HTML 文档视作树结构。这种结构被称为节点树

HTML DOM Tree 实例

HTML DOM Node Tree

节点父、子和同胞

节点树中的节点彼此拥有层级关系。

父(parent)、子(child)和同胞(sibling)等术语用于描述这些关系。父节点拥有子节点。同级的子节点被称为同胞(兄弟或姐妹)。

  • 在节点树中,顶端节点被称为根(root)
  • 每个节点都有父节点、除了根(它没有父节点)
  • 一个节点可拥有任意数量的子
  • 同胞是拥有相同父节点的节点

下面的图片展示了节点树的一部分,以及节点之间的关系:

DOM 节点关系

请看下面的 HTML 片段:

<html>
  <head>
    <title>DOM 教程</title>
  </head>
  <body>
    <h1>DOM 第一课</h1>
    <p>Hello world!</p>
  </body>
</html>

从上面的 HTML 中:

  • <html> 节点没有父节点;它是根节点
  • <head> 和 <body> 的父节点是 <html> 节点
  • 文本节点 "Hello world!" 的父节点是 <p> 节点

并且:

  • <html> 节点拥有两个子节点:<head> 和 <body>
  • <head> 节点拥有一个子节点:<title> 节点
  • <title> 节点也拥有一个子节点:文本节点 "DOM 教程"
  • <h1> 和 <p> 节点是同胞节点,同时也是 <body> 的子节点

并且:

  • <head> 元素是 <html> 元素的首个子节点
  • <body> 元素是 <html> 元素的最后一个子节点
  • <h1> 元素是 <body> 元素的首个子节点
  • <p> 元素是 <body> 元素的最后一个子节点

警告!

DOM 处理中的常见错误是希望元素节点包含文本。

在本例中:<title>DOM 教程</title>,元素节点 <title>,包含值为 "DOM 教程" 的文本节点

可通过节点的 innerHTML 属性来访问文本节点的值。

您将在稍后的章节中学习更多有关 innerHTML 属性的知识。

<html>
	<head>
		<title>Skip Blanks String</title>
		<script type="text/javaScript">
			//忽略空白字符串
			function SkipBlanksString(element){
				var ret = [];
				for(var i=0; i<element.length; i++){ 
					if(element[i].nodeType === 3 && /^\s+$/.test(element[i].nodeValue)){ 
						continue;
					} else { 
						ret.push(element[i]);
					}
				}
				return ret;
			};
			//删除空白字符
			function RemoveSkipString(element){ 
				for(var i=0; i<element.length; i++){ 
					if(element[i].nodeType === 3 && /^\s+$/.test(element[i].nodeValue)){ 
						element[i].parentNode.removeChild(element[i]);
					}
				}
				return element;
			};
			window.onload = function (){
				var box = document.getElementById('box');
				alert(RemoveSkipString(box.childNodes).length);  //返回数量3
				alert(SkipBlanksString(box.childNodes).length);   //返回数量3
			};
		</script>
	</head>
	<body>
		<div id="box">
			<p id="p1">hello world!</p>
			Fuck You!
			<p>this is the last line</p>
		</div>
	</body>
</html>

<html>
<head>
	<meta charset="UTF-8">
	<title>Skip Blanks String</title>
	<script type="text/javaScript">
		//删除空白字符
		function Rst(node){ 
			for(var i=0; i<node.length; i++){ 
				if(node[i].nodeType === 3 && /^\s+$/.test(node[i].nodeValue)){ 
					node[i].parentNode.removeChild(node[i]);
				}
			}
			return node;
		};
		window.onload = function (){ 
			var box = document.getElementById('box'); 
			var Skip = Rst(box.childNodes);   //删除所有空白字符
			var createD = document.createElement('div');   //创建元素节点<div></div>
			for(var i=0; i<Skip.length; i++){ 
				var createP = document.createElement('p');    //创建元素节点 <p></p>
				var Str ='';
				if(Skip[i].nodeType === 1){ 
					Str = Skip[i].innerHTML;   //如果是“元素节点”输出innerHTML 赋值给 Str
				} else { 
					Str = Skip[i].nodeValue;   //如果是“文本节点”输出nodeValue 赋值给 Str
				};
				var createT = document.createTextNode(Str);   //创建文本节点
				createP.appendChild(createT);   //把文本节点添加到P元素下
				box.parentNode.appendChild(createD).appendChild(createP);   //添加DIV标签,再DIV下添加子节点P标签
			};
		};
	</script>
</head>
<body>
	<div id="box">
		<p id="p1">hello world!</p>
		<span>Fuck You....</span>
		激光电波,毕.........
		<p>this is the last line</p>
	</div>
</body>
</html>


<html>
<head>
	<meta charset="UTF-8">
	<title>2016年1月9日 23:35:52</title>
	<script type="text/JavaScript">
			function evening(){ 
				var Col = document.body.style;
				Col.backgroundColor ="blue";
			};
			function nooning(){ 
				var Col = document.body.style;
				Col.backgroundColor ="lavender"
			};
			winDow.onload = function(){ 
			};
			</script>
</head>
<body>
	<button type="button" οnclick="var i=0; setInterval(function(){document.body.innerHTML=i++},500);">Hello world!</button>
	<input type="button" οnclick="setInterval(evening,500)" value="This is the button" />
	<button type="button" οnclick="setInterval(nooning,1000)">This is the third</button>
</body>
</html>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值