JS基础-DOM操作

  • 一、获取元素节点
  • 二、获取元素节点的子节点
  • 三、获取父节点和兄弟节点
  • 四、补充
  • querySelector() 根据css选择器查询
  • 持续更新



这是我的学习笔记,学的时候记录,后续方便查找复习。

一、获取元素节点

通过document对象调用。

1、getElementById()
	根据 id 属性获取 一个 元素节点对象;
	
2、getElementByTagName()
	根据 标签名 获取 一组 元素节点对象;
	
3、getElementByName()
	根据 name 属性获取 一组 元素节点对象;
	
PS:
	getElementsByClassName()
	根据 class 属性获取一组元素节点,但不支持IE8及以下的浏览器;

这里有一个例子:

<ul>
	<li id="bj"> 北京 </li>
	<li> 上海 </li>
	<li> 东京 </li>
	<li> 首尔 </li>
</ul>

<Button id="btn"> 按钮 </Button>
// 为id=btn的按钮绑定一个单机响应函数
var btn = document.getElementById("btn");

btn.onclick = function(){

	// 查找所有li节点,将返回的元素封装到一个 类数组 对象中
	var lis = document.getElementByTagName("li");
	alert(lis.length);  // 4
	
	// 查看所有li
	for(var i=0; i < lis.length; i++){
	
		// 通过innerHtml属性可以获取到元素内部的HTML代码
		alert(lis[i].innerHtml); // 北京 上海 东京 首尔
	}
}

若需要读取元素节点属性,则:元素.属性名

eg: 元素.id  元素.name  元素.value

注意:
// class 属性不能采用元素.属性名这种方式;
// 对于自结束标签 innerHtml 属性没有意义;eg: <input />



二、获取元素节点的子节点

通过具体的元素节点调用。

方法:
1、getElementByTagName()
	返回当前节点的指定标签名后代节点;
	
属性:
1、childNodes
	表示当前节点的所有子节点;
	
2、firstChild
	表示当前节点的第一个子节点;
	
3、lastChild
	表示当前节点的最后一个子节点;

同样的一个例子:

<ul id="city">
	<li id="bj"> 北京 </li>
	<li> 上海 </li>
	<li> 东京 </li>
	<li> 首尔 </li>
</ul>

<Button id="btn"> 按钮 </Button>
// 为id=btn的按钮绑定一个单机响应函数
var btn = document.getElementById("btn");

btn.onclick = function(){

	// 获取id = sh的节点
	var city= document.getElementById("city");
	
	// 获取city的所有子节点
    var cns = city.childNodes;  // 会包括文本节点在内的所有节点
    alert(cns.length);  // 9;包括了 ul 和 li 之间的空白(文本节点)
	
	// 获取city的所有子元素
    var cns2 = city.children;
    alert(cns2.length);  // 4
    
	// 获取city的第一个子节点(包括空白节点)
    var fir= city.firstChild;
    alert(fir);  //  ;空白节点
    // alert(fir.innerHtml);  // 若去掉中间的空白,则返回的是北京
    
    
    // 获取city的第一个子元素(IE8及以下不支持firstElementChild)
	fir =  city.firstElementChild;
   
   
   var fc = city.firstChild;
   alert(fc.nodeValue);  // 
}



三、获取父节点和兄弟节点

通过具体的节点调用。

属性:
1、parentNode
	表示当前节点的父节点;
	
2、previousSibling
	表示当前节点的前一个兄弟节点;
	
3、nextSibling
	表示当前节点的后一个兄弟节点;

还是这样的一个例子:

<ul id="city">
	<li id="bj"> 北京 </li>
	<li id="sh"> 上海 </li>
	<li> 东京 </li>
	<li> 首尔 </li>
</ul>

<Button id="btn"> 按钮 </Button>
var btn = document.getElementById("btn");

btn.onclick = function(){
	// 获取id = sh的节点
	var sh= document.getElementById("sh");

	// 返回sh的父节点
	var pn = sh.parentNode;
	alert(pn.innerHtml);  //  ul的文本就是一群li  
	 					 /**
							<li id="bj"> 北京 </li>
							<li id="sh"> 上海 </li>
							<li> 东京 </li>
							<li> 首尔 </li>
						 **/
						 
	// innerText 属性 获取元素内部的文本内容,但会自动去掉html标签
	alert(pn.innerText);  /**
							 北京 
							 上海 
							 东京
						     首尔
						  **/
	
	// 获取sh的前一个兄弟节点(也能获取到空白的文本)
	var pn2 = sh.previousSibling;
	// 获取sh的前一个兄弟元素 
	var pn3 = sh.previousElementSibling;
	alert(pn3.innerText); // 北京
	
	
}



四、补充

获取根标签的补充:

// 获取body、html根标签、页面所有元素
var body = document.body;
var html = document.documentElement;
var all = dociment.all;

querySelector() 根据css选择器查询

1、document.querySelector()
	-  需要一个选择器的字符串作为参数,可以根据一个CSS选择器来查询一个元素节点对象;
	-  虽然IE8中没有getElementsByClassName(),但是可以使用querySelector()代替;
	-  使用该方法会返回唯一的一个元素,如果满足的有多个,只返回第一个;

2、document.querySelectorAll()
	-  和querySelector()使用方法类似,不同的是将符合条件的元素封装到一个数组中返回;
	-  即使符合条件的元素只有一个,他也会返回数组;

以下是用法例子:

// 获取class = box1 下的div元素
 var div = document.querySelector(".box1 div"); 

 // 获取class = box1的元素,有多个也只返回第一个
 var box1= document.querySelector(".box1");  

 // 获取所有class = box1的元素,封装到数组里
 box1 = document.querySelectorAll(".box1");  

 // 获取id = box2的元素,封装到数组里,一个也封装
 box1 = document.querySelectorAll("#box2");



持续更新

这里只是DOM基本操作的认识与了解,后面若有相关的继续更新。