DOM树基础

Posted Al_tair

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DOM树基础相关的知识,希望对你有一定的参考价值。

DOM

DOM

基本概念

W3school在线教程

DOM 全称是 Document Object Model 文档对象模型

当网页被加载时,浏览器会创建页面的文档对象模型

document 对象

document 它是一种树结构的文档,有层级关系 在 dom 中把所有的标签都对象化

document 常用方法

getElementById

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript">
		window.onload = function()
			var name = document.getElementById("name");
			name.onclick = function()
				console.log(name.innerText); // 罗念笙
				console.log(name.innerHTML); // <i>罗念笙</i>
			
		
		</script>
	</head>
	<body>
		<h1 id="name"><i>罗念笙</i></h1>
	</body>
</html>

getElementsByName

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript">
			window.onload = function()
                 // 注意:getElementsByName中传入的值需要带引号
				var btn1 = document.getElementById("btn1");
				var btn2 = document.getElementById("btn2");
				var btn3 = document.getElementById("btn3");
				var sports = document.getElementsByName("sport");
				btn1.onclick = function()
					for(i = 0;i < sports.length;i++)
						sports[i].checked = !sports[i].checked;
					
				
				btn2.onclick = function()
					for(i = 0;i < sports.length;i++)
						sports[i].checked = true;
					
				
				btn3.onclick = function()
					for(i = 0;i < sports.length;i++)
						sports[i].checked = false;
					
				
			
		</script>
	</head>
	<body>
		<input type="checkbox" name="sport" id="" value="soccer" />足球
		<input type="checkbox" name="sport" id="" value="basketball" />篮球
		<input type="checkbox" name="sport" id="" value="volleyball" />排球
		<br/>
		<button type="button" id="btn1">反选</button>
		<button type="button" id="btn2">全选</button>
		<button type="button" id="btn3">全不选</button>
	</body>
</html>

createElement

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript">
			window.onload = function()
				var btn = document.getElementById("btn01");
				btn.onclick = function()
					// 添加图片标签
					var img = document.createElement("img");
					img.src = "./imgs/1.png";
					img.width = 100;
					document.body.appendChild(img);
				
			
		</script>
	</head>
	<body>
		<input type="button" id="btn01" value="按钮" />
	</body>
</html>

HTML DOM节点

W3school文档

在 HTML DOM(文档对象模型)中,每个部分都是节点

  • 文档本身是文档节点
  • 所有 HTML 元素是元素节点
  • 所有 HTML 属性是属性节点
  • HTML 元素内的文本是文本节点
  • 注释是注释节点

实战练习

/* .css文件 */
@CHARSET "UTF-8";

body 
	width: 800px;
	margin-left: auto;
	margin-right: auto;
	韩顺平 Java 工程师


button 
	width: 200px;
	margin-bottom: 10px;
	text-align: left;


#btnList 
	float: left;


#total 
	width: 450px;
	float: left;


ul 
	list-style-type: none;
	margin: 0px;
	韩顺平 Java 工程师 padding: 0px;


.inner li 
	border-style: solid;
	border-width: 1px;
	padding: 5px;
	margin: 5px;
	float: left;


.inner 
	width: 400px;
	border-width: 1px;
	margin-bottom: 10px;
	padding: 10px;
	float: left;

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>演示 HTML DOM 相关方法</title>
		<link rel="stylesheet" type="text/css" href="./css/test.css" />
		<script type="text/javascript">
			window.onload = function()
				// 查找 id=java 节点
				var btn1 = document.getElementById("btn01");
				btn1.onclick = function()
					console.log("查找 id = java的节点");
					var java = document.getElementById("java");
					console.log(java.innerText);
				
				
				// 查找所有 option 节点
				var btn2 = document.getElementById("btn02");
				btn2.onclick = function()
					console.log("查找所有 option 节点");
					var optionAll = document.getElementsByTagName("option");
					for(i = 0;i < optionAll.length;i++)
						console.log(optionAll[i].innerText);
					
				
				
				// 查找 name=sport 的节点
				var btn3 = document.getElementById("btn03");
				btn3.onclick = function()
					console.log("查找 name=sport 的节点");
					var sports = document.getElementsByName("sport");
					for(i = 0;i < sports.length;i++)
						console.log(sports[i].value);
					
				
				
				// 查找 id=language 下所有li节点
				var btn4 = document.getElementById("btn04");
				btn4.onclick = function()
					console.log("查找 id=language 下所有li节点");
					var liAll = document.getElementById("language").getElementsByTagName("li");
					for(i = 0;i < liAll.length;i++)
						console.log(liAll[i].innerText);
					
				
				
				// 返回 id=sel01 的所有子节点
				var btn5 = document.getElementById("btn05");
				btn5.onclick = function()
					console.log("返回 id=sel01 的所有子节点");
					var sel01_Child = document.getElementById("sel01").childNodes;
					for(i = 0;i < sel01_Child.length;i++)
						console.log(sel01_Child[i].innerText); // 11 个子节点
					
				
				
				// 返回 id=sel01 的第一个子节点
				var btn6 = document.getElementById("btn06");
				btn6.onclick = function()
					console.log("返回 id=sel01 的第一个子节点");
					var sel01_First_Child = document.getElementById("sel01").childNodes;
					console.log(sel01_First_Child.firstChild); // undefined 
				
				
				// 返回 id=java 的父节点
				var btn7 = document.getElementById("btn07");
				btn7.onclick = function()
					console.log("返回 id=java 的父节点");
					var java_Parent = document.getElementById("java").parentElement;
					console.log(java_Parent);
				
				
				// 返回 id=ct 的前后兄弟节点
				var btn8 = document.getElementById("btn08");
				btn8.onclick = function()
					console.log("返回 id=ct 的前后兄弟节点");
					// previousSibling属性,获取当前节点的上一个节点(前一个)
					var ct_Brother = document.getElementById("ct").previousSibling;
					console.log(ct_Brother.innerText); // undefined 
					// nextSibling属性,获取当前节点的下一个节点(后一个)
					var ct_Brother = document.getElementById("ct").nextSibling;
					console.log(ct_Brother.innerText); // undefined 
				
				
				// 读取 id=ct 的 value 属性值
				var btn9 = document.getElementById("btn09");
				btn9.onclick = function()
					console.log("读取 id=ct 的 value属性值");
					var ct_Value = document.getElementById("ct");
					console.log(ct_Value.value);
				
				
				// 设置 #person 的文本域
				var btn10 = document.getElementById("btn10");
				btn10.onclick = function()
					console.log("设置 #person 的文本域");
					var person = document.getElementById("person");
					person.value = "大家好呀,我是小笙";
					console.log(person.value);
				
				
			
		</script>
	</head>
	<body>
		<div id="total">
			<div class="inner">
				<P> 你会的运动项目: </P> 
				<input type="checkbox" name="sport" value="zq" checked="checked">足球 
				<input type="checkbox" name="sport" value="tq">台球 
				<input type="checkbox" name="sport" value="ppq">乒乓球
				<br />
				<hr />
				<P> 你当前女友是谁: </P> <select id="sel01">
					<option>---女友---</option>
					<option>艳红</option>
					<option id="ct" value="春桃菇凉">春桃</option>
					<option>春花</option>
					<option>桃红</option>
				</select>
				<hr />
				<p> 你的编程语言? </p>
				<ul id="language">
					<li id="java">Java</li>
					<li>php</li>
					<li>C++</li>
					<li>Python</li>
				</ul> <br> <br>
				<hr />
				<p> 个人介绍: </p> <textarea name="person" id="person">个人介绍</textarea>
			</div>
		</div>
		<div id="btnList">
			<div><button id="btn01">查找 id=java 节点</button> </div>
			<div><button id="btn02">查找所有 option 节点</button> </div>
			<div><button id以上是关于DOM树基础的主要内容,如果未能解决你的问题,请参考以下文章

DOM基础知识(概念节点树事件Document)

全新java大数据教程之JavaScript的DOM对象(Document Object Model 文档对象模型)

JavaScript基础 -- 常见DOM树操作

React虚拟DOM浅析

DOM之节点树操作

Jquery基础之DOM操作