比较高效的表格行背景变色及选定高亮JS

下面这个例一摘录自:
http://blog.breakn.net/article.asp?id=447
例一:
//点击当前选中行的时候设置当前行的颜色,同时恢复除当前行外的行的颜色及鼠标事件  
function selectRow(target)  
{  
var sTable = document.getElementById("ServiceListTable")  
for(var i=1;i<sTable.rows.length;i++) //遍历除第一行外的所有行  
{  
if (sTable.rows[i] != target) //判断是否当前选定行  
{  
sTable.rows[i].bgColor = "#ffffff"; //设置背景色  
sTable.rows[i].onmouseover = resumeRowOver; //增加onmouseover 事件  
sTable.rows[i].onmouseout = resumeRowOut;//增加onmouseout 事件  
}  
else  
{  
sTable.rows[i].bgColor = "#d3d3d3";  
sTable.rows[i].onmouseover = ""; //去除鼠标事件  
sTable.rows[i].onmouseout = ""; //去除鼠标事件  
}  
}  
}  
//移过时tr的背景色  
function rowOver(target)  
{  
target.bgColor='#e4e4e4';  
}  
//移出时tr的背景色  
function rowOut(target)  
{  
target.bgColor='#ffffff';  
}  
//恢复tr的的onmouseover事件配套调用函数  
function resumeRowOver()  
{  
rowOver(this);  
}  
//恢复tr的的onmouseout事件配套调用函数  
function resumeRowOut()  
{  
rowOut(this);  
}  


页面测试表格:
<table width="100%" border="0" cellspacing="0" cellpadding="0" id="ServiceListTable">  
<tr>  
<th>服务事项</th>  
<th>N</th>  
<th>状态</th>  
<th>办结</th>  
<th>资料</th>  
</tr>  
<tr onmouseover="rowOver(this)" onmouseout="rowOut(this)" onclick="selectRow(this)">  
<td>相关内容</td>  
<td align="center">&nbsp;</td>  
<td align="center">&nbsp;</td>  
<td align="center">&nbsp;</td>  
<td align="center">&nbsp;</td>  
</tr>  
<tr onmouseover="rowOver(this)" onmouseout="rowOut(this)" onclick="selectRow(this)">  
<td>相关内容</td>  
<td align="center">&nbsp;</td>  
<td align="center">&nbsp;</td>  
<td align="center">&nbsp;</td>  
<td align="center">&nbsp;</td>  
</tr>  
<tr onmouseover="rowOver(this)" onmouseout="rowOut(this)" onclick="selectRow(this)">  
<td>相关内容</td>  
<td align="center">&nbsp;</td>  
<td align="center">&nbsp;</td>  
<td align="center">&nbsp;</td>  
<td align="center">&nbsp;</td>  
</tr>  
<tr onmouseover="rowOver(this)" onmouseout="rowOut(this)" onclick="selectRow(this)">  
<td>相关内容</td>  
<td align="center">&nbsp;</td>  
<td align="center">&nbsp;</td>  
<td align="center">&nbsp;</td>  
<td align="center">&nbsp;</td>  
</tr>  
</table>  



例二:
上述为Row中添加效果,做适当修改,为每个Cell添加效果:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Test</title>
<script language="javascript">
	function selectCell(target) {  
		var sTable = document.getElementById("table1")  
		for(var i=0;i<sTable.rows.length;i++) {    
			for(var j=0; j<sTable.rows[i].cells.length; j++) {
				if (sTable.rows[i].cells[j] != target) {
					sTable.rows[i].cells[j].bgColor = "#ffffff";   
					sTable.rows[i].cells[j].onmouseover = resumeCellOver;   
					sTable.rows[i].cells[j].onmouseout = resumeCellOut;
				} 
				else {
					sTable.rows[i].cells[j].bgColor = "#d3d3d3";  
					sTable.rows[i].cells[j].onmouseover = ""; 
					sTable.rows[i].cells[j].onmouseout = ""; 
				}   
			}
		}  
	}
	
	function cellOver(target) {  
		target.bgColor='#e4e4e4';  
	}  
	
	function cellOut(target) {  
		target.bgColor='#ffffff';  
	}  
	
	function resumeCellOver() {  
		cellOver(this);  
	}  
	
	function resumeCellOut() {  
		cellOut(this);  
	}  
</script>
</head>
<body>
	<table align="center" width="200" height="200" border="1" cellspacing="0" cellpadding="0" id="table1">  
		<tr>  
			<td align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">xxx</td>  
			<td align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">xxx</td>  
			<td align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">xxx</td>  
			<td align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">xxx</td>  
		</tr>  
		<tr >  
			<td align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">&nbsp;</td>  
			<td align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">&nbsp;</td>  
			<td align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">&nbsp;</td>  
			<td align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">&nbsp;</td>  
		</tr>  
		<tr>    
			<td align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">xxx</td>  
			<td align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">xxx</td>  
			<td align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">xxx</td>  
			<td align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">xxx</td>  
		</tr>  
		<tr>  
			<td align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">&nbsp;</td>  
			<td align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">&nbsp;</td>  
			<td align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">&nbsp;</td>  
			<td align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">&nbsp;</td>  
		</tr>  
	</table>  
</body>
</html>



例三:
再做适当修改,实现鼠标点击Table单元格Cell的时候,最后两个被点击的Cell背景颜色被改变:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Test</title>
<script language="javascript">
	var count = 0;
	
	function selectCell(target) { 
		var sTable = document.getElementById("table1");  
		if(count%2 == 0) {
			document.getElementById("preciousCell").value = target.id;
		} else {
			document.getElementById("currentCell").value = target.id;
		}
		var preciousCellId = document.getElementById("preciousCell").value;
		var currentCellId = document.getElementById("currentCell").value;
		//alert("preciousCellId:" + preciousCellId);
		//alert("currentCellId:" + currentCellId);
		for(var i=0;i<sTable.rows.length;i++) {    
			for(var j=0; j<sTable.rows[i].cells.length; j++) {
				if (sTable.rows[i].cells[j].id != preciousCellId && sTable.rows[i].cells[j].id != currentCellId ) {
					sTable.rows[i].cells[j].bgColor = "#ffffff";   
					sTable.rows[i].cells[j].onmouseover = resumeCellOver;   
					sTable.rows[i].cells[j].onmouseout = resumeCellOut;
				} else {
					sTable.rows[i].cells[j].bgColor = "#d3d3d3";  
					sTable.rows[i].cells[j].onmouseover = ""; 
					sTable.rows[i].cells[j].onmouseout = ""; 
				}  
			}
		}  
		count ++;
	}
	
	function cellOver(target) {  
		target.bgColor='#e4e4e4';  
	}  
	
	function cellOut(target) {  
		target.bgColor='#ffffff';  
	}  
	
	function resumeCellOver() {  
		cellOver(this);  
	}  
	
	function resumeCellOut() {  
		cellOut(this);  
	}  
</script>
</head>
<body>
	<form>
	<input type="hidden" id="preciousCell" />
	<input type="hidden" id="currentCell" />
	<table align="center" width="200" height="200" border="1" cellspacing="0" cellpadding="0" id="table1">  
		<tr>  
			<td id="td1" align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">xxx</td>  
			<td id="td2" align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">xxx</td>  
			<td id="td3" align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">xxx</td>  
			<td id="td4" align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">xxx</td>  
		</tr>  
		<tr >  
			<td id="td5" align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">&nbsp;</td>  
			<td id="td6" align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">&nbsp;</td>  
			<td id="td7" align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">&nbsp;</td>  
			<td id="td8" align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">&nbsp;</td>  
		</tr>  
		<tr>    
			<td id="td9" align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">xxx</td>  
			<td id="td10" align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">xxx</td>  
			<td id="td11" align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">xxx</td>  
			<td id="td12" align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">xxx</td>  
		</tr>  
		<tr>  
			<td id="td13" align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">&nbsp;</td>  
			<td id="td14" align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">&nbsp;</td>  
			<td id="td15" align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">&nbsp;</td>  
			<td id="td16" align="center" onmouseover="cellOver(this)" onmouseout="cellOut(this)" onclick="selectCell(this)">&nbsp;</td>  
		</tr>  
	</table>  
	</form>
</body>
</html>



你可能感兴趣的:(html,.net,Blog,asp.net,asp)