在上一篇文章中虽然已经为动态生成的表格添加了事件,但是运行后会发现还是有局限性的(选中一行后再选下一行这两行都会变色,肯定是不行的),在实际开发中会用到的可能就是选中表格中的某行记录并使之变色,你可以选第一行,也可以选第二行等等,有且只能有一行选中的变色。此外,本篇文章还增加了移入行变色等效果,下面就进行稍微的修改一下
<html>
<head>
<title>Test</title>
<script type="text/javascript">
var data = "张三,男,11;李四,男,12;王五,女,21;千龙,女,22;";
var datInfo = data.split(";");
function tr_click(){
var oObj = window.event.srcElement;
if(oObj.tagName.toLowerCase() == "td"){
var oTr = oObj.parentNode;
for(var i=1; i<document.all.table1.rows.length; i++){
document.all.table1.rows[i].style.backgroundColor = "";
document.all.table1.rows[i].tag = false;
}
oTr.style.backgroundColor = "#F5DEB3";
oTr.tag = true;
alert(oTr.getElementsByTagName("td")[0].innerHTML);
}
}
function over(){
var oObj = event.srcElement;
if(oObj.tagName.toLowerCase() == "td"){
var oTr = oObj.parentNode;
if(!oTr.tag) oTr.style.backgroundColor = "#E1E9FD";
}
}
function out() {
var oObj = event.srcElement;
if(oObj.tagName.toLowerCase() == "td"){
var oTr = oObj.parentNode;
if(!oTr.tag) oTr.style.backgroundColor = "";
}
}
function toTable(rowCounts,colCounts,datInfo){
var textHTML = '<table id="table1" cellpadding="0" cellspacing="0" border="1" width="98%">';
textHTML+='<tr align="center"><td align="center">姓名</td><td align="center">年龄</td><td>性别</td></tr>';
for(var i=0; i<rowCounts; i++){
textHTML += '<tr align="center" height="30" onclick="tr_click()" onMouseOver="over()" onMouseOut="out()">';
for(var j=0; j<colCounts; j++){
textHTML += "<td>" + (datInfo[i].split(","))[j] + "</td>";
}
}
textHTML += "</tr></table>";
document.getElementById("testTable").innerHTML = textHTML;
}
</script>
</head>
<body >
<input type="button" name="btnGo" value="生成" onclick="toTable(datInfo.length-1,3,datInfo);"/>
<br />
<div id="testTable"></div>
</body>
</html>