Bork von Cork: firefox+javascript+doctype=>problem

Beitrag lesen

function animate() {
  for (i = 1; i < 10; i++) {
    var temp1 = document.getElementById("dots" + i).style;
    var temp2 = document.getElementById("dots" + (i + 1)).style;
    temp1.top = parseInt(temp2.top);
    temp1.left = parseInt(temp2.left);
  }
  document.getElementById("dots10").style.top = y+ "px";
  document.getElementById("dots10").style.left = x+ "px";
  setTimeout("animate()", 10);
}

funktioniert im ie jedoch nicht in firefox

Schalte beim Firefox im Menü Extras die Javascript-Konsole ein, Du erhältst dort die Fehlermeldung. Konkret stört er sich an einem Wert für top und left, gibt als Ort nur dummerweise "Zeile 0" an.
Der Fehler kann aber nur in den vier Zeilen liegen, in denen Du mit top und left hantierst. Wirfst Du in die for-Schleife ein alert(temp2.top);, wirst Du feststellen, dass das Problem auftritt, sobald der Wert ungleich Null ist.

Mit etwas Glück hast Du irgendwann eine göttliche Eingebung und Dir fällt auf, dass Du dots10 immer 'y + "px"' zuweist, temp1.top aber nur eine Zahl (jene aus parseInt()), ohne Einheit.
Und da liegt dann auch der Hund begraben: Bei einer Zuweisung à la 'top = 123' fragt sich der Browser "Was '123', Pixel, Punkt, Zentimeter, Hühner, Kartoffeln?". Es fehlt schlicht die Maßeinheit.

Dass es mit 0 auch ohne Einheit funktioniert, liegt in der Besonderheit des Wertes 0. Die Definition dazu findest Du im CSS2-Standard, Abschnitt 4.3.2. Speziell zur 0 steht dort "After the '0' length, the unit identifier is optional."