JS基础-DOM Node节点

DOM 节点

节点(Node) 释义 对象
文档节点 整个文档 Document 对象
元素节点 每一个HTML元素 Eelement 对象
文本节点 HTML元素内的文本 Text 对象
属性节点 每一个HTML的属性 Attribute 对象
注释节点 文档的注释内容 Comment 对象

Attributes属性节点

属性 释义
nodeType 节点类型
nodeValue 节点值
nodeName 节点名称
innerHTML 节点(元素)的文本值

导航属性

属性 释义
parentNode 节点(元素)的父节点
firstChild 节点下第一个子元素
lastChild 节点下最后一个子元素
childNodes 节点(元素)的子节点

Node标签的增删改查

方法

方法 描述
createElement(name) 建立元素
appendChild() 添加元素
removeChild() 删除元素

添加标签节点(createElement)和删除节点标签(removeChild)都是在父级节点上操做的html

综合示例

<html>
 <head>
  <style>
		.div1 { width: 300px;height: 100%;color: #000;float: left;text-align: center;background-color: #FFCCCC;}
		div p { background-color: #fff;}
	</style>
 </head>
 <body>
  <div class="div1">
   <h3>Node的增删改查</h3>
   <button onclick="add()">添加标签</button>
   <button onclick="del()">删除标签</button>
   <button onclick="replace()">替换标签</button>
  </div>
  <script>
	var div_1 = document.getElementsByClassName("div1")[0];			//定位标签元素父级

	//添加节点标签函数
	function add(){
		var ele = document.createElement("p");						//定义建立标签元素
		ele.innerHTML="新增的 P 标签";								//添加标签元素内容
		div_1.appendChild(ele);										//定位标签中添加元素
					}

	//删除节点标签函数
	function del(){
		var div_p = div_1.getElementsByTagName("p")[0];				//定义删除的标签元素
		div_1.removeChild(div_p);									//定位标签中删除元素
					}

	//修改节点标签函数
	function replace(){
		var new_title = document.createElement("h2");				//定义建立要修改后的标签
		new_title.innerHTML="替换后的新标题"							//添加标签元素内容
		var old_title = document.getElementsByTagName("h3")[0];		//定义要修改的标签
		div_1.replaceChild(new_title,old_title);				    //进行调遣替换
				   }
</script>
 </body>
</html>

Node样式的增删改查

方法

方法 描述
[ele].classList.add() 添加样式
[ele].classList.remove() 删除样式
[ele].style.[ClassName] 修改样式

添加标签节点(classList.add)和删除节点标签(classList.remove)都是在当前节点上操做的node

综合示例

<!DOCTYPE html>
<html>
 <head> 
  <style>
		.sty_1 { height: 200px;width: 200px;background-color: #FFCCCC;}
		.sty_2 { margin: auto;color: #FFF;line-height: 200px;text-align: center;}
	</style> 
 </head> 
 <body> 
  <div class="sty_1">
   this is test !!!
  </div> 
  <button onclick="add()">添加样式</button> 
  <button onclick="del()">删除样式</button> 
  <button onclick="cha()">修改样式</button> 
  <script>
	i = 0;
	var div_1 = document.getElementsByClassName("sty_1")[0];
	function add(){
			div_1.classList.add("sty_2");						//添加样式
	}
	function del(){
			div_1.classList.remove("sty_2")						//删除样式
	}
	function cha(){
			var val = ["#CCCCFF","#FFCC99","#99CCFF"];
			if (i < val.length -1){
				i++;
				div_1.style.backgroundColor=val[i];				//修改样式
			}
			else{
				i = 0;
				div_1.style.backgroundColor=val[i];				//修改样式
			}
	}
</script>  
 </body>
</html>

选项选择

<!DOCTYPE html>
<html>
<body>
	
<button onclick="SelectALL()">全选</button>
<button onclick="Cancel()">取消</button>
<button onclick="Reverse()">反选</button>

<div>
	<input type="checkbox"> 文本
	<input type="checkbox"> 文本
	<input type="checkbox"> 文本
</div>

<script>
	var inputs = document.getElementsByTagName("input");		//定义标签元素数组

	function SelectALL()
	{
		for (var i=0; i<inputs.length;i++)						//for循环数组
		{

			var input=inputs[i];								//循环位置对象
			input.checked=true;									//标记 true 状态
		}
	}

	function Cancel()
	{
		for (var i=0; i<inputs.length;i++)						//for循环数组
		{
			var input=inputs[i];								//循环位置对象
			input.checked=false;								//标记 false 状态
		}
	}
	function Reverse()
	{
		for (var i=0; i<inputs.length;i++)						//for循环数组
		{
			var input=inputs[i];								//循环位置对象
			input.checked=!input.checked;						//状态取反
		}
	}
</script>
</body>
</html>

二级联动

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<select id="provinces">
	<option>请选择省份</option>
</select>
<select id="citys">
	<option>请选择城市</option>
</select>

<script>
	data = {"上海市":["徐汇区","宝山区","浦东新区"],"北京市":["朝阳区","丰台区","昌平区"]}
	
	var pro_ele = document.getElementById("provinces");
	var city_ele = document.getElementById("citys");

	for (var i in data){									//遍历省份
		var ele = document.createElement("option");			//定义建立标签元素
		ele.innerHTML=i;									//添加标签元素内容
		pro_ele.appendChild(ele);							//定位标签中添加元素
	}

	pro_ele.onchange=function(){							//域的内容被改变触发事件
		var city_label = this.options[this.selectedIndex];	//经过 this 索引拿到当前选中项的省份标签
		var citys = data[city_label.innerHTML];				//经过省份标签拿到当前选中省份的城市

		city_ele.options.length=1;							//options 只保留第一个,避免不一样省份城市累加

		for (var i=0;i<citys.length;i++){					//遍历当前选中省份全部的城市
			var ele = document.createElement("option");		//定义建立标签元素
			ele.innerHTML=citys[i];							//添加标签元素内容
			city_ele.appendChild(ele);						//定位标签中添加元素
		}
	}
</script>
</body>
</html>
相关文章
相关标签/搜索