javascript 对表格的行和列都能加亮显示


Posted in Javascript onDecember 26, 2008

1,交叉加亮
2,点击左上角的 "1;1","2;2"观察所有单元值的变化
3,点击左上角的 "3,3","4,4"观察所有单元字体的变化
4,点击单元后,该单元颜色发生变化,并直至点击下一单元
5,将th与td分开;
Gu Laicheng, 2008.12.25
<HTML>
<HEAD>
<TITLE>交叉高亮显示</TITLE>
<style>
body,th,td
{
font-size: 10pt;
}
.Tlist1
{
border-collapse:collapse;table-layout:fixed;width:710px;
}
.outit
{
background: #EEDDFF;
}
.ovrit
{
background: #AADDFF;
}
.cross
{
background: #33DDFF;
}
.clkit
{
background: #DDAAAA;
}
.clkcr
{
background: #AA7777;
}
.titl
{
background: #77AAFF;
}
</style>
</HEAD>
<BODY>
<table id="table3" border="1" cellpadding=4 cellspacing=0 bordercolor='#3377FF' align=center class=Tlist1 id=Tlist1>
<script>
var Nrow = 15,Ncol = 12;
document.writeln("<tr class='titl'>");
for (var c=0;c<Ncol;c++ )
{
document.writeln("<th>F"+(c+1)+"</th>");
}
document.writeln("</tr>");
for (var r=0;r<Nrow;r++ )
{
document.writeln("<tr>");
for (var c=0;c<Ncol;c++ )
{
document.writeln("<td class='outit'>"+(r+1)+";"+(c+1)+"</td>");
}
document.writeln("</tr>");
}
</script>
</table>
</BODY>
<script>
var currentRow,currentCol;
table3.rows[1].cells[0].onclick = function(){init(0);}
table3.rows[2].cells[1].onclick = function(){init(1);}
table3.rows[3].cells[2].onclick = function(){ccssty(0);}
table3.rows[4].cells[3].onclick = function(){ccssty(1);}
table3.rows[1].cells[0].style.cursor = "hand"
table3.rows[2].cells[1].style.cursor = "hand"
table3.rows[3].cells[2].style.cursor = "hand"
table3.rows[4].cells[3].style.cursor = "hand"
table3.onmouseover = new Function("var d='over'; moveit(d);");
table3.onmouseout = new Function("var d='out'; moveit(d);");
table3.onclick = clickit;
init(0);
function get_Element(the_ele,the_tag){
the_tag = the_tag.toLowerCase();
if(the_ele.tagName.toLowerCase()==the_tag)return the_ele;
while(the_ele=the_ele.offsetParent){
if(the_ele.tagName.toLowerCase()==the_tag)return the_ele;
}
return(null);
}
function setHorizontal(r,c,cn)
{
for (var i=0;i<table3.rows[r].cells.length ;i++)
{
table3.rows[r].cells[i].className = cn;
}
}
function setVertical(r,c,cn)
{
for (var i=1;i<table3.rows.length ;i++) // i starts from 0 because of TH
{
table3.rows[i].cells[c].className = cn;
}
}
function clickit(){
if (currentRow == 0)
{
return;
}
var cl = parseInt(clickl.innerText),
cc = parseInt(clickc.innerText);
if (cl+"" != "NaN" && cc+"" != "NaN") {
setVertical(currentRow,cc-1,"outit");
setHorizontal(cl,currentCol,"outit");
}
//Vertical Cells
setVertical(currentRow,currentCol-1,"clkit");
//Horizontal Cells
setHorizontal(currentRow,currentCol-1,"clkit");
//The color at the cross point
table3.rows[currentRow].cells[currentCol-1].className = "clkcr";
clickl.innerText = currentRow + "/"+Nrow
clickc.innerText = currentCol + "/"+Ncol
window.status = "Click on "+currentRow+","+currentCol;
}
function moveit(dir){
var the_obj = event.srcElement;
if(the_obj.tagName.toLowerCase() == "table") return;
if(the_obj.tagName.toLowerCase() == "th")
{
var the_td = get_Element(the_obj,"th");
} else
{
var the_td = get_Element(the_obj,"td");
}
var the_tr = the_td.parentElement;
currentRow = the_tr.rowIndex ;
currentCol = the_td.cellIndex+1 ;
//Vertical Cells
setVertical(currentRow,currentCol-1,(dir=="over")?"ovrit":"outit");
//Do not set horizontal cells when the cursor is on TH
if (currentRow>0)
{
//Horizontal Cells
setHorizontal(currentRow,currentCol-1,(dir=="over")?"ovrit":"outit");
//The color at the cross point
the_tr.cells[currentCol-1].className = (dir=="over")?"cross":"outit";
var cl = parseInt(clickl.innerText),
cc = parseInt(clickc.innerText);
if (cl+"" != "NaN" && cc+"" != "NaN") {
table3.rows[cl].cells[cc-1].className = "clkcr";
}
}
cline.innerText = currentRow + "/"+Nrow
ccell.innerText = currentCol + "/"+Ncol
}
function init(f){
var val = new Array();
var the_obj = event.srcElement;
var ii = jj = 0;
var the_table = get_Element(the_obj,"table");
ii = the_table.rows.length;
jj = the_table.rows[0].cells.length
for(i=1;i<ii;i++){
for(j=0;j<jj;j++){
the_table.rows[i].cells[j].innerText= (f==0)?(""+((i-1)*jj+j+1)):(""+i+";"+(j+1)) ;
}
}
}
function ccssty(flag){
var the_obj = event.srcElement;
var the_table = get_Element(the_obj,"table");
if(flag==0)
the_table.style.cssText = "PADDING-RIGHT: 0px; MARGIN-TOP: -3px; PADDING-LEFT: 0px; FONT-SIZE: 14px; MARGIN-BOTTOM: 2px; PADDING-BOTTOM: 2px; OVERFLOW: hidden; WIDTH: 710px; COLOR: blue; PADDING-TOP: 0px; FONT-FAMILY: 宋体; HEIGHT: 11px";
if(flag==1)
the_table.style.cssText = "PADDING-RIGHT: 0px; MARGIN-TOP: -3px; PADDING-LEFT: 0px; FONT-SIZE: 14px; MARGIN-BOTTOM: 2px; PADDING-BOTTOM: 2px; OVERFLOW: hidden; WIDTH: 710px; COLOR: #AAAA00; PADDING-TOP: 0px; FONT-FAMILY: 宋体; HEIGHT: 11px";
}
</script>
当前行:<span id=cline></span><br/>
当前列:<span id=ccell></span><br/>
点击行:<span id=clickl></span><br/>
点击列:<span id=clickc></span><br/>
</HTML>

Javascript 相关文章推荐
JavaScript版TAB选项卡效果实例
Aug 16 Javascript
Js实现网页键盘控制翻页的方法
Oct 30 Javascript
jQuery实现瀑布流布局详解(PC和移动端)
Sep 01 Javascript
Javascript中的arguments对象
Jun 20 Javascript
JS常用加密编码与算法实例总结
Dec 22 Javascript
vue cli webpack中使用sass的方法
Feb 24 Javascript
JavaScript基础心法 深浅拷贝(浅拷贝和深拷贝)
Mar 05 Javascript
解决循环中setTimeout执行顺序的问题
Jun 20 Javascript
js实现点击图片在屏幕中间弹出放大效果
Sep 11 Javascript
js实现带搜索功能的下拉框
Jan 11 Javascript
vue $mount 和 el的区别说明
Sep 11 Javascript
javascript实现搜索筛选功能实例代码
Nov 12 Javascript
JavaScript 仿关机效果的图片层
Dec 26 #Javascript
jquery 插件 任意位置浮动固定层
Dec 25 #Javascript
jquery 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
Dec 25 #Javascript
jquery 图片预加载 自动等比例缩放插件
Dec 25 #Javascript
jquery 插件之仿“卓越亚马逊”首页弹出菜单效果
Dec 25 #Javascript
ASP SQL防注入的方法
Dec 25 #Javascript
jQuery 位置插件
Dec 25 #Javascript
You might like
PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
2015/04/27 PHP
PHP使用curl模拟post上传及接收文件的方法
2016/03/04 PHP
ThinkPHP中limit()使用方法详解
2016/04/19 PHP
Json对象替换字符串占位符实现代码
2010/11/17 Javascript
formvalidator验证插件中有关ajax验证问题
2013/01/04 Javascript
向当前style sheet中插入一个新的style实现方法
2013/04/01 Javascript
图片旋转、鼠标滚轮缩放、镜像、切换图片js代码
2020/12/13 Javascript
JS中微信小程序自定义底部弹出框
2016/12/22 Javascript
基于JSONP原理解析(推荐)
2017/12/04 Javascript
在vue中通过axios异步使用echarts的方法
2018/01/13 Javascript
vue router导航守卫(router.beforeEach())的使用详解
2019/04/19 Javascript
Vue $emit()不能触发父组件方法的原因及解决
2020/07/28 Javascript
JS实现多功能计算器
2020/10/28 Javascript
[00:50]深扒TI7聊天轮盘语音出处6
2017/05/11 DOTA
[18:16]sakonoko 2017年卡尔集锦
2018/02/06 DOTA
python抓取网页内容示例分享
2014/02/24 Python
python读取csv文件示例(python操作csv)
2014/03/11 Python
Python中为feedparser设置超时时间避免堵塞
2014/09/28 Python
Python中列表、字典、元组、集合数据结构整理
2014/11/20 Python
Python可变参数函数用法实例
2015/07/07 Python
Python获取SQLite查询结果表列名的方法
2017/06/21 Python
Python基于PyGraphics包实现图片截取功能的方法
2017/12/21 Python
numpy中loadtxt 的用法详解
2018/08/03 Python
python 实现一次性在文件中写入多行的方法
2019/01/28 Python
离线状态下在jupyter notebook中使用plotly实例
2020/04/24 Python
在django中实现choices字段获取对应字段值
2020/07/12 Python
Python如何进行时间处理
2020/08/06 Python
JD Sports德国官网:英国领先的运动鞋和运动服饰零售商
2018/02/26 全球购物
国际花店:Pickup Flowers
2020/04/10 全球购物
JAVA软件工程师测试题
2014/07/25 面试题
商务日语毕业生自荐信
2013/11/23 职场文书
《乌塔》教学反思
2014/02/17 职场文书
《美丽的田园》教学反思
2014/03/01 职场文书
作文评语集锦大全
2014/04/23 职场文书
信仰纪录片观后感
2015/06/08 职场文书
Java中Dijkstra(迪杰斯特拉)算法
2022/05/20 Java/Android