window.document.all[id].style.backgroundColor = color;
Verwende document.getElementById statt document.all.
document.all ist eine IE-5-spezifische Technik, die andere Browser nur aus Kompatibilitätsgründen unterstützen.
Firefox sollte dir auch eine entsprechende Warnung in der JavaScript-Konsole ausgeben.
}
function highlight(id)
{
window.setTimeout("forcecolor('"+id+"', '#aaaaaa')", 0);
Das kannst du so schreiben (anonyme Funktion übergeben):
window.setTimeout(function () { forcecolor(id, '#aaaaaa'); }, 123);
Und musst dir um das Zusammenbauen eines Strings keine Gedanken machen
Den ersten Aufruf musst du nicht verzögern (setTimeout mit 0 macht hier keinen Sinn).
var element = e.target;
Browserübergreifend:
var element = e.target || e.srcElement;
http://redaktion.selfhtml.org/selfhtml-preview/javascript/einbindung.html#currenttarget-target
while ((element != "[object HTMLTableRowElement]") && (element != null))
Du gehst hier davon aus, dass der Browser das Elementobjekt genau auf diese Weise zu einem String umwandelt. Das ist aber nicht der Fall, also prüfe
element.nodeName.toLowerCase() == 'tr'
Das Element kann nicht null sein, jedes Ereignis hat ein Zielelement. Wozu die Abfrage?
if (element == "[object HTMLTableRowElement]")
Siehe oben.
Mathias