JavaScript:DOM操作节点

目录

节点属性

 Element属性

节点信息

 操作节点属性

 节点创建&插入

节点删除&替换 

操作节点样式

style属性

className属性


节点和节点关系

节点属性

属性名称

描述

parentNode

返回节点的父节点

childNodes

返回子节点集合,childNodes[i]

firstChild

返回节点的第一个子节点,最普遍的用法是访问该元素的文本节点

lastChild

返回节点的最后一个子节点

nextSibling

下一个节点

previousSibling

上一个节点

        元素对象.childNodes:获取元素对象的子节点,通过这个属性获取的子节点可能有一个或者多个,不管是多少个都会将获取的子节点存储在类似数组的节点集合中(NodeList)

        通过这个属性获取子节点的时候,子节点之间的空格会转换为文本节点 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
	</head>
	<body>
		<ul>
			<li>列表项第1项</li>
			<li>列表项第2项</li>
			<li id="second">列表项第3项</li>
			<li>列表项第4项</li>
			<li>列表项第5项</li>
		</ul>
	</body>
	<script>
		//获取ul元素
		var ulEle = document.querySelector('ul');
		//或其ul元素的父元素
		var ulParent = ulEle.parentNode;
		console.log(ulParent);

		//获取ul元素的子元素
		/*
		元素对象.childNodes:获取元素对象的子节点,通过这个属性获取的子节点可能有一个或者多个,不管是多少个都会将获取的子节点存储在类似数组的节点集合中(NodeList)
				通过这个属性获取子节点的时候,子节点之间的空格会转换为文本节点
		*/
		var ulChilds = ulEle.childNodes;
		console.log(ulChilds);

		//获取ul元素的第一个子节点
		var ulFirstChild = ulEle.firstChild;
		console.log(ulFirstChild);

		//获取ul元素的最后一个子节点
		var ulLastChild = ulEle.lastChild;
		console.log(ulLastChild);

		//获取id属性值为second的li元素
		var liEle = document.querySelector('#second');
		console.log(liEle);

		//获取id名称为second的元素的上一个元素
		var previousSiblingEle = liEle.previousSibling;
		console.log(previousSiblingEle);

		//获取id名称为second的元素的下一个元素
		var nextSiblingEle = liEle.nextSibling;
		console.log(nextSiblingEle);

		//获取id名称为second的元素的下一个元素的下一个元素(列表项第5项)
		var nextNextSiblingEle = liEle.nextSibling.nextSibling;
		console.log(nextNextSiblingEle);
	</script>
</html>

 Element属性

属性名称

描述

    firstElementChild

返回节点的第一个子节点

lastElementChild

返回节点的最后一个子节点

nextElementSibling

下一个节点

previousElementSibling

上一个节点

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<ul>
			<li>列表项第1项</li>
			<li>列表项第2项</li>
			<li id="second">列表项第3项</li>
			<li>列表项第4项</li>
			<li>列表项第5项</li>
		</ul>
	</body>
	<script>
		//获取ul元素
		var ulEles = document.getElementsByTagName('ul');
		console.log(ulEles);

		//获取ul元素的第一个子元素
		var firstLiEle =ulEles[0].firstElementChild;
		console.log(firstLiEle);
		
		//获取ul元素的最后一个子元素
		var lastLiEle = ulEles[0].lastElementChild;
		console.log(lastLiEle);
		
		//获取id名称second的li元素
		var secondLi = document.getElementById('second');
		//获取id名称second的li元素的上一个元素
		var previousElementSiblingLi=secondLi.previousElementSibling;
		console.log(previousElementSiblingLi);
		
		//获取id名称second的li元素的下一个元素
		var nextElementSiblingLi =secondLi.nextElementSibling;
		console.log(nextElementSiblingLi);
	</script>
</html>

节点信息

nodeName:节点名称

nodeValue:节点值

nodeType:节点类型

节点类型

NodeType

     元素element

1

属性attr

  2

文本text

 3

注释comments

 8

   文档document

 9

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<p>我是一个段落标签</p>
	</body>
	
	<script>
		//获取p元素
		var pEle = document.querySelector('p');
		console.log(pEle.nodeName);
		console.log(pEle.nodeValue);
		console.log(pEle.nodeType);//1
		console.log(document.nodeType);
		
		
	</script>
</html>

 操作节点属性

设置属性

setAttribute()方法添加指定的属性,并为其赋指定的值

        语法:element.setAttribute(attributename,attributevalue)

        attributename:添加的属性的名称

        attributevalue:添加的属性值

获取属性

getAttribute() 方法返回指定属性名的属性值

        语法:element.getAttribute(attributename)

        attributename:必需。需要获得属性值的属性名称

删除属性

removeAttribute() 方法删除指定的属性

        语法:element.removeAttribute(attributename)

        attributename:移除的属性名称

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<img src="img/car.jpg" width="300px" />
	</body>
	
	<script>
		//获取img元素
		var imgEle = document.querySelector('img');
		
		//获取img元素的src属性和width属性
		var srcAttribute =imgEle.getAttribute('src');
		console.log(srcAttribute);
		
		console.log(imgEle.getAttribute('width'));
		
		//设置img元素的src 属性值和width属性值
		imgEle.setAttribute('src','img/runCar.jpg');
		imgEle.setAttribute('width','500px');
		
		
		//删除img元素的width属性
		imgEle.removeAttribute('width');
	</script>
</html>

 节点创建&插入

名称

                   描述

     document.createElement(“元素名”)

创建元素节点

document.createTextNode(文本)

  创建文本节点

A.appendChild( B)

 B节点追加至A节点的末尾

insertBefore( A,B )

 A节点插入到B节点之前

  cloneNode(deep)

 复制某个指定的节点

节点删除&替换 

名称

描述

     父节点.removeChild( 子节点)

删除指定的节点

父节点.replaceChild( newNode, oldNode)

 用其他的节点替换指定的节点

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<ul>
			<li>列表项第1项</li>
		</ul>
	</body>
	
	<script>
		//需求:向ul元素中再添加一个li元素
		
		//创建li元素
		var creatLiEle=document.createElement('li');
		console.log(creatLiEle);
		//创建文本节点
		var createTextNode=document.createTextNode('列表项第2项');
		console.log(createTextNode);
		//将创建好的文本节点插入到创建的li元素中
		creatLiEle.appendChild(createTextNode);
		
		//将组装好后的元素添加到ul元素中
		//获取ul元素,然后通过ul元素添加组装好的li元素
		var ulELe = document.querySelector('ul');
		// ulELe.appendChild(creatLiEle);
		
		
		ulELe.insertBefore(creatLiEle,ulELe.firstElementChild);
		
		//删除节点:也要通过父元素来删除子元素
		ulELe.removeChild(ulELe.firstElementChild);
		
		//替换节点:通过父元素替换某一子元素
		ulELe.replaceChild(creatLiEle,ulELe.firstElementChild);
		
	</script>
</html>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<ul>
			<li>
				<p>我是段落标签</p>
			</li>
		</ul>
	</body>
	
	<script>
		//获取ul元素并复制
		var ulEle = document.querySelector('ul');
		console.log(ulEle);
		
		//cloneNode():()中没有写参数或者写一个false,表示浅克隆,只克隆标签,不可隆标签里的任何内容
		var cloneUlEle1=ulEle.cloneNode();
		console.log(cloneUlEle1);
		
		var cloneUlEle2=ulEle.cloneNode(false);
		console.log(cloneUlEle2);
		
		//cloneNode(true):表示深克隆,在克隆标签的同时,标签里的所有内容包括子元素标签都会被克隆
		var cloneUlEle3=ulEle.cloneNode(true);
		console.log(cloneUlEle3);
	</script>
</html>

操作节点样式

改变样式的属性

        style属性

        className属性

style属性

语法:HTML元素.style.样式属性=""

className属性

语法:HTML元素.className="样式名称"

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			.demo{
				width: 300px;
				height: 100px;
				background-color: #ccc;
				font-size: 30px;
				color: #f00;
			}
			
			.test{
				border-radius: 30px;
			}
			
		</style>
	</head>
	<body>
		<h2>我是标题段落标签</h2>
		<p>我是段落标签</p>
		<div class="test">我是div标签</div>
	</body>
	
	<script>
		//给h2标签设置样式
		var h2Ele = document.querySelector('h2');
		// h2Ele.style.width = '300px';
		// h2Ele.style.height = '100px';
		// h2Ele.style.backgroundColor='#ccc';
		// h2Ele.style.fontSize = '30px';
		// h2Ele.style.color = '#f00';
		h2Ele.className = 'demo';
		
		//给p标签设置样式
		var pEle = document.querySelector('p');
		// pEle.style.width = '300px';
		// pEle.style.height = '100px';
		// pEle.style.backgroundColor='#ccc';
		// pEle.style.fontSize = '30px';
		// pEle.style.color = '#f00';
		pEle.className = 'demo';
		
		//给div标签设置样式
		var divEle = document.querySelector('div');
		// divEle.style.width = '300px';
		// divEle.style.height = '100px';
		// divEle.style.backgroundColor='#ccc';
		// divEle.style.fontSize = '30px';
		// divEle.style.color = '#f00';
		// divEle.className = 'demo test';
		divEle.className='';
		
		
	</script>
</html>

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值