dedlfix: Zeilen, Spalten hervorheben beim Überfahren mit der Maus

Beitrag lesen

echo $begrüßung;

Warum der Startwert im IE 'hoveredColNo = 0' und nicht wie in anderen Browser 'hoveredColNo = -1' sein muss, würde ich selbst gerne wissen.
Hat jemand eine Idee?

Etwas Kommentierung des Codes käme dem Verständnis zugute.

if (window.addEventListener) window.addEventListener("mouseover", highlight, false);
else if (document.attachEvent) document.attachEvent("onmouseover", highlightIE);

Man erkennt, dass das eine Browserweiche sein soll am IE des Funktionsnamens, wenn man weiß, dass Browserweichen nötig sind. Ist das Allgemeinwissen auch unter Anfängern?

var hoveredRow = target.parentNode;
  var tbody = hoveredRow.parentNode;
  var table = tbody.parentNode;

Wozu brauchst du den tbody als Variable? Ein

var table = hoveredRow.parentNode.parentNode; // tbody überspringen

wäre ebenso verständlich und ressourcenschonender. Im Grunde braucht es nicht einmal eine Variable table, denn darauf greifst du zumindest in dieser Funktion nur einmal zu und könntest dort gleich hoveredRow.parentNode.parentNode notieren.

for (var childNode = target, hoveredColNo = -1; childNode = childNode.previousSibling;)

Das ist ja eine ganz gemeine Geschichte. Man erwartet ja im zweiten Teil die Abbruchbedingung. Deshalb las mein Unterbewusstsein erst einmal == statt = und wunderte sich über das fehlende Weiterschalten im dritten Teil. Dass hier Abbruchbedingung und Weiterschaltung in einem notiert ist gehört kommentiert, finde ich.

if (childNode.nodeType == 3) hoveredColNo++;

Mut zur Lücke oder warum zählst du hier Textnodes? Kein Wunder, dass du mit -1 anfangen musst, denn es gibt einen Whitespace mehr als <td>s. Außerdem gibt es die nur in deinem Beispiel. In der Originalaufgabe stehen die Zellen lückenlos hintereinander.

echo "$verabschiedung $name";