js学习--隔行换色

隔行换色制作

复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			* {
				padding: 0;
				margin: 0;
			}

			td {
				width: 80px;
				height: 20px;
				text-align: center;
			}
		</style>
	</head>
	<body>
		<table border="1" cellspacing="0">
			<thead>
				<tr>
					<th>序号</th>
					<th>内容</th>
					<th>操作</th>
				</tr>
			</thead>
			<tbody>
				<tr>
					<td>1</td>
					<td>100</td>
					<td><button>删除</button></td>
				</tr>
			</tbody>
		</table>
		<button class="add">添加行</button>
		<script>
			//获取添加行的按钮
			let add = document.getElementsByClassName('add')[0];
			//获取第一个tr
			let row = document.getElementsByTagName('tr')[0];
			//获取表格的身体部分
			let tbody = document.getElementsByTagName('tbody')[0];
			//获取表格里面的td
			let td = document.getElementsByTagName('td');
			//设置一个变量为100
			let num = 100;
			//给添加行的按钮添加一个点击事件
			add.onclick = function() {
					//创建一个新的tr标签
				let newtr = document.createElement('tr');
				//创建一个新的td标签
				let newtd = document.createElement('td');
				//把创建的td标签放到新创建的tr标签里面
				newtr.appendChild(newtd);
				//在创建一个新的td标签
				let data = document.createElement('td');
				//每次添加都让num+100
				num += 100;
				//把变量插入到新建的td里面
				data.innerHTML = num;
				//在把新建的td插入到tr里面
				newtr.appendChild(data);
				//在创建一个td标签
				let but_td = document.createElement('td');
				//在创建一个按钮
				let btn = document.createElement('button');
				//在往新建的按钮里面插入字符串
				btn.innerHTML = '删除';
				//打印新的tr
				console.log(newtr);
				//把新建的按钮插入到新建的td里面
				but_td.appendChild(btn);
				//在把新建的td插入到tr标签里面
				newtr.appendChild(but_td);
				//在把tr插入到表格的身体里面
				tbody.appendChild(newtr);
				//排序和换色函数
				sort();
			}
			//排序和换色函数
			function sort() {
				//创建一个变量它包含的是表格身体里面的子元素
				let trs = tbody.children;
				//for循环的运行次数是看表格身体里面有几个子元素
				for (let i = 0; i < trs.length; i++) {
					//创建一个变量让循环改变一行的第一个td里面的对西
					let istd = trs[i].children[0];
					//然后把刚才生成的变量插入的HTML里面每次运行是当前循环次数+1
					istd.innerHTML = i + 1;
					//判断i%2是否=0,如果为0这一行颜色为白色
					if (i % 2 == 0) {
						trs[i].style.background = 'white';
					} else {
						//否则为粉色
						trs[i].style.background = 'pink';
					}
				}
			}
			//给表格身体绑一个监听函数
			tbody.addEventListener('click', function(e) {
				//设置一个变量,等于e的子元素
				let target = e.target;
				//打印变量看看是否能用有没有报错
				console.log(target);
				//判断变量里面的内容是否为删除
				if (target.innerHTML == '删除') {
					//打印看是否运行
					console.log(1);
					//如果是就找它的爷爷
					let istr = target.parentElement.parentElement;
					//打印看是否执行
					console.log(istr);
					//在表格身体里面点击删除一行
					tbody.removeChild(istr);
				}
				//排序和换色函数
				sort();
			})
		</script>
	</body>
</html>
相关推荐
福兮说4 分钟前
URL 编码的七个坑:c++ 传到后端变空格、%25 套娃、截断 emoji 直接报错
开发语言·前端·javascript·node.js·url
吴声子夜歌9 分钟前
Nginx应用与运维——Nginx Web服务应用实战(Python网站的搭建)
运维·前端·nginx
小的时候可菜了27 分钟前
JS 异步的本质:从单线程到 thenable(一条进化链)
开发语言·前端·javascript
liangshanbo121533 分钟前
Webpack vs Vite 底层原理高频追问的问题
前端·webpack·node.js
可乐鸡翅yeah_35 分钟前
hls.js 配置 loadStartPosition,点播起始播放位置踩坑
开发语言·javascript·网络协议·ecmascript·m3u8在线
JWASX1 小时前
Java 转 go 学习 - 函数(1)
学习·golang
sunshine22 girl1 小时前
Java学习五 面向对象高级5 内部类3-静态内部类和局部内部类(了解)
java·学习
web打印社区1 小时前
Windows 网页静默打印设置步骤:客户端、防火墙与联调清单
开发语言·前端·javascript·chrome·pdf·ecmascript
恋猫de小郭1 小时前
KMP 又改了编译流程, Separate Compilation 禁止了 `commonMain` 的依赖穿透
android·前端·flutter