黑马程序员-DOM(第五讲)

本文详细介绍了如何在网页中实现表格的样式设置、行颜色间隔显示与高亮效果、鼠标悬停时的高亮反应,以及表格数据的排序功能,并通过JavaScript与CSS结合展示了全选商品列表和总金额计算的实现。

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

表格在页面中的一些体现

实现效果:行颜色间隔显示并高亮

<table>

<tr>

<th>姓名</th>

<th>年龄</th>

<th>地址</th>

</tr>

<tr>

<td>张三</td>

<td>27</td>

<td>上海</td>

</tr>

<tr>

<td>张三</td>

<td>27</td>

<td>上海</td>

</tr>

<tr>

<td>张三</td>

<td>27</td>

<td>上海</td>

</tr>

 

 

</table>

 

写一个样式表,为表格,行,添加样式

table.css

table{

border:#249bdb 1px solid;

width:500px;

border-collapse:collapse;

}

table td{

border:#249bdb 1px solid;

paddding:10px;

}

table th{

border:#249bdb 1px solid;

paddding:10px;

background-color:rgb(200,200,200);

}

 

定义两个类选择器,使得相邻两行的背景不同,以示区分

<script type=text/javascript>

function trColor(){

//思路:

因为要操作行的样式,所以要先获取表格对象,

然后获取所有被操作的行对象

遍历行并给每一行指定样式

var oTabNode=docummnet.getElementById(info);

//获取表格中的所有行

var collTrNodes=oTabNode.rows;

//遍历的时候从第二行开始

for(var x=1;x<collTrNodes.length;x++)

{

if(x%2==1)

{

collTrNodes[x].className=one;

}

else

{

collTrNodes[x].className=two;

}

}

 

}

 

onload=function(0

{

trColor();

};

</script>

 

这样做完之后,怎么样实现高亮效果呢?就是当鼠标移到每一行上时,发亮,移出时,恢复原状

 

这就需要为没一行对象添加两个事件

在上面的for语句中

 

collTrNodes[x].onmouseover=function(){

name=this.className;//记录下每行的原状态,以便恢复

this.className=over;

}

collTrNodes[x].onmuseout=function(){

this.className=name;

}

 

<style type=text/css>

.one{

background-color:#e1e16a;

}

.two{

background-color:#75f094;

}

.over{

background-color:#8deffa;

}

</style>

 

三、表格排序

 

<th><a href=javascript:void(0) onclick=sortTable()>年龄</a></th>

<a>标签设定属性

<style type=text/css>

th a:link,th a:visited{

color:#279bda;

text-decoration:none;//去掉超链接的下划线

}

</style>

 

<script type=text/javascript>

function sortTable()

{

//思路:

1、排序就需要数组,获取需要参与排序的行对象数组

2、对行数组中的每一个行的年龄单元格的数据进行比较,并完成行对象在数组中的位置置换

3、将排好序的数组重新添加回表格

 

//首先得到table节点(tableidinfo)

var oTabNode=document.getElementById(info);

var collTrNodes=oTabNode.rows;

//定义一个临时容器,存贮需要排序的行对象

var trArr=[];

//遍历原行集合,并将需要排序的行对象存储到容器中

for(var x=1;x<collTrNodes.length;x++)

{

trArr[x-1]=collTrNodes[x];

}

//对临时容器排个序

mySort(trArr);

//将排完序的行对象添加进表格

for(var x=0;x<trArr.length;x++)

{

trArr[x].parentNode.appendChild(trArr[x]);

}

 

 

function mySort(arr)

{

for(var x=0;x<arr.length;x++)

{

for(var y=x+1;y<ar.length;y++)

{

if(parseInt(arr[x].cells[1].innerHTML)>parseInt(arr[y].cells[1].innerHTML))

{

var temp=arr[x];

arr[x]=arr[y];

arr[y]=temp;

}

}

}

}

 

}

</script>

 

四、全选商品列表

 

<input type=checkbox name=item value=4000/>笔记本电脑,3000</br>

<input type=checkbox name=item value=4000/>笔记本电脑,3000</br>

<input type=checkbox name=item value=4000/>笔记本电脑,3000</br>

<input type=checkbox name=item value=4000/>笔记本电脑,3000</br>

<input type=checkbox name=item value=4000/>笔记本电脑,3000</br>

 

<input type=button value=总金额 onclick=getSum()>

<span id=sumid />

 

<script type=text/javascript>

function getSum()

{

//获取所有名称为item的复选框,判断checked状态,为true表示被选中,获取该节点的value进行累计

var sum=0;

var collItemNodes=document.getElementsByName(item);

for(var x=0;x<collItemNodes.length;x++)

{

if(collItemNodes[x]checked)

{

sum+=parseInt(collItemNodes[x].value);

}

}

documet.getElementById(sumid).innerHTML=sum;

}

</script>

 

弄个全选

<input type=checkbox name=allitem onclick=checkAll(this)/>全选

 

function checkAll(node)

{

//原理,将allitem的状态赋值给所有的item的状态

var collItemNodes=document.getElementsByName(item);

For(var x=0;x<collItemNodes.length;x++)

{

collItemNodes[x].checked=node.checked;

}

 

} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值