高亮显示(或取消)表格中点击过的行或列

 

1,高亮显示(或取消)点击过的行或列
2,在标题行点击,只对此列有效
3,在正文中点击,可能此行/此列有效
4,不支持排序
5,支持偶/奇数行的颜色交换(****通过td标识来实现列的高亮显示)
6,当点击单元与上次不相同时:上次的高亮显示消失,相单元高亮显示
7,当点击单元与上次相同时:高亮显示交替出现

 

程序如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>表格技术-3</title>
<style>
body,th,td{font-size: 10pt;}
span {margin-top:5px; margin-left:100px; font-size:36px; font-weight:600;}
.Tlist1 {border-collapse:collapse;table-layout:fixed;width:710px;}

.odd {background: #EEFFFF;}
.even {background: #DDFFFF;}

.outit {background: #EEDDFF;}
.ovrit {background: #AADDFF;}
.cross {background: #FFAAAA;}
.clkit {background: #DDAAAA;}
.clkcr {background: #AA7777;}
.title {background: #77FFFF;}

</style>
<script type="text/javascript" src="jquery-1.4.2.js"></script>
<script type="text/javascript">
var rc,rc1,rc2="";
var rs,rs1,rs2="";
var Nrow = 15,Ncol = 12;

$(document).ready(function(){
 trid();
 colid();
//  $("col",$("#table3"))[rc[0]].addClass(clr);

 run();

 $("#table3 tbody tr:odd").addClass('odd');
 $("#table3 tbody tr:even").addClass("even");

});

function run()
{
//当光标位于表单元上时
 $("tbody tr td").mouseover(
  function () {
   rc = getRC($(this));
   $("#x").html("坐标(x,y):  "+ rc[0] +","+ rc[1]);
   $("#y").html("标识(id:x,y):  "+ rc[2] +","+ rc[3]);
   Cross_clr(rc,"ovrit",0);
  }
 );
 $("tbody tr td").mouseout(
  function () {
   Cross_rmv(rc,"ovrit",0);
  }
 );
 $("tbody tr td").click(function(){

   rc1 = getRC($(this));
   Cross_clr(rc1,"clkit",1);
//   if (!rc2=="") Cross_rmv(rc2,"clkit",1);
   if (!rs2=="") Column_rmv1(rs2,"clkit",1);

// 当点击单元与上次不相同时:上次的高亮显示消失,相单元高亮显示
// 当点击单元与上次相同时:高亮显示交替出现

   if(!rc2=="")
   {
    Cross_rmv(rc2,"clkit",1);
    if (rc1[0]==rc2[0]&&rc1[1]==rc2[1])
    {
     rc2="";
    } else
    {
     Cross_clr(rc1,"clkit",1);
     rc2 = getRC($(this));
    }
   } else
   {
    Cross_clr(rc1,"clkit",1);
    rc2 = getRC($(this));
   }
 });

//当光标位于标题行上时
 $("thead tr th")
 .mouseover(
  function () {
   rs = getRC1($(this));
   $("#x").html("坐标(x):  "+ rs[0] );
   $("#y").html("标识(id:x):  "+ rs[1] );
   Column_clr1(rs,"ovrit",0);
  }
 )
 .mouseout(
  function () {
   Column_rmv1(rs,"ovrit",0);
  }
 )
 .click(function(){
   rs1 = getRC1($(this));

   if (!rc2=="") Cross_rmv(rc2,"clkit",1);
//   if (!rs2=="") Column_rmv1(rs2,"clkit",1);
   if(!rs2=="")
   {
    Column_rmv1(rs2,"clkit",1);
    if (rs1[0]==rs2[0])
    {
     rs2="";
    } else
    {
     Column_clr1(rs1,"clkit",1);
     rs2 = getRC1($(this));
    }
   } else
   {
    Column_clr1(rs1,"clkit",1);
    rs2 = getRC1($(this));
   }
 });


}


// c:column, r:row
function getRC(td)
{
 var c  = $(td).parent().children().index($(td));
//             td  tr       tds

 var r  = $(td).parent().parent().children().index($(td).parent());
//             td  tr       tbody  trs

 var cs = $("col",$(td).parent().parent().parent())[c].id;
//                     td  tr       tbody    table

 var rs = $("tr" ,$(td).parent().parent())[r].id;
//                     td  tr       tbody

 return [c,r,cs,rs];
}

function Cross_clr(rc,clr,flg)
{
 if (flg==0) //Sequence,rc[0],rc[1]
 {
  $("#table3>tbody>tr").each(function(){$("td:eq("+rc[0]+")",$(this)).addClass(clr)});
  $("#table3>tbody>tr:eq("+rc[1]+")").addClass(clr);
  $("#table3>tbody>tr:eq("+rc[1]+")>td:eq("+rc[0]+")").addClass("cross");
 } else { //Id,rc[2],rc[3]
  $("#table3>tbody>tr").each(function(){$("td:eq("+rc[0]+")",$(this)).addClass(clr)});
//  $("#table3 #"+rc[2]).addClass(clr);  //如果要进行排序,则必须用此方式(定义行ID)
  $("#table3 #"+rc[3]).addClass(clr);
  $("#table3 #"+rc[3]+">#"+rc[2]).addClass("cross");
 }
}

function Cross_rmv(rc,clr,flg)
{
 if (flg==0) //Sequence,rc[0],rc[1]
 {
  $("#table3>tbody>tr").each(function(){$("td:eq("+rc[0]+")",$(this)).removeClass(clr)});
//  $("#table3>tbody>tr>td:eq("+rc[0]+")").removeClass(clr);
  $("#table3>tbody>tr:eq("+rc[1]+")").removeClass(clr);
  $("#table3>tbody>tr:eq("+rc[1]+")>td:eq("+rc[0]+")").removeClass("cross");
 } else { //Id,rc[2],rc[3]
  $("#table3>tbody>tr").each(function(){$("td:eq("+rc[0]+")",$(this)).removeClass(clr)});
//  $("#table3 #"+rc[2]).removeClass(clr);
  $("#table3 #"+rc[3]).removeClass(clr);
  $("#table3 #"+rc[3]+">#"+rc[2]).removeClass("cross");
 }
}

// c:column, r:row
function getRC1(td)
{
 var c  = $(td).parent().children().index($(td));
//             td  th       tds

 var cs = $("col",$(td).parent().parent().parent())[c].id;
//                     td  th       thead    table

 return [c,cs];
}

function Column_clr1(rc,clr)
{
  $("#table3>tbody>tr").each(function(){$("td:eq("+rc[0]+")",$(this)).addClass(clr)});
//  $("#table3 col:eq("+rc[0]+")").addClass(clr);
  $("#table3>thead>tr>th:eq("+rc[0]+")").addClass("cross");
}

function Column_rmv1(rc,clr,flg)
{
  $("#table3>tbody>tr").each(function(){$("td:eq("+rc[0]+")",$(this)).removeClass(clr)});
//  $("#table3 col:eq("+rc[0]+")").removeClass(clr);
  $("#table3>thead>tr>th:eq("+rc[0]+")").removeClass("cross");
}


//  $("col",$("#table3"))[0].addClass("ovrit");  XXX
//  $("#table3 tr:eq(2)").addClass("ovrit");  VVV

// 为了能使排序与行高亮显示同时顺利进行,在每行tr加id
function trid()
{
  for (var c=0;c<Nrow;c++ )
 {
  $("#table3>tbody>tr:eq("+c+")").attr("id","tr"+c);
 }
}
function colid()
{
  for (var c=0;c<Ncol;c++ )
 {
  $("#table3 col:eq("+c+")").attr("id","col"+c);
 }
}
</script>
</head>

<body>
Gu Laicheng,jQuery Table skill / 2010.10.16<br/>
1,高亮显示(或取消)点击过的行或列<br/>
2,在标题行点击,只对此列有效<br/>
3,在正文中点击,可能此行/此列有效<br/>
4,不支持排序<br/>
5,支持偶/奇数行的颜色交换(****通过td标识来实现列的高亮显示)<br/>
6,当点击单元与上次不相同时:上次的高亮显示消失,相单元高亮显示<br/>
7,当点击单元与上次相同时:高亮显示交替出现<br/>

<table  style=" margin-left:0px;" id="table3" border="1" cellpadding=4 cellspacing=0 bordercolor='#3377FF' align=center class=Tlist1>
<script>
 for (var c=0;c<Ncol;c++ )
 {
  document.writeln("<col>");
 }
 document.writeln("<thead><tr class='title'>");
 for (var c=0;c<Ncol;c++ )
 {
  document.writeln("<th>F"+(c)+"</th>");
 }
 document.writeln("</tr></thead>");

  document.writeln("<tbody>");
for (var r=0;r<Nrow;r++ )
 {
  document.writeln("<tr>");
  for (var c=0;c<Ncol;c++ )
  {
   document.writeln("<td>"+(r)+"."+(c)+"</td>");
  }
  document.writeln("</tr>");
 }
 document.writeln("</tbody>");
</script>
</table>
<span id="x"></span>
<span id="y"></span>
</body>
</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现表格高亮显示,可以使用JavaScript来实现。具体的实现步骤如下: 1. 给表格中每一个单元格添加一个点事件监听器。 2. 在点事件监听器中,获取当前点的单元格,并将其样式设置为高亮显示。 3. 在点其他单元格时,将之前高亮的单元格样式恢复为原来的样式,然后将当前点的单元格样式设置为高亮显示。 以下是一个简单的实现示例: ```html <!DOCTYPE html> <html> <head> <title>表格高亮显示</title> <style> table { border-collapse: collapse; } td { border: 1px solid black; padding: 5px; } .highlight { background-color: yellow; } </style> <script> window.onload = function() { var cells = document.getElementsByTagName("td"); for (var i = 0; i < cells.length; i++) { cells[i].onclick = function() { // 取消之前高亮的单元格 var prevHighlighted = document.getElementsByClassName("highlight"); if (prevHighlighted.length > 0) { prevHighlighted[0].classList.remove("highlight"); } // 高亮当前点的单元格 this.classList.add("highlight"); }; } }; </script> </head> <body> <table> <tr> <td>1</td> <td>2</td> <td>3</td> </tr> <tr> <td>4</td> <td>5</td> <td>6</td> </tr> <tr> <td>7</td> <td>8</td> <td>9</td> </tr> </table> </body> </html> ``` 在这个示例中,当单表格中的一个单元格时,该单元格的背景色将变为黄色,表示它已经被高亮显示。如果单其他单元格,则之前高亮的单元格将恢复原来的样式,新点的单元格将被高亮显示

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值