<tr bgcolor="#F4F8ED" onMouseOver="this.style.backgroundColor='#ffcc44'" onMouseOut="this.style.backgroundColor='#F4F8ED'">
<td >
hello
</td>
</tr>
<td >
hello
</td>
</tr>
解决方案 »
- jquery mouseover 事件疑问
- 遇到问题了?
- jquery改变<input id='txt1' type='text'/> 的值,如何触发txt1的事件?
- 用过WWW-Authenticated来弹出登录框的请进
- 求助,又是IE与FF的兼容问题。
- 怎么在动态增加的行里面添加事件
- 浏览器内核与jquery性能问题,求高手指点
- 【求助】能在浏览器里通过鼠标拖动来改变表格大小的JS。
- 求java做的网络蜘蛛的代码....100分...
- 如何去掉页面打印时的页眉、页脚?(急)
- =========iframe加载页面得问题!!!==========
- jquery鼠标移入某区域屏蔽鼠标滚轮 滚动滚动条
但是没有那么简单,是要写js来获取行列。我仔细说下需求:
1.点击row header,整行高亮;
2.点击colum header,整列高亮;
3.点击中间的cell,所在row header和colum header高亮;
4.ctrl+shift选多行多列时,所选区域高亮;
其实就是和Excel一样的效果。
<table border="1" id="table1">
<tr >
<td>
df</td>
<td>
sdf
</td>
<td >
sdfd
</td>
</tr>
<tr >
<td>
sdf</td>
<td>
asdasd
</td>
<td>
asdasd
</td>
</tr>
<tr >
<td>
dsf</td>
<td>
asdasd
</td>
<td>
asdasd
</td>
</tr>
</table>
<script language=javascript>
obj=document.getElementById("table1").childNodes[0]
for(var i=0;i<obj.childNodes.length;i++)
{
for(var j=0;j<obj.childNodes[i].childNodes.length;j++)
{
obj.childNodes[i].childNodes[j].onclick=function()
{
var obj=document.getElementById("table1").childNodes[0]
for(var i=0;i<obj.childNodes.length;i++)
{
for(var j=0;j<obj.childNodes[i].childNodes.length;j++)
{
if((j==event.srcElement.cellIndex)||(i==event.srcElement.parentNode.rowIndex))
{
obj.childNodes[i].childNodes[j].style.backgroundColor="blue"
}
else
{
obj.childNodes[i].childNodes[j].style.backgroundColor="white"
}
}
}
}
}
}
</script>
我试过了,其实跟我的需求还有点出入,可能是我没交代清楚。给出一个table:
<table border="1" id="table1">
<tr>
<td></td>
<td>A</td>
<td>B</td>
</tr>
<tr>
<td>1</td>
<td>asa</td>
<td>fdfs</td>
</tr>
<tr>
<td>2</td>
<td>fdf</td>
<td>fds</td>
</tr>
</table>
A,B是列标题;1,2是行标题
实现:1.点击A,A所在列高亮;
2.点击1,1所在行高亮;
3.点击中间cell的"asa",A和1这两个格高亮,也就是这个cell所在行列的标题;
4.按下“ctrl”同时选中"asa","fdfs",那么A,B,1这三个cell高亮;
和excel中实现的功能其实是一样的!
<table id="myTable" width="500" border="1" cellspacing="0" cellpadding="0">
<tr>
<td>22</td>
<td>44</td>
<td>55</td>
</tr>
<tr>
<td>33</td>
<td>55</td>
<td>55</td>
</tr>
<tr>
<td>434</td>
<td>55</td>
<td>55</td>
</tr>
</table>
<script language="javascript">cellNewIndex=0;
document.onclick=function()
{
var cellOldIndex=cellNewIndex;
e=window.event.srcElement;
if (e.tagName=="TD")
{
//取得表格的行数
rowCount=document.getElementById("myTable").rows.length;
//获得当前点击的列的索引值
cellNewIndex=e.cellIndex;
for(i=0;i<rowCount;i++)
{
document.getElementById("myTable").rows(i).cells(cellOldIndex).style.backgroundColor="";
document.getElementById("myTable").rows(i).cells(cellNewIndex).style.backgroundColor="red";
}
}
}
</script>
我试过了,其实跟我的需求还有点出入,可能是我没交代清楚。给出一个table:
<table border="1" id="table1">
<tr>
<td></td>
<td>A</td>
<td>B</td>
</tr>
<tr>
<td>1</td>
<td>asa</td>
<td>fdfs</td>
</tr>
<tr>
<td>2</td>
<td>fdf</td>
<td>fds</td>
</tr>
</table>
A,B是列标题;1,2是行标题
实现:1.点击A,A所在列高亮;
2.点击1,1所在行高亮;
3.点击中间cell的"asa",A和1这两个格高亮,也就是这个cell所在行列的标题;
4.按下“ctrl”同时选中"asa","fdfs",那么A,B,1这三个cell高亮;
和excel中实现的功能其实是一样的!
<!-- saved from url=(0011)about:blank -->
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=unicode">
<META content="MSHTML 6.00.2900.2180" name=GENERATOR>
<SCRIPT LANGUAGE="JavaScript">
<!--
function attachEvent()
{
var table=document.getElementById("table1")
for(var i=0;i<table.cells.length;i++)
{
table.cells[i].onclick=setColor
}
}
function setColor()
{
var table=document.getElementById("table1")
var td=this
var tr=this.parentElement
if(!window.event.ctrlKey)
//如果没有ctrl,则清除上次的状态
{
for(var i=0;i<table.cells.length;i++)
{
table.cells[i].style.backgroundColor="White"
}
} if(td.cellIndex==0 && tr.rowIndex==0)
//如果是row header和column header的交界处,则不处理
{
return
} if(td.cellIndex==0)
//如果row header,那么这一row都变色
{
for(var i=0;i<tr.cells.length;i++)
{
tr.cells[i].style.backgroundColor="Pink"
}
return
} if(tr.rowIndex==0)
//如果是column header,那么这一column都变色
{
for(var i=0;i<table.rows.length;i++)
{
table.rows[i].cells[td.cellIndex].style.backgroundColor="Pink"
}
return
} table.rows[0].cells[td.cellIndex].style.backgroundColor="Pink"
table.rows[tr.rowIndex].cells[0].style.backgroundColor="Pink"
}
//-->
</SCRIPT></HEAD>
<BODY onload='attachEvent()'>
<table border="1" id="table1">
<tr>
<td></td>
<td>A</td>
<td>B</td>
</tr>
<tr>
<td>1</td>
<td>asa</td>
<td>fdfs</td>
</tr>
<tr>
<td>2</td>
<td>fdf</td>
<td>fds</td>
</tr>
</table>
</BODY></HTML>
1.只能在IE下,firefox下不起认识作用。JS是否有firefox不支持的函数?
2.如果按住"shift",达到excel那种效果还有些问题!
哪位能帮着修改下?一定结贴送分!
哪位能帮着修改下?一定结贴送分!
我一直以为是按ctrl达到效果呢
<script language="javascript"> var lCellIndex = -1;
var lRowIndex = -1;
function attachEvent()
{
var table=document.getElementById("table1");
for(var i=0;i<table.cells.length;i++)
{
table.cells[i].onclick=setColor
}
}
function setColor()
{
var table=document.getElementById("table1")
var td=this
var tr=this.parentElement
if(window.event.shiftKey)
{
if(lCellIndex == -1)
{
//no click
}
else
{
//set cloheader highlight of pre click and this click
if(lCellIndex < td.cellIndex)
{
for(var i = lCellIndex; i <= td.cellIndex; i++)
{
table.rows[0].cells[i].style.backgroundColor="Pink"
}
}
else
{
for(var i = td.cellIndex; i <= lCellIndex; i++)
{
table.rows[0].cells[i].style.backgroundColor="Pink"
}
}
//set rowheader highlight of pre click and this click
if(lRowIndex < tr.rowIndex)
{
for(var i = lRowIndex; i <= tr.rowIndex; i++)
{
table.rows[i].cells[0].style.backgroundColor="Pink"
}
}
else
{
for(var i = tr.rowIndex; i <= lRowIndex; i++)
{
table.rows[i].cells[0].style.backgroundColor="Pink"
}
}
} }
if(!window.event.ctrlKey&&!window.event.shiftKey)
//no click 'ctrl',clear pre highlight
{
for(var i=0;i<table.cells.length;i++)
{
table.cells[i].style.backgroundColor="White"
}
}
if(td.cellIndex==0 && tr.rowIndex==0)
{
return
}
if(td.cellIndex==0)
//click row header,whole row highlight
{
for(var i=0;i<tr.cells.length;i++)
{
tr.cells[i].style.backgroundColor="Pink"
}
return
}
if(tr.rowIndex==0)
//click column header,whole column highlight
{
for(var i=0;i<table.rows.length;i++)
{
table.rows[i].cells[td.cellIndex].style.backgroundColor="Pink"
}
return
}
table.rows[0].cells[td.cellIndex].style.backgroundColor="Pink"
table.rows[tr.rowIndex].cells[0].style.backgroundColor="Pink"
lCellIndex = td.cellIndex;
lRowIndex = tr.rowIndex; }