day17学习 前端JavaScript DOM操作

DOM操作

DOM(document object model) 操作
js提供了一个document对象,指向的是HTML,在js中通过document对象可以直接或者间接获取页面内容对应的标签

DOM操作具体内容 - 操作节点(节点就是标签)

  • 直接获取节点

    • document.getElementById(id属性值) - 通过id属性值获取标签

    • getElementsByClassName(class属性值)

    • getElementsByTagName(标签名)

  • 获取父节点:节点.parentElement - 获取指定节点的父节点

  • 获取子节点:

    • 节点.children - 获取指定节点的所有子节点
    • 节点.firstElementChild - 获取指定节点的第一个子节点
    • 节点.lastElementChild - 获取指定节点的最后一个子节点
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div id="box1">
			<p id="p1">段落</p>
		</div>
		<div id="box2">
			<a href="">百度</a>
			<p id="p2">段落</p>
		</div>
		<div id="box3">
			<p id="p3">段落</p>
		</div>
		
		<script type="text/javascript">
			p1 = document.getElementById('p1')
			console.log(p1)
			p1.style.color = 'red'
			// p1.style = 'color:red;' 
			p2 = document.getElementsByTagName('p')
			console.log(p2)
			colors = ['blue','green', 'pink']
			for(x in p2){
				p2[x].style = `color:${colors[x]};`
			}
			div1 = document.getElementById('p1').parentElement
			console.log(div1)
		</script>
	</body>
</html>
  • 添加节点

    • 创建新的节点
      document.createElement(标签名)
    • 添加节点
      • 节点1.appendChild(节点2) - 在节点1的最后添加节点2(节点1和节点2是父子关系
      • 节点.inserBefore(节点2,节点3)) - 在节点1中和节点3的前边添加节点2
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script>
			document.write('<span>aaaa</span>')
			// 想在哪里加就写在哪里
		</script>
		
		<div id="div1">
			<p>段落</p>
		</div>
		
		<script>
			// 直接向body标签添加子标签
			document.write('<span>aaaa</span>')
		</script>
		
		<script>
			// 向p标签前添加新标签
			a = document.createElement('a')
			p = document.getElementById('p1')
			div1 = document.getElementById('div1')
			.insertBefore(a, p)
		</script>
	</body>
</html>
  • 删除节点

    remove() - 删除节点

    节点.remove()

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<p id="p1">段落1</p>
		<p>段落2</p>
		<p>段落3</p>
	</body>
	
	<script>
		p1 = document.getElementById('p1')
		p1.remove()
		
		p = document.getElementsByTagName('p')
		console.log(p)
		p[1].remove()
	</script>
</html>

向节点中添加内容和属性

  • 节点.innerText – 标签内部的文字(子标签也属于文字)
  • 节点.innerHTML – 标签内部的文字(包括子标签内部的文字)
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<a class="a1">百度<b>一下</b></a>
		
		<script>
			a1 = document.getElementsByTagName('a')
			
			// a1[0].innerText = 'HTML'
			// a1[0].innerText = 'HTML<b>CSS</b>'
			// a1[0].innerHTML = 'HTML'
			a1[0].innerHTML = 'HTML<b>CSS</b>'	
			// 节点.属性 = 属性值 --->向节点内添加或修改属性
			a1[0].href = 'https://www.baidu.com'
			a1[0].target = '_blank'
			
			// 通过js代码改变属性,用于网页源代码显示的伪装
			a1[0].className = 'a2' 
			// a2属性实则是不存在的,a标签的属性值为a1
		</script>
	</body>
</html>

小案例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<!-- 修改标签内容 -->
		<span>请输入姓名:</span><span id="name">张三丰</span>
		<br>
		<input type="text" name="" id="info">
		<!-- onclick -- 点击事件 -->
		<input type="submit" value="提交" 
		onclick = "document.getElementById('name').innerText=document.getElementById('info').value">
		<br>
		<!-- 修改图片 -->
		<img src="img/cat_open.png" alt="" id="photo">
		<input type="submit" value="更改图片" 
		onclick="document.getElementById('photo').src='./img/cat_close.png'">
	
		<!-- 修改文字样式 -->
		<p id="style">段落</p>
		<input type="submit" value="华丽的" 
		onclick="document.getElementById('style').style = 'color:pink; font-size:20px;'">
		<input type="submit" value="朴素的" 
		onclick="document.getElementById('style').style = ''">
		<br>
		
		<!-- 插入html代码 -->
		<script type="text/javascript">
			// Python的列表在其他编程语言中叫做数组。
			titles = ['四川', '云南', '贵州', '湖北']
			for (x in titles){
				title = titles[x]
				html_str = "<span id='one'>" + title + "</span><span>|</span>"
				document.write(html_str)
				document.getElementById('one').style = 'color:red'
			}

			// 报错: 开发者页面 console查看报错原因及位置
			// for (x in titles):
			// 	title = titles[x]
			// 	html_str = "<span>" + title + "</span><span>|</span>"
			// 	document.write(html_str)
				// 报错:02%20js%E5%B0%8F%E6%…88%E4%BE%8B.html:40 Uncaught SyntaxError: Unexpected ':'	
		</script>
	</body>
</html>

BOM操作

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script>
			// 打开浏览器新标签页:window.open()
			function openwindow1(){
				w1 = window.open('https://www.baidu.com')
			}
			// 关闭刚打开的新标签页
			function close1(){
				w1.close()
			}
			// 打开新窗口
			function openwindow2(){
				w2 = window.open('https://www.baidu.com', '_blank', 'width=400,height=500')
				w2.moveTo(500,200)
			}
			// 关闭新打开窗口
			function close2(){
				w2.close()
			}
			
			// 关闭当前窗口
			function close3(){
				window.close()
			}
			
			// 页面滚动(应用:瀑布式加载页面)(还需设置停顿)			
			function to_bottom(){
				// window.scrollTo(x,y)
				y = 0
				y_max = 5000
				while(y <= y_max){
					y += 500
					window.scrollTo(0,y)
				}
			}
			// 页面横向滚动
			function to_right(){
				x = 0
				x_max = 10000
				while(x <= x_max){
					x +=500
					window.scrollTo(x,0)
				}
			}
		</script>
		
		<input type="submit" value="打开新窗口" onclick="openwindow2()">
		<input type="submit" value="关闭新窗口" onclick="close2()">
		<br>
		<input type="submit" value="打开新标签页" onclick="openwindow1()">
		<input type="submit" value="关闭标签页" onclick="close1()">
		<input type="submit" value="关闭当前窗口" onclick="close3()">
		<input type="submit" value="滚动到页面底部" onclick="to_bottom()">
		<input type="submit" value="滚动到页面右部" onclick="to_right()">
		
		<div style="width: 10000px; height: 5000px;"></div>
		<p>页面底部</p>
		
	</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值