Jeg har lige lavet en ultralet debugversion af mit forslag og det lader til at der bliver markeret noget og at disse markeringer bliver registreret i Marked-arrayet. Jeg har lavet en dummy-funktion til getContent, da jeg ikke synes det er relevant at lave en server-dims, der kan returnere data for at få frontend til at fungere... det har i det mindste ikke meget med det aktuelle problem at gøre - såvidt jeg kan se.
Det ser ud til at fungere nogenlunde i FF 1.5.0.6 og IE (markring og afmakering af linier, samt hovereffekt):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
http://www.w3.org/TR/html4/loose.dtd"><html>
<head>
<title>Titel</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<style type="text/css" rel="stylesheet">
.even { background-color: white; }
.odd { background-color: #efefef; }
tr:hover, .hover { background-color: blue; }
.marked { background-color: lightblue; }
</style>
<script type="text/javascript">
var Marked = new Array();
var uA = navigator.userAgent.toLowerCase();
function markRows()
{
var rows = document.getElementsByTagName('tr');
for ( var i = 0; i < rows.length; i++ )
{
if ( 'odd' != getClassName(rows[i]).substr(0,3) && 'even' != getClassName(rows[i]).substr(0,4) ) {
continue;
}
if (uA.indexOf("msie")!=-1 && uA.indexOf("opera")==-1)
{
// but only for IE, other browsers are handled by :hover in css
rows[i].onmouseover = function() { setClassName(this, getClassName(this) + ' hover'); }
rows[i].onmouseout = function() { setClassName(this, getClassName(this).replace( ' hover', '' )); }
}
rows[i].onmousedown = function() {
var unique_id;
var row;
row = this.getElementsByTagName( 'input' )[0];
if ( row && row.type == 'hidden' ) {
unique_id = row.value;
}
else if ( this.getAttribute("id").length > 0 ) {
unique_id = this.getAttribute("id");
}
else {
alert('Rækken havde ikke noget ID');
return;
}
if ( typeof(Marked[unique_id]) == 'undefined' || !Marked[unique_id] ) {
Marked[unique_id] = true;
}
else {
Marked[unique_id] = false;
}
if ( Marked[unique_id] ) {
setClassName(this,getClassName(this) + ' marked');
getContent('resources/getFromScheduled.php', '?Id='+unique_id, 'SelectMenu');
}
else {
setClassName(this, getClassName(this).replace(' marked', ''));
document.getElementById('SelectMenu').innerHTML = '';
}
document.getElementById('SelectMenu').innerHTML = Marked.join(",");
}
}
}
window.onload=markRows;
function getContent() {
return "";
}
function getClassName(obj) {
if (uA.indexOf("msie")!=-1 && uA.indexOf("opera")==-1) {
return obj.className;
return obj.getAttribute("className");
}
else {
return obj.getAttribute("class");
}
}
function setClassName(obj, value) {
if (uA.indexOf("msie")!=-1 && uA.indexOf("opera")==-1) {
obj.className = value;
//obj.setAttribute("className", value);
}
else {
obj.setAttribute("class", value);
}
}
</script>
</head>
<body>
<table>
<tr class="odd" id="1">
<td>kahsdkjhaasd </td>
<td>kahsdkjhaasd </td>
<td>kahsdkjhaasd </td>
<td>kahsdkjhaasd</td>
</tr>
<tr class="even" id="2">
<td>kahsdkjhaasd </td>
<td>kahsdkjhaasd </td>
<td>kahsdkjhaasd </td>
<td>kahsdkjhaasd</td>
</tr>
<tr class="odd" id="3">
<td>kahsdkjhaasd </td>
<td>kahsdkjhaasd </td>
<td>kahsdkjhaasd </td>
<td>kahsdkjhaasd</td>
</tr>
<tr class="even" id="4">
<td>kahsdkjhaasd </td>
<td>kahsdkjhaasd </td>
<td>kahsdkjhaasd </td>
<td>kahsdkjhaasd</td>
</tr>
<tr class="odd" id="5">
<td>kahsdkjhaasd </td>
<td>kahsdkjhaasd </td>
<td>kahsdkjhaasd </td>
<td>kahsdkjhaasd</td>
</tr>
<tr class="even" id="6">
<td>kahsdkjhaasd </td>
<td>kahsdkjhaasd </td>
<td>kahsdkjhaasd </td>
<td>kahsdkjhaasd</td>
</tr>
</table>
<div id="SelectMenu"></div>
</body>
</html>