JavaScript复习之事件,BOM,DOM

这篇博客主要复习了JavaScript中的事件处理,包括事件的使用方式和常见事件类型,如单击、鼠标移入移出等。同时,详细探讨了浏览器对象模型(BOM)中的window对象、history和location对象,尤其是定时器的使用。此外,还深入讲解了DOM(文档对象模型),特别是document对象的使用以及DOM操作技巧,包括对表格的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaScript复习之事件,BOM,DOM

事件

事件使用方式(重点)

基础描述
(1)在元素上直接定义:
    <input type="button" value="普通按钮" onclick="myFun1()">
    function myFun1() {

	}
(2)事件绑定:
    document.getElementById('myBtn').οnclick=function(){

	}
(3)了解:
    document.getElementById('myBtn').addEventListener('click',function(){

	})
案例
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<!-- 需求:当点击按钮时,触发单击事件,执行函数myFun1中的内容 -->
		<!-- <input type="button" value="普通按钮" οnclick="myFun1()"> -->
		<!-- 事件绑定方式 -->
		<input id="myBtn" type="button" value="普通按钮">

	</body>
	<script type="text/javascript">
		/* 
			事件的定义方式:
				(1)在元素上直接定义:
					<input type="button" value="普通按钮" οnclick="myFun1()">
					function myFun1() {
						
					}
				(2)事件绑定:
					document.getElementById('myBtn').οnclick=function(){
						
					}
				(3)了解:
					document.getElementById('myBtn').addEventListener('click',function(){
			
					})
		 */
		
		// 函数定义
		function myFun1() {
			console.log('事件使用方式一');
		}
		
		// 事件绑定
		// getElementById():根据id属性值获取元素
		// <input id="myBtn" type="button" value="普通按钮">
		console.log(document.getElementById('myBtn'));
		document.getElementById('myBtn').onclick = function() {
			console.log('事件使用方式二');
		}
		
		// 了解
		/* document.getElementById('myBtn').addEventListener('click',function(){
			console.log('事件使用方式三');
		}) */
		
	</script>
</html>

常用事件

基础介绍
(1)鼠标单击事件:
    click->当用户点击元素时发生的事件
(2)鼠标移入移出事件:
    mouseover->当鼠标指针移动到元素上时发生的事件
    mouseout->当用户将鼠标指针移出元素时发生的事件
(3)焦点事件:
    focus->当元素获取到焦点时发生的事件
    blur->当元素失去焦点时发生的事件
(4)内容改变事件:
    change->当form元素的内容、选择的内容等发生改变时发生的事件
(5)页面或图像载入事件:
    load->在对象已加载时发生的事件->浏览器已经完成了页面加载
(6)键盘事件:
    keydown->当用户正在按下键时发生的事件
    keyup->当用户松开键时发生的事件
(7)表单提交事件:
    submit->提交表单时发生的事件

案例演示

单击事件(重点)
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			div {
				width: 100px;
				height: 100px;
				background-color: pink;
			}
		</style>
	</head>
	<body>
		<input id="myBtn" type="button" value="普通按钮" onclick="myFun1()" />

		<p id="content">越努力越幸运</p>

		<div id="myDiv">


		</div>
	</body>
	<script type="text/javascript">
		/* 
			单击事件:
				click
		 
		 
			找元素->获取值|修改值
			
			input:
				获取value属性值:.value
				设置value属性值:.value=值
				
			双标签:
				获取标签体内容:.innerHTML
				设置标签体内容:.innerHTML=值
				
			样式值:
				获取样式值:.style.xx
				设置样式值:.style.xx=值
				
		 */
		function myFun1() {
			// 找元素->获取值|修改值

			// 需求1:获取按钮上的内容->普通按钮  value属性值
			// console.log(document.getElementById('myBtn').value);
			// 需求2:修改value属性值  普通按钮->马到成功
			// document.getElementById('myBtn').value = '马到成功';

			// 需求3:获取p标签中间的文本内容->越努力越幸运
			// console.log(document.getElementById('content').innerHTML);
			// 需求4:修改p标签中间的文本内容  越努力越幸运->月入过万
			// document.getElementById('content').innerHTML='月入过万';

			// 需求5:获取div背景颜色值
			// console.log(document.getElementById('myDiv').style.backgroundColor);
			// 需求6:设置div背景颜色值
			document.getElementById('myDiv').style.backgroundColor = 'green';
		}
	</script>
</html>
鼠标移入移出事件
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			#myDiv {
				width: 100px;
				height: 100px;
				border: 1px solid black;
			}
		</style>
	</head>
	<body>
		<!-- 单双引号嵌套使用 -->
		<div id="myDiv" onmouseover="myFun1(this,'green')" onmouseout="myFun1(this,'pink')">

		</div>

	</body>
	<script type="text/javascript">
		/* 
			鼠标移入移出事件:
				鼠标移入事件:mouseover
				鼠标移出事件:mouseout
		 
		 */
		function myFun1(myObj, myColor) {
			// 需求1->当鼠标移入到div上时,设置背景颜色
			// document.getElementById('myDiv').style.backgroundColor = 'green';

			// <div id="myDiv" οnmοuseοver="myFun1(this,'green')" οnmοuseοut="myFun1(this,'pink')" style="background-color: pink;"></div>
			// console.log(myObj);

			// <div id="myDiv" οnmοuseοver="myFun1('green')" οnmοuseοut="myFun1('pink')"></div>
			// console.log(document.getElementById('myDiv'));

			// 需求3->当前函数实现->移入移出两种效果
			myObj.style.backgroundColor = myColor;
		}


		/* function myFun2() {
			// 需求2->当鼠标移出到div时,设置背景颜色
			document.getElementById('myDiv').style.backgroundColor = 'pink';
		} */
	</script>
</html>
焦点事件
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<input type="text" id="myText" value="tom" onfocus="myFun1()" onblur="myFun2()" />

		<p id="content">焦点事件</p>
	</body>
	<script type="text/javascript">
		/* 
			焦点事件:
				获取焦点:focus
				失去焦点:blur
		 
		 */
		// 当元素获取到焦点时,设置字体颜色
		function myFun1() {
			document.getElementById('myText').style.color = 'green';
		}
		// 当元素失去焦点时,获取p标签中的内容
		function myFun2() {
			console.log(document.getElementById('content').innerHTML);
		}
	</script>
</html>
内容改变事件(重点)
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			div {
				width: 100px;
				height: 100px;
				border: 1px solid black;
			}
		</style>
	</head>
	<body>
		<select id="city" onchange="getCity()">
			<option disabled selected>请选择</option>
			<option value="wh">武汉</option>
			<option value="hz">杭州</option>
			<option value="nj">南京</option>
		</select>
		<hr >
		<!-- 扩展案例->当颜色下拉项发生改变时,给div设置背景颜色 -->
		<select id="color" onchange="setColor()">
			<option disabled selected>请选择</option>
			<option value="red">红色</option>
			<option value="yellow">黄色</option>
			<option value="green">绿色</option>
		</select>
		<div id="myDiv">


		</div>
	</body>
	<script type="text/javascript">
		/* 
			内容改变事件:
				change
				常用于下拉选中
		 
		 
		 */
		/* 当下拉项发生改变时,获取城市值 */
		function getCity() {
			console.log(document.getElementById('city').value);
		}

		/* 当颜色下拉项发生改变时,给div设置背景颜色 */
		function setColor() {
			// 获取当前选中下拉项内容
			var colorVal = document.getElementById('color').value;
			// 给div设置背景颜色
			document.getElementById('myDiv').style.backgroundColor = colorVal;
		}
	</script>
</html>
页面或图像载入事件
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript">
			// 获取value属性值
			// 报错:Cannot read properties of null (reading 'value')
			// console.log(document.getElementById('btn').value);

			/**
			 * 页面加载事件:
			 * 	在对象被加载后发生->网页内容被加载后执行
			 *  load
			 *  了解
			 * 
			 */
			/* function myFun1(){
				console.log(document.getElementById('btn').value);//按钮
			} */

			window.onload = function() {
				console.log(document.getElementById('btn').value); //按钮
			}
		</script>
	</head>
	<body>
		<input type="button" value="按钮" id="btn" />
	</body>

</html>
键盘事件
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<input id="input" type="text" onkeydown="getVal()" onkeyup="getVal2()" />
		
	</body>
	<script type="text/javascript">
		/* 
			键盘事件:
				keydown:用户按下键时发生
				keyup:用户释放键时发生   ****  获取用户所有内容->判断用户输入内容是否合法
				
		 */
		function getVal(){
			// console.log(document.getElementById('input').value);
		}
		
		function getVal2(){
			console.log(document.getElementById('input').value);
		}

	</script>
</html>
表单提交事件
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			img {
				width: 28px;
				vertical-align: top;
				/* 元素隐藏 */
				display: none;
			}
		</style>
	</head>
	<body>
		<!-- 
			综合案例:
				设置用户输入内容是否合法
		 -->
		<form action="1 JS使用方式.html" method="get" onsubmit="return checkAll()">
			手机号码:
			<input id="phone" type="text" onkeyup="getPhoneVal()" />
			<span id="phoneMsg"></span>
			<br>
			邮政编码:
			<input id="code" type="text" onkeyup="getCodeVal()" />
			<span id="codeMsg">
				<img id="codeImg" src="img/false.png">
			</span>
			<br>
			<input type="submit" />
		</form>
	</body>
	<script type="text/javascript">
		/*
			表单提交事件:
				submit='return bol'
				bol:true->允许表单提交
				bol:false->不允许表单提交
				
				设置display属性值:
					.style.display=值
				设置图片的src属性值:
					.src=值
		 */
		function checkAll() {
			return getCodeVal() && getPhoneVal();
		}

		/* 
			验证邮政编码是否合法
		 */
		function getCodeVal() {
			// 获取邮政编码值
			var codeVal = document.getElementById('code').value;
			// 设置邮政编码规则
			var codeRules = /^\d{5,12}$/;
			// 获取图片元素
			var codeImgEle = document.getElementById('codeImg');
			// 将图片呈现
			codeImgEle.style.display = 'inline-block';
			var myBol = false;
			// 设置具体呈现的提示图片
			if (codeRules.test(codeVal)) {
				// 邮政编码合法
				codeImgEle.src = 'img/true.png';
				myBol = true;
			} else {
				// 邮政编码不合法
				codeImgEle.src = 'img/false.png';
			}
			return myBol;
		}


		/**
		 * 验证手机号是否合法
		 */
		function getPhoneVal() {
			// 获取文本输入框内容
			var phoneVal = document.getElementById('phone').value;
			// 设置手机号规则
			var phoneRules = /^1(3|4|5|7|8)\d{9}$/;
			console.log(phoneRules.test(phoneVal)); //bol
			// 获取提示信息元素
			var phoneMsg = document.getElementById('phoneMsg');
			var myBol = false;
			// 给提示信息的元素设置内容->判断
			if (phoneRules.test(phoneVal)) {
				// 手机号合法
				phoneMsg.innerHTML = '手机号合法';
				phoneMsg.style.color = 'green';
				myBol = true;
			} else {
				// 手机号不合法
				phoneMsg.innerHTML = '手机号不合法';
				phoneMsg.style.color = 'red';
			}
			return myBol;
		}
	</script>
</html>

BOM

基础介绍

(1)Browser Object Model,浏览器对象模型
(2)浏览器对象模型->把浏览器看作一个对象
(3)提供了一系列对象,对于浏览器窗口操作
(4)浏览器对象:
	核心对象window对象:
		JS访问浏览器窗口的接口
		全局变量、函数,都变成了window对象的属性和方法
	history对象
	location对象
	document对象
	...
(5)提供了很多属性和方法

window对象

了解方法
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<input type="button" value="打开" onclick="openWin()">
		<input type="button" value="关闭" onclick="closeWin()">

	</body>
	<script>
		/* 
			了解:
				alert()
				confirm()
				prompt()
				open('url',名称,描述信息)
				close()
				
				省略window.
		 */

		// window.alert('警告框');
		// window.confirm('确认框');
		// window.prompt('提示输入框');

		// alert('11');

		// 全局变量
		var myWin;

		function openWin() {
			myWin = window.open('http://www.baidu.com', '百度', '');
		}

		function closeWin() {
			// 关闭原窗口
			// window.close();
			// 关闭新打开窗口
			myWin.close();
		}
	</script>
</html>
定时器(重点)
基础介绍
(1)周期性定时器:
	按照一定的周期执行任务
	开启:
		var task;
		task=setInterval(function(){},1000);// 执行任务 时间间隔  单位毫秒
	关闭:
		clearInterval(task);	
		 
(2)一次性定时器:
	只执行一次任务
	开启:
		var task2;
		task2=setTimeout(function(){},1000);// 执行任务 时间间隔  单位毫秒
	关闭:
		clearTimeout(task2);	
案例
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<!-- 周期性定时器 -->
		<p>周期性定时器</p>
		<input type="button" value="开始" onclick="startTask()">
		<input type="button" value="结束" onclick="endTask()">

		<!-- 一次性定时器 -->
		<p>一次性定时器</p>
		<input type="button" value="开始2" onclick="startTask2()">
		<input type="button" value="结束2" onclick="endTask2()">

	</body>
	<script>
		/* 
			重点:
				定时器:
					周期性定时器:按照一定的周期执行任务
						开启:
							var task;
							task=setInterval(function(){},1000);// 执行任务 时间间隔  单位毫秒
						关闭:
							clearInterval(task);	
		 
					一次性定时器:只执行一次任务
						开启:
							var task2;
							task2=setTimeout(function(){},1000);// 执行任务 时间间隔  单位毫秒
						关闭:
							clearTimeout(task2);	
		 */
		/* 全局变量 */
		var task;
		var task2;

		/**
		 * 开启周期性定时器:
		 * 
		 */
		function startTask() {
			// 每间隔1秒,执行一次任务
			// setInterval('myFun()',1000);//毫秒
			// setInterval('myFun(10)',1000);
			// setInterval(myFun,1000);
			// 通用写法  ***
			task = setInterval(function() {
				// 执行任务
				console.log('匿名函数');
			}, 1000);

		}

		function myFun(myNum) {
			console.log('执行周期性定时器任务 ' + myNum);
		}

		/**
		 * 关闭周期性定时器
		 */
		function endTask() {
			clearInterval(task);
		}
		
		/*
			开启一次性定时器:
		 
		 */
		function startTask2() {
			task2 = setTimeout(function() {
				console.log('执行一次性定时器');
			}, 500);
		}
		/* 
			关闭一次性定时器:
		 */
		
		function endTask2() {
			clearTimeout(task2);
		}
		
	</script>
</html>

history对象

基础介绍
(1)back():加载上一个浏览过的文档
(2)forward():加载下一个浏览过的文档
(3)go(num):跳转到第num个浏览过的文档
	正数
	负数
	0:刷新
案例
1
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<!-- 超链接 -->
		<a href="17-2 history对象-2.html">17-2</a>
		<br>
		<input type="button" value="前进" onclick="myForward()" />
	</body>
	<script>
		/**
		 * (1)back():加载上一个浏览过的文档
		 * (2)forward():加载下一个浏览过的文档
		 * (3)go(num):跳转到第num个浏览过的文档
		 * 		正数
		 * 		负数
		 * 		0:刷新
		 */
		function myForward(){
			// history.forward();
			history.go(0);
		}
	</script>
</html>
2
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<input type="button" value="后退" onclick="myBack()"  />
		
		
	</body>
	<script type="text/javascript">
		function myBack(){
			// history.back();
			
			history.go(-1);
		}

	</script>
</html>

location对象

基础介绍
(1)href:标签具备超链接效果  ***
(2)reload():重新加载|刷新
案例
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<input type="button" value="淘宝" onclick="toTaoBao()" />
		<input type="button" value="刷新" onclick="reload()" />

	</body>
	<script>
		/**
		 * 
		 * location:
		 * 	href:
		 * 		标签具备超链接效果
		 *  reload():
		 * 		重新加载|刷新
		 */
		function toTaoBao() {
			// 跳转到淘宝
			location.href = 'http://www.taobao.com';
		}

		function reload() {
			// 重新加载|刷新
			location.reload();
		}
	</script>
</html>

DOM

基础介绍

(1)Document Object Model,文档对象模型
(2)每个网页都可看作一个文档   document
(3)每个页面中的全部内容都可看作对应的节点:
	文档节点
	元素节点
	属性节点
	文本节点
	注释节点
(4)DOM树:
	html包含head和body
	head和body,也可以包含其他标签
(5)提供一系列属性和方法,修改网页的内容、结构、样式

document对象(重点)

基础介绍
(1)title:设置文档名称  了解
(2)innerHTML:获取标签体内容  
(3)value:获取value属性
(4)style.xx:设置样式
(5)checked:是否选中
(6)disabled:是否可用
(7)src:控制显示哪张图片
(8)getElementById():根据ID属性值获取元素
(9)getElementsByTagName():根据标签名称获取元素的集合
(10)getElementsByName():根据name属性值获取元素集合
(11)getElementsByClassName():根据class属性值获取元素集合 
案例
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			div {
				width: 100px;
				height: 100px;
				border: 1px solid black;
				display: none;
			}
		</style>
	</head>
	<body>
		<p id="sal" class="content">月薪过万</p>
		<p class="content">付出可能有收获</p>
		
		<input id="full" type="checkbox" onclick="fullCheck()">全选
		<input type="checkbox" onclick="disCheck()">反选
		<br>
		<input type="checkbox" name="subject" checked>Java
		<input type="checkbox" name="subject" checked>Web
		<input type="checkbox" name="subject" checked>大数据
		<input type="checkbox" name="subject">UI
		<br>
		
		<input id="btn" type="button" value="普通按钮" disabled />
		<br>
		
		<div id="myDiv">


		</div>
	</body>
	<script>
		/* 设置文档名称 */
		// document.title='document对象';

		/* 获取标签体内容 */
		// console.log(document.getElementById('sal').innerHTML);

		// getElementsByTagName():根据标签名称获取元素的集合
		console.log(document.getElementsByTagName('p'));
		// 设置文本颜色-绿色
		// 报错:Uncaught TypeError: Cannot set properties of undefined (setting 'color')
		// document.getElementsByTagName('p').style.color='green';
		var eles = document.getElementsByTagName('p');
		// 遍历
		for (var i = 0; i < eles.length; i++) {
			eles[i].style.color = 'green';
		}

		// getElementsByName():根据name属性值获取元素集合
		console.log(document.getElementsByName('subject'));
		var boxEles = document.getElementsByName('subject');
		// 设置全选或全不选
		/* for (var i = 0; i < boxEles.length; i++) {
			// 设置全选
			// boxEles[i].checked = true;
			// 设置全不选
			boxEles[i].checked = false;
		} */
		// 设置全选或反选
		function fullCheck() {
			// console.log(document.getElementById('full').checked);
			// 全选|全不选
			for (var i = 0; i < boxEles.length; i++) {
				boxEles[i].checked = document.getElementById('full').checked;
			}
		}

		/* 反选 */
		function disCheck() {
			for (var i = 0; i < boxEles.length; i++) {
				// 设置反选
				boxEles[i].checked = !boxEles[i].checked;
			}
		}

		/* getElementsByClassName():根据class属性值获取元素集合 */
		console.log(document.getElementsByClassName('content'));

		/* 设置按钮是否可用 */
		document.getElementById('btn').disabled = false;

		/* 让div隐藏 | 显示 */
		document.getElementById('myDiv').style.display = 'block';
	</script>
</html>

dom操作

基础介绍
创建新元素:createElement()
末尾追加元素:appendChild()
设置属性值:setAttribute(key,val)
插入元素:insertBefore(新元素,...元素之前)
最后一个子元素:lastElementChild
第一个子元素:firstElementChild
复制元素:cloneNode(true)  参数为true时,复制元素内容
删除子元素:removeChild()
案例
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<input type="button" value="增加" onclick="addContent()">
		<input type="button" value="插入" onclick="insertContent()">
		<input type="button" value="复制" onclick="cloneContent()">
		<input type="button" value="删除" onclick="removeContent()">

		<!-- 无序列表 -->
		<ul id="city">
			<li>杭州</li>
			<li id="nj">南京</li>
			<li id="sz">深圳</li>
			<li>广州</li>
		</ul>

		<ul id="city2">
			<li id="sh">上海</li>
		</ul>

	</body>
	<script>
		/* 
			创建新元素:createElement()
			末尾追加元素:appendChild()
			设置属性值:setAttribute(key,val)
			插入元素:insertBefore(新元素,在...元素之前)
			最后一个子元素:lastElementChild
			第一个子元素:firstElementChild
			复制元素:cloneNode(true)  参数为true时,复制元素内容
			删除子元素:removeChild()
		 */

		/**
		 * 删除子元素
		 * 
		 */
		function removeContent() {
			/* 删除第一个ul中的最后一个子元素 */
			var ulEle = document.getElementById('city');
			var lastEle = ulEle.lastElementChild;
			ulEle.removeChild(lastEle);
		}

		/**
		 * 复制元素
		 * 
		 */
		function cloneContent() {
			/* 复制深圳,插入到南京之前 */
			// cloneNode(bol):参数为true时,复制元素内容
			var cloneEle = document.getElementById('sz').cloneNode(true);
			var ulEle = document.getElementById('city');
			var njEle = document.getElementById('nj');
			ulEle.insertBefore(cloneEle, njEle);
		}

		/**
		 * 插入元素
		 * 
		 */
		function insertContent() {
			/* 1.将郑州插入到南京之前 */
			var newLi = document.createElement('li');
			newLi.innerHTML = '郑州';
			var ulEle = document.getElementById('city');
			var njEle = document.getElementById('nj');
			// ulEle.insertBefore(newLi, njEle);

			/* 2.将第一个ul中的最后一个子元素插入到南京之前 */
			var lastEle = ulEle.lastElementChild;
			// ulEle.insertBefore(lastEle, njEle);

			/* 3.将第一个ul中的第一个子元素插入到深圳之前 */
			var firstEle = ulEle.firstElementChild;
			var szEle = document.getElementById('sz');
			ulEle.insertBefore(firstEle, szEle);
		}

		/**
		 * 增加元素
		 */
		function addContent() {
			/* 1.将"北京"追加到ul中 */
			/* 1.1 将要增加的元素创建 */
			var newLi = document.createElement('li');
			/* 1.2 设置文本内容->北京 */
			// newLi.innerHTML = '北京';
			/* 1.3 将"北京"追加到ul中 */
			var ulEle = document.getElementById('city');
			/* 末尾追加子元素 */
			// ulEle.appendChild(newLi);


			/* 2.将<li><input type='password'/></li>追加到ul中 */
			var newInput = document.createElement('input');
			// 设置属性值
			newInput.setAttribute('type', 'password');
			newLi.appendChild(newInput);
			// ulEle.appendChild(newLi);

			/* 3.将第二个ul中的li->上海添加到第一个ul的最后面 */
			// 操作是页面已有元素,移动
			var shEle = document.getElementById('sh');
			ulEle.appendChild(shEle);
		}
	</script>
</html>
简化操作
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<input type="button" value="替换" onclick="replaceContent()">
		<input type="button" value="追加" onclick="addContent()">
		<!-- 无序列表 -->
		<ul id="city">
			<li>杭州</li>
			<li id="nj">南京</li>
			<li id="sz">深圳</li>
			<li>广州</li>
		</ul>

		<div id="myDiv">

		</div>

	</body>
	<script>
		function replaceContent() {
			// 使用上海替换ul内容替换
			// =:赋值
			document.getElementById('city').innerHTML = '<li>上海</li>';
		}

		function addContent() {
			// 把上海追加到ul中
			// document.getElementById('city').innerHTML = document.getElementById('city').innerHTML + '<li>上海</li>';
			// +=:追加
			document.getElementById('city').innerHTML += '<li>上海</li>';
		}
		
		/* 需求:将<p></p> 添加到div中 */
		// innerHTML:解析HTML标签
		document.getElementById('myDiv').innerHTML = '<p>dom简化操作</p>';
		// innerText:不会解析HTML标签
		// document.getElementById('myDiv').innerText = '<p>dom简化操作</p>';
	</script>
</html>

dom操作表格

基础介绍
(1)insertRow(idx):插入行
(2)insertCell(idx):插入列
(3)deleteRow(idx):删除行
(4)rows:行
(5)cells:列 单元格
(6)length:行数
案例
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			table,
			td,
			th {
				border: 1px solid black;
			}
		</style>
	</head>
	<body>
		<input type="button" value="末尾增加" onclick="addTr()">
		<input type="button" value="末尾删除" onclick="delTr()">
		
		<table id="empData">
			<caption>员工信息表</caption>
			<thead>
				<tr>
					<th>编号</th>
					<th>姓名</th>
					<th>薪资</th>
					<th>兴趣</th>
				</tr>
			</thead>
			<tbody>
				<tr>
					<td>1</td>
					<td>tom</td>
					<td>10000</td>
					<td>唱歌</td>
				</tr>
				<tr>
					<td>2</td>
					<td>jack</td>
					<td>13000</td>
					<td>玩游戏</td>
				</tr>
				<tr>
					<td>3</td>
					<td>maria</td>
					<td>11000</td>
					<td>唱歌</td>
				</tr>
				<tr>
					<td>4</td>
					<td>lucy</td>
					<td>15000</td>
					<td>唱歌</td>
				</tr>
			</tbody>
		</table>

	</body>
	<script>
		/**
		 * insertRow(idx):插入行
		 * insertCell(idx):插入列
		 * 
		 * deleteRow(idx):删除行
		 * 
		 * rows:行
		 * cells:列 单元格
		 * length:行数
		 * 
		 */
		// 表格元素
		console.log(document.getElementById('empData'));
		// 行
		console.log(document.getElementById('empData').rows);
		// 行数 长度
		console.log(document.getElementById('empData').rows.length);
		// 列
		console.log(document.getElementById('empData').rows[2].cells[2].innerHTML);

		function addTr() {
			var tableCon = document.getElementById('empData');
			// insertRow(idx) 插入行
			var newTr = tableCon.insertRow(tableCon.rows.length);
			// insertCell(idx) 插入列
			newTr.insertCell(0).innerHTML = 5;
			newTr.insertCell(1).innerHTML = '张三';
			newTr.insertCell(2).innerHTML = 20000;
			newTr.insertCell(3).innerHTML = '钓鱼';
		}
		
		function delTr(){
			// 删除最后一行数据
			var tableCon = document.getElementById('empData');
			// deleteRow(idx) 删除行
			tableCon.deleteRow(tableCon.rows.length-1);
		}
	</script>
</html>
简化操作
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			table,
			td,
			th {
				border: 1px solid black;
			}
		</style>
	</head>
	<body>
		<input type="button" value="末尾增加" onclick="addTr()">
		<input type="button" value="替换" onclick="repTr()">

		<table id="empData">
			<caption>员工信息表</caption>
			<thead>
				<tr>
					<th>编号</th>
					<th>姓名</th>
					<th>薪资</th>
					<th>兴趣</th>
				</tr>
			</thead>
			<tbody>
				<tr>
					<td>1</td>
					<td>tom</td>
					<td>10000</td>
					<td>唱歌</td>
				</tr>
				<tr>
					<td>2</td>
					<td>jack</td>
					<td>13000</td>
					<td>玩游戏</td>
				</tr>
				<tr>
					<td>3</td>
					<td>maria</td>
					<td>11000</td>
					<td>唱歌</td>
				</tr>
				<tr>
					<td>4</td>
					<td>lucy</td>
					<td>15000</td>
					<td>唱歌</td>
				</tr>
			</tbody>
		</table>

	</body>
	<script>
		function addTr() {
			// 追加内容
			var tableCon = document.getElementById('empData');
			// 简易数据
			// tableCon.innerHTML+='<tr><td>4</td><td>lucy</td><td>15000</td><td>唱歌</td></tr>';
			// 拼接字符串
			tableCon.innerHTML += '<tr>' +
				'<td>4</td>' +
				'<td>lucy</td>' +
				'<td>15000</td>' +
				'<td>唱歌</td>' +
				'</tr>';
		}

		function repTr() {
			// 替换操作
			var tableCon = document.getElementById('empData');
			// 简易数据
			// tableCon.innerHTML+='<tr><td>4</td><td>lucy</td><td>15000</td><td>唱歌</td></tr>';
			// 拼接字符串
			tableCon.innerHTML = '<tr>' +
				'<td>4</td>' +
				'<td>lucy</td>' +
				'<td>15000</td>' +
				'<td>唱歌</td>' +
				'</tr>';

		}
	</script>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值