The below code works great as its intended to, however, how can it be modified such that dual rows are not highlighted, when the user also uses ones of the Go to Row buttons.
Right now when the user uses their mouse to click on a row it highlights, (great, no problem here)
but if the user also clicks one of the go to buttons it highlights the specified row. (great, but now there are 2 rows that are highlighted, I only would like 1 row highlighted at a time)
My theory is that, if one of the go to buttons are pressed, the code should see which row (if any highlighed), unhighlight it and continue highlighting the specified row.
no jQuery libraries please.
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
#mstrTable {
border: 1px solid black
}
#mstrTable td, th {
border: 1px solid black
}
#mstrTable tr.normal td {
color: black;
background-color: white;
}
#mstrTable tr.highlighted td {
color: white;
background-color: gray;
}
</style>
</head>
<body>
<table id="mstrTable">
<thead>
<tr>
<th>File Number</th>
<th>Date1</th>
<th>Date2</th>
<th>Status</th>
<th>Num.</th>
</tr>
</thead>
<tbody>
<tr>
<td>KABC</td>
<td>09/12/2002</td>
<td>09/12/2002</td>
<td>Submitted</td>
<td>0</td>
</tr>
<tr>
<td>KCBS</td>
<td>09/11/2002</td>
<td>09/11/2002</td>
<td>Approved</td>
<td>1 </td>
</tr>
<tr>
<td>WFLA</td>
<td>09/11/2002</td>
<td>09/11/2002</td>
<td>Submitted</td>
<td>2</td>
</tr>
<tr>
<td>WTSP</td>
<td>09/15/2002</td>
<td>09/15/2002</td>
<td>In-Progress</td>
<td>3</td>
</tr>
</tbody>
</table>
<br>
<input type="button" name="" value="GoTo 0" onmouseup="GoTo('mstrTable',0);" />
<input type="button" name="" value="GoTo 1" onmouseup="GoTo('mstrTable',1);" />
<input type="button" name="" value="GoTo 2" onmouseup="GoTo('mstrTable',2);" />
<input type="button" name="" value="GoTo 3" onmouseup="GoTo('mstrTable',3);" />
<script type="text/javascript">
var table = document.getElementById("mstrTable");
var thead = table.getElementsByTagName("thead")[0];
var tbody = table.getElementsByTagName("tbody")[0];
tbody.onclick = function (e) {
e = e || window.event;
var td = e.target || e.srcElement; //assumes there are no other elements inside the td
var row = td.parentNode;
//alert('Row is ' + (row.rowIndex - 1)) ### FOR LATER (DB BACK END USE) ###
if (this.lst&&this.lst!=row){
this.lst.className='';
}
row.className = row.className==="highlighted" ? "" : "highlighted";
this.lst=row;
}
thead.onclick = function (e) {
e = e || window.event;
var th = e.target || e.srcElement; //assumes there are no other elements in the th
//alert(th.innerHTML); ### FOR LATER (DB BACK END USE) ###
}
function GoTo(id,nu){
var obj=document.getElementById(id),trs=obj.getElementsByTagName('TR');;
nu = nu + 1
if (trs[nu]){
if (GoTo.lst&&GoTo.lst!=trs[nu]){
GoTo.lst.className='';
}
trs[nu].className = trs[nu].className=="highlighted" ? "" : "highlighted";
GoTo.lst=trs[nu];
}
}
</script>
</body>
</html>
You can quickly solve this with using a global for your highlighted row. An example at http://jsbin.com/atiwex/1/edit.