DOM表格 简单购物车、表格隔行变色、表格行颜色随鼠标移动变色

这篇博客介绍了如何使用DOM访问和操作HTML表格,包括获取表格元素的属性和方法,如rows和cells。内容涉及表格的增删改查,特别是实现购物车功能,以及表格隔行变色和行颜色随鼠标移动变化的效果。

目录

DOM访问表格元素

常用属性和方法

rows[index]返回表格指定的行为对应属性

cells[index]返回表格指定的列所对应的属性

表格的增删改查

表格添加删除常用方法

表格行添加删除方法

列:实现购物车

列:设置表格颜色并实现隔行变色

 


DOM访问表格元素

常用属性和方法

  • caption 返回表格的标题对象
  • rows 返回该表格里的所有表格行
  • tbodies 返回该表格里所有<tbody .../>元素组成的数组
  • tfoot 返回该表格里所有<tfoot .../>元素组成的数组
  • thead 返回该表格里所有<thead .../>元素组成的数组

rows[index]返回表格指定的行为对应属性

cells 返回该表格所有单元格组成的数组

rowIndex 返回表格行在表格内的索引值

sectionRowIndex 返回表格行所在元素(tbody,thead等元素)的索引值

 

cells[index]返回表格指定的列所对应的属性

cellIndex 返回该表格行内的索引值

表格的增删改查

表格添加删除常用方法

  • insertRow(index) 在指定索引处插入1行
  • createCaption() 创建标题
  • createTFoot() 为该表格创建<tfoot...>元素,假如已存在就返回现有的
  • createTHead()
  • deleteRow(index) 删除index索引处的行
  • deleteCaption() 删除表格标题
  • deleteTFoot() 从表格删除tFoot元素及其内容
  • deleteTHead()

表格行添加删除方法

  • insertCell(index) 在index处创建一个单元格、返回新创建的单元格
  • deleteCell(index) 删除某行在index索引处的值

列:实现购物车

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			window.onload = function() {
				var otb = document.getElementById('tb');
				var btn = document.getElementById('btn');
				var name = document.getElementById('name');
				var age = document.getElementById('age');
				var price = document.getElementById('price');
				//tbodies 返回该表格里所有<tbody .../>元素组成的数组
				//rows 返回该表格里的所有表格行
				var id = otb.tBodies[0].rows.length + 1; //通过算数的数组获取行数
				btn.onclick = function() {
					var otr = document.createElement('tr'); //创建1行

					var otd = document.createElement('td'); //创建1列
					var mychbox = document.createElement('input'); //创建input元素
					mychbox.setAttribute('type', 'checkbox'); //input元素建立属性
					mychbox.setAttribute('name', 'loves'); //input元素建立属性
					otd.innerHTML = id++; //行数加1
					otd.appendChild(mychbox); //将input标签添加到列中
					otr.appendChild(otd); //将列添加到行中

					var otd = document.createElement('td');
					var myimg = document.createElement('img'); //创建img标签
					myimg.setAttribute('id', 'myimg2'); //建立img标签的属性
					myimg.setAttribute('src', 'img/0115images/Frame.jpg'); //建立img标签的属性
					otd.appendChild(myimg); //将img标签添加到列中
					otr.appendChild(otd); //将列添加到行中

					//innerHTML 属性设置或返回表格行的开始和结束标签之间的 HTML
					var otd = document.createElement('td'); //创建第二列
					otd.innerHTML = name.value;
					otr.appendChild(otd);

					var otd = document.createElement('td');
					otd.innerHTML = age.value;
					otr.appendChild(otd);

					var otd = document.createElement('td');
					otd.innerHTML = price.value;
					otr.appendChild(otd);

					var otd = document.createElement('td');
					otd.innerHTML = '<a href="javascript:;">删除</a>';
					otr.appendChild(otd); //将列添加到行中

					otd.getElementsByTagName('a')[0].onclick = function() {
						//移除选定的行
						otb.tBodies[0].removeChild(this.parentNode.parentNode);
					}
					
					//tbodies 返回该表格里所有<tbody .../>元素组成的数组
					otb.tBodies[0].appendChild(otr); //将列中的所有元素添加到行中
				}
			}
		</script>
	</head>
	<body>
		名称:<input type="text" id="name" />
		数量:<input type="text" id="age" />
		价格:<input type="text" id="price" />
		<input type="button" id="btn" value="添加" />

		<table id="tb" width="500">
			<thead>
				<td>序号</td>
				<td>图片</td>
				<td>名称</td>
				<td>数量</td>
				<td>价格</td>
				<td>操作</td>
			</thead>
			<tbody>
			</tbody>
		</table>
	</body>
</html>

结果:

删除1行

列:表格隔行变色

<body>
	<table border="1" width="500" height="50" align="center" id="tbl">
		<thead>
			<tr>
				<th>编号</th>
				<th>姓名</th>
				<th>年龄</th>
			</tr>
		</thead>
		<tbody>
			<tr>
				<td>1</td>
				<td>张三</td>
				<td>22</td>
			</tr>
			<tr>
				<td>2</td>
				<td>李四</td>
				<td>25</td>
			</tr>
			<tr>
				<td>3</td>
				<td>王五</td>
				<td>27</td>
			</tr>
			<tr>
				<td>4</td>
				<td>赵六</td>
				<td>29</td>
			</tr>
			<tr>
				<td>5</td>
				<td>田七</td>
				<td>30</td>
			</tr>
			<tr>
				<td>6</td>
				<td>汾九</td>
				<td>20</td>
			</tr>
		</tbody>
	</table>
</body>

JavaScript

<script>
	window.onload = function() {
		//1获取表格
		var tbEle = document.getElementById('tbl');
		//2获取表格中评tbody的长度
		var len = tbEle.tBodies[0].rows.length;
		//3对tbody进行遍历
		for (var i = 0; i < len; i++) {
			if (i % 2 == 0) {
				tbEle.tBodies[0].rows[i].style.backgroundColor = "pink";
			} else {
				tbEle.tBodies[0].rows[i].style.backgroundColor = "gold";
			}
		}
	}
</script>

结果

列:表格行颜色随鼠标移动变色

分析:

  • 第一步:确定事件(onmouseover和onmouseout)并分别为其绑定一个函数
  • 第二步:获取鼠标移上去的那行,对其设置背景颜色

 

列:表格行颜色随鼠标移动变色并且隔行变色

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			 window.onload=function(){
                 //获取表格
			 	var otb=document.getElementById('tb');
			 	var oldColor='';
                 //otb.tBodies[0].rows.length获取表格行的个数
			 	//当鼠标移入时,改变此行颜色
			 	for(var i=0;i<otb.tBodies[0].rows.length;i++){
			 		otb.tBodies[0].rows[i].onmouseover=function(){
			 			oldColor=this.style.background;  //改变颜色之前先保存最初的颜色;
			 			this.style.background='green';
			 			
			 		}
				//当鼠标移出时,恢复此行颜色
			 		otb.tBodies[0].rows[i].onmouseout=function(){
			 			this.style.background=oldColor;  //还原原来的颜色;
			 			
			 		}
                  //设置隔行变色
			 		if(i%2){
			 			
			 			otb.tBodies[0].rows[i].style.background='';
			 		}else{
			 			otb.tBodies[0].rows[i].style.background='#CCC';
			 		}
			 	}
			 }
		</script>
	</head>
	<body>
			
		<table id="tb" border="1" width="500">
			<thead>
				<td>学号</td>
				<td>姓名</td>
				<td>成绩</td>
			</thead>
			<tbody>
				<tr>
					<td>1001</td>
					<td>容儿</td>
					<td>90</td>
				</tr>
				<tr>
					<td>1002</td>
					<td>小花</td>
					<td>70</td>
				</tr>
				<tr>
					<td>1003</td>
					<td>小白</td>
					<td>55</td>
				</tr>
				<tr>
					<td>1004</td>
					<td>祖儿</td>
					<td>77</td>
				</tr>
				<tr>
					<td>1005</td>
					<td>小青</td>
					<td>88</td>
				</tr>
			</tbody>
		</table>
	</body>
</html>

结果:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值