Document Object Mode (DOM)补充

1、查看节点的关系

<div id="parent">
			<p>数据1</p>
			<p id="me">数据2</p>
			<p>数据3</p>
		</div>
		<script type="text/javascript">
			var me = document.getElementById("me");//获取me节点
			console.log(me.parentElement);//获取父节点
			console.log(me.previousElementSibling);//上一个兄弟节点
			console.log(me.nextElementSibling);//下一个兄弟节点

			var parent = document.getElementById("parent");//获取父节点
			console.log(parent.children[0]);//索引为0的子节点
			console.log(parent.firstElementChild);//第一个子节点
			console.log(parent.lastElementChild);//最后一个子节点
		</script>

2、属性修改

<h1>属性修改</h1>
		<img src="img/1440%20(1).jpg" style="height: 150px;" alt="好图"><br>
		<button type="button" onclick="changeImg()">修改图片</button>
		<script type="text/javascript">
			function changeImg(){
				var img = document.querySelector("img");//获取图片
				console.log(img.getAttribute("src"));//获取图片src的属性
				img.setAttribute("src",'img/1439 (2).jpg');//修改图片src属性
				img.removeAttribute("alt");//删除alt属性
			}
		</script>

3、步进值实例 

<h1>步进值</h1>
		<p>
			<button type="button" onclick="minus(this)">-</button>
			<input type="text" value="1" />
			<button type="button" onclick="add(this)">+</button>
		</p>
		<script type="text/javascript">
			//单击+,让input值+1,单击-,让input值-1
			//this必须加,就是btn,只有通过btn才能找到对应的input
			function add(btn){
				var input = btn.previousElementSibling;//通过btn获取到input
				input.value = input.value * 1 + 1;//重新设置input的值为:原来input值*1转换为数字 + 1
			}
			function minus(btn){
				var input = btn.nextElementSibling;//通过btn获取到input
				input.value = input.value * 1 - 1;
			}
		</script>

4、tab选项卡 

<button type="button">按钮1</button>
		<button type="button">按钮2</button>
		<button type="button">按钮3</button>
		<div class="content show">内容1</div>
		<div class="content">内容2</div>
		<div class="content">内容3</div>
		<script type="text/javascript">
			//单击第i个按钮让对应的第i个content显示
			//默认只显示第0个content
			var buts = document.getElementsByTagName("button");//获取三个按钮
			var cons = document.getElementsByClassName("content");//获取content内容
			for(let i = 0;i < buts.length; i++){
				// console.log(buts[i]);//依次访问节点中的每个元素,并输出i
				// console.log(cons[i]);
				buts[i].onclick = function(){//给每个按钮添加单击事件
					document.querySelector(".show").classList.remove("show");//有show类名的content移除show
					cons[i].classList.add("show");//对应的第i个content添加show
				}
			}
		</script>

5、节点信息 

<h1>节点信息</h1>
		<p>文本内容</p>
		<script type="text/javascript">
			var p = document.querySelector("p");
			console.log("nodeName",p.nodeName);//大写P
			console.log("nodeType",p.nodeType);//1 代表元素
			console.log("nodeValue",p.nodeValue);//元素节点nodeValue为None
			
			var text = p.firstChild;//p的第一个子元素是文本节点(文本也是节点)
			console.log("nodeName",text.nodeName);
			console.log("nodeType",text.nodeType);//3 代表文本节点
			console.log("nodeValue",text.nodeValue);//文本节点是文本内容
		</script>

6、节点操作 

<button type="button" onclick="createImg()">创建并插入</button>
		<button type="button" onclick="copyImg()">复制图片</button>
		<button type="button" onclick="delImg()">删除</button>
		<button type="button" onclick="insertImg()">指定位置插入</button>
		<br>
		<p id="myp">一个p标签</p>
		<img src="img/pic1.png" id="pic1" >
		<script type="text/javascript">
			function createImg(){
				var img = document.createElement("img");//通过js创建一张图片
				img.setAttribute("src",'img/pic2.png');//指定图片的src值
				document.body.appendChild(img);//插入到body标签
			}
			function copyImg(){
				var pic1 = document.getElementById("pic1");//获取要被复制的图片
				var img = pic1.cloneNode(false);//复制,true包含子节点,false只是当前节点
				document.body.appendChild(img);//插入到body中(document.body直接获取body元素节点)
			}
			function delImg(){
				var img = document.querySelector("img:last-of-type");//获取要删除的图片
				// img.remove(img);//自己删除自己
				img.parentElement.removeChild(img);//用父节点来删除
			}
			function insertImg(){
				var img = document.createElement("img");//创建图片
				img.setAttribute("src",'img/pic3.png');//指定要插入图片的位置
				var myp = document.getElementById("myp");//获取要插入图片的节点
				document.body.insertBefore(img,myp);//执行插入
			}
		</script>

7、表格操作 

<table border="1" cellpadding="" cellspacing="">
			<tr>
				<td>书名</td>
				<td>价格</td>
				<td>操作</td>
			</tr>
			<tr>
				<td>精通js</td>
				<td>16.8</td>
				<td>删除</td>
			</tr>
			<tr>
				<td>60个瞬间</td>
				<td>32.2</td>
				<td>删除</td>
			</tr>
		</table>
		<button type="button" onclick="addRow()">增加一行</button>
		<button type="button" onclick="delRow()">删除一行</button>
		<button type="button" onclick="changeTitle()">修改标题</button>
		<script type="text/javascript">
			function addRow(){
				var table = document.getElementsByTagName("table")[0];//通过标签名table获取节点列表
				var row = table.insertRow(2);//插入行
				var td1 = row.insertCell(0);//一行要插入的列
				var td2 = row.insertCell(1);
				var td3 = row.insertCell(2);
				td1.innerText = "精通Vue3.0";//设置列的内容
				td2.innerText = "18.8";
				td3.innerHTML = '<button>删除</button>' ;
			}
			function delRow(){
				var table = document.getElementsByTagName("table")[0];//通过标签名table获取节点列表
				table.deleteRow(1);//删除第1行
			}
			function changeTitle(){
				var table = document.getElementsByTagName("table")[0];
				//table会默认添加一个tbody标签
				var row = table.firstElementChild.firstElementChild;//table第一个子节点是tbody tbody第一个子节点是tr
				row.style.background = "#f30";
				console.log(row);
			}
		</script>

8、select下拉框 

  • 创建一个option:var.option = new Option(text,value)
  • 插入一个option:Select.add(option,before)

9、事件的注册 

<h1 onclick="callMe()">事件的监听</h1>
		<button id="btn">点我</button>
		<button id="btn2">随意</button>
		<script type="text/javascript">
			// js响应事件有三种监听方式
			//1、事件响应写在html标签属性里面
			// function callMe(){
			// 	alert("aoo!");
			// }
			//2、再js对象的属性中监听(和html分离)
			var btn = document.getElementById("btn");
			btn.onclick = callMe;//不要圆括号
			// btn.onclick = function(){
			// 	alert("开心!");
			// }
			//3、通过addEventListener 注册(可以注册多个)
			// var btns = document.getElementById("btn2");
			// // btn2.addEventListener("click",callMe);
			// btn2.addEventListener("click",function(){
			// 	alert("呜呼~");
			// })
		</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值