JS_02 (获取节点 , 节点CURD)

获取节点:(待补充)

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>获取节点</title>
	</head>
	<body>
		
		<a target="_blank" href="https://www.cnblogs.com/xiaoxian1369/p/3195382.html">通过父节点,临近节点,子节点获取</a><br />
		<a target="_blank" href="https://www.jianshu.com/p/039fc155c516">原生js获取节点</a><br />
		
	<!--1.根据id获取元素

document.getElementById("id属性的值");

2.根据标签名字获取元素

document.getElementsByTagName("标签的名字");

3.根据name属性的值获取元素

document.getElementsByName("name属性的值");

4.根据类样式的名字获取元素 

document.getElementsByClassName("类样式的名字");

5.根据选择器获取元素 

1.document.querySelector("选择器");

2.document.querySelectorAll("选择器"); -->


<div id = 'idM'>根据id获取元素</div>
<div class="classM">根据class获取元素</div>
<div  name  = 'nameM'>根据name名来拿</div>
<div> 根据内容获取节点</div>
 <p>根据标签名来拿</p>
 <div  type="button" value="显示效果1" id="btn">根据id选择器拿到标签 (点击一下) </div><br />
  <div  type="button" value="显示效果2" class="btn">根据class选择器拿到标签 (点击一下)  </div><br />
  <div id="six">666999666  (点击一下)</div>
  
 <!--<button  type="button" value="显示效果1" id="btn" >btn111111</button>
 <button type="button" value="显示效果2" class="btn btn2222></button>-->
 <!--<input type="button" value="显示效果1" id="btn"/><br />
<input type="button" value="显示效果2" class="btn"/>-->

<br />

<button  id="btn1"> Change</button>
<input  type="text" value="111" class="text"/><br/>
<input    type="text" value="222" class="text"/><br />


	<script>
		
		//根据 id 获取节点
	var divID = document.getElementById('idM');
	divID.style.backgroundColor = 'red';
	
	//根据classname获取节点
	var classD = document.getElementsByClassName('classM')[0];
	classD.style.backgroundColor = 'orange';
	
	//根据name获取节点
	var nameD = document.getElementsByName('nameM')[0];
	nameD.style.backgroundColor = 'green';
	
	//根据标签名获取节点
	var tagD = document.getElementsByTagName('p')[0];
		tagD.style.backgroundColor = 'blue';
		
   var six = document.querySelector('#six');
    six.onclick = function(){
    	six.innerHTML = '用选择器拿去标签成功';
    	six.style.backgroundColor = 'chartreuse';
    };
    
    
		
		 var btnObj1 = document.querySelector("#btn");
		 btnObj1.style.backgroundColor = '#FFFF00';
    btnObj1.onclick = function () {
//      alert("我变帅了");
btnObj1 .style.backgroundColor = 'chartreuse';
    };
    var btnObj2 = document.querySelector(".btn");
    		 btnObj2.style.backgroundColor = '#FFFF00';
    btnObj2.onclick = function () {
//      alert("哈哈,我又变帅了");
btnObj2 .style.backgroundColor = 'purple';
    };
    
    

    

	 //根据选择器的方式获取元素
        var inputs = document.querySelectorAll(".text");	
          inputs.value = '666';
		 document.getElementById("btn1").onclick = function () {
       
 
        for (var i = 0; i < inputs.length; i++) {
            inputs[i].value = "更改input 值 成功";
        }
    };

/*
1.节点(node)的分类

nodeName          nodeValue          nodeType

元素节点 标签名        null              1nt

属性节点属性名        属性值             2

文本节点#text           文本值             3

注释节点#comment       注释内容             8

2.元素节点的4种获取方式

<div id="tt"  class="div"  name="yy"></div>

var stt = document.getElementById("tt");

var stt = document.getElementsByClassName("div")[0];    [0]代表相同名字时第一个元素内容也就是父级元素下所有内容

详细解释:通过document.getElementsByClassName("div")获取到name为div的元素。[ n] n代表相同name情况下第几个元素

3.获取节点所有的子节点

console.log(stt.childNodes);

var sttChild = stt.childNode;

console.log(sttChild.nodeName//获取节点的name,sttChild.nodeValue//获取节点的值,sttChild.nodeType//获取节点的类型)

4.获取节点的属性节点

var sttattr = stt.attributes;

注意当一个元素内有多个属性 比如 id   class  style name  同时存在时 谁在前面先获取谁

 节点的层次关系

<div id="tt"  class="div"  name="yy"></div>

var stt = document.getElementById("tt");

stt.childNodes//获取所有子节点

stt.firstChild//获取第一个子节点

stt.lastChid//获取最后一个子节点

兄弟关系

stt.previousSibling//获取前一个兄弟的节点

stt.nextSibling//获取下一个兄弟的节点

stt.ownerDocument //获取根节点

*/

/*
 令人欣慰的是,运用JavaScript获取节点的要领有很多种,这里基本做一下总结:
1. 通过顶层document节点获取
◆document.getElementById(elementId) :该要领 通过节点的ID,可以准确获得须要 的元素,是比较基本快捷的要领 。如果页面上含有多个相同id的节点,那么只返回第一个节点。
如今,已经出现了如prototype、Mootools等多个JavaScript库,它们提供了更简便的要领 :$(id),参数仍然是节点的id。这个要领 可以看作是document.getElementById()的另外一种写法,不过$()的功能更为强大,具体用法可以参考它们各自的API文档。
◆document.getElementsByName(elementName) :该要领 是通过节点的name获取节点,从名字可以看出,这个要领返回的不是一个节点元素,而是具有同样名称的节点数组。然后,我们可以通过要获取节点的某个属性来循环判断能不能为须要的节点。
例如:在HTML中checkbox和radio都是通过相同的name属性值,来标识一个组内的元素。如果我们现在要获取被选中的元素,首先获取改组元素,然后循环判断是节点的checked属性值能不能 为true即可。
◆document.getElementsByTagName(tagName) :该要领 是通过节点的Tag获取节点,同样该要领 也是返回一个数组,例如:document.getElementsByTagName('A')将会返回页面上所有超链接节点。在获取节点之前,一般都是知道节点的类型的,所以运用该要领比较基本。
但是缺点也是显而易见,那就是返回的数组可能十分庞大,这样就会浪费很多时间。那么,这个要领是不是就没有用处了呢?当然不是,这个要领和上面的两个不同,它不是document节点的专有要领 ,还可以运用 其他的节点,下面将会提到。
2、通过父节点获取
◆parentObj.firstChild :如果节点为已知节点(parentObj)的第一个子节点就可以运用 这个要领 。这个属性是可以递归运用的,也就是支持parentObj.firstChild.firstChild.firstChild...的形式,如此就可以获得更深层次的节点。
◆parentObj.lastChild :很显然,这个属性是获取已知节点(parentObj)的最后一个子节点。与firstChild一样,它也可以递归运用。在运用中,如果我们把二者结合起来,那么将会达到更加令人兴奋的效果,即:parentObj.firstChild.lastChild.lastChild。
◆parentObj.childNodes :获取已知节点的子节点数组,然后可以通过循环或者索引找到须要的节点。留心:经测试发觉,在IE7上获取的是直接子节点的数组,而在Firefox2.0.0.11上获取的是所有子节点即包括子节点的子节点。
◆parentObj.children :获取已知节点的直接子节点数组。留心:经测试,在IE7上,和childNodes效果一样,而Firefox2.0.0.11不支持。这也是为什么我要运用和其他要领不同样式的原由,因此不建议运用。
◆parentObj.getElementsByTagName(tagName) :运用要领不再赘述,它返回已知节点的所有子节点中类型为指定值的子节点数组。例如:parentObj.getElementsByTagName('A')返回已知的子节点中的所有超链接。
3、通过临近节点获取
◆neighbourNode.previousSibling :获取已知节点(neighbourNode)的前一个节点,这个属性和前面的firstChild、lastChild一样都似乎可以递归运用的。
◆neighbourNode.nextSibling :获取已知节点(neighbourNode)的下一个节点,同样支持递归。
4、通过子节点获取
◆childNode.parentNode :获取已知节点的父节点。
上面提到的要领 ,只是一些基本的要领 ,如果运用 了Prototype等JavaScript库,可能还获得其他不同的要领,例如通过节点的class获取等等。不过,如果能够灵活运用上面的各种要领 ,相信应该可以应付大部分的程序。
 */

	</script>	
		
	</body>
</html>

节点的操作:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>创建删除元素</title>
		
		<style>
			#11{
				width: 200px;
				height: 200px;
				background-color: green;
			}
			
			
			
			
		</style>
		
	</head>
	<body>
		
		<a href="https://www.thinkcss.com/wenti/1440.shtml">居中</a><br />
		<a href="https://www.cnblogs.com/jiekk/p/5802147.html">div居中的几种方法</a><br />
		<div id="11"></div><br />
		<div id="22">22222</div><br />
		<div id="33">333333</div><br />
		<div id="44">44444444</div><br />
		<div id="55">5555555</div><br />
			<div id="66">66666</div><br />
		<img id="img1"  style="width: 200px; height: 200px;"  src="../img/map.png" />
			<img id="img2"  style="width: 200px; height: 200px;"  src="../img/fly.jpeg" />
		<button id="rem">移除图片</button>
	
		<script>
			document.write('<div >666</div>')
			document.write(' <img src="../img/888.gif" />')
			document.write('<p></p>');
			var btn = document.createElement("button");
		   btn.style.backgroundColor = 'red';
			btn.style.width = '100px';
			btn.style.height ='40px' ;
			btn.innerHTML = 'js创建btn';
			
			btn.onclick = function(){
				  btn.style.backgroundColor = 'green';
				  	btn.innerHTML = 'btn点击成功';
			};
			//将btn 添加到body
	      	document.body.appendChild(btn);
	
	
	var  div1 = document.getElementById('11');
	div1.style.backgroundColor = 'yellow';
	div1.style.width = '200px';
	div1.style.height = '200px';
	div1.style.display = 'table-cell';
	div1.style.verticalAlign = 'middle';
  

	
	var div = document.createElement('div');
	div.style.backgroundColor = 'red';
	div.style.height = '100px';
	div.style.width = '100px';
	div.style.lineHeight = '100px';
	div.style.textAlign = 'center';
	div.style.overflow = 'auto';

	div.style.margin = 'auto';
   
	div.innerHTML = '我是用js添加到div上的div';
	
	div1.appendChild(div);
	
//	2.replaceChild( )   替换某个元素
	var div66 = document.createElement('div');
	div66 .innerHTML = ' 鼠标移出时 替换元素666';
	div66.style.backgroundColor = 'blue';
//	
	//鼠标移开时替换元素
	div.onmouseleave = function(){
		
		div1.replaceChild(div66,div);
	};
	
			
	//修改 拿到要修改的标签进行修改
	var div2 = document.getElementById('22');
	div2.innerHTML = '修改div内容';
	div2.style.backgroundColor = 'green';
	div2.style.color = 'red';
	div2.style.width = '300px';
		
	
	//删除
	
	var img = document.getElementById('img1');
	
	var img1 = document.getElementById('img2');
	
var remBtn = document.getElementById('rem');
remBtn.onclick = function(){
	
	if(remBtn.innerHTML == '移除图片'){
		img.remove();
	//推荐第二种
	img1.parentNode.removeChild(img1);
		remBtn.innerHTML = '添加图片';
	}else{
	
		document.body.appendChild(img);
		document.body.appendChild(img1);
			remBtn.innerHTML = '移除图片';
	}

};

var div5 = document.getElementById('66');
div5.style.width =  '200px';
div5.style.height = '200px';
div5.style.backgroundColor = 'cyan';
div5.style.textAlign = 'center';
div5.style.lineHeight = '100px';

   if(div5){
	div5.innerHTML = '66669999';
  }else{
  	var obj = document.createElement("input");
            obj.type = "button";
            obj.value = "按钮";
            obj.id = "btn2";
            document.getElementById("55").appendChild(obj);

  }

			
	//查找  右键 检查 或者审查元素 点击console查看
	
	
function find(ob){
	
	for(var i =0;i<ob.length;i++){
		console.log(ob[i]);
	}
}
var div4 = document.getElementsByClassName('44');
find(div4);

console.log(document.body);

console.log('网址网址网址111',document.body.innerHTML);
//获取body里的内容
console.log('网址网址网址',document.body.outerHTML);


		</script>
		
	</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值