HH-Horst: getElementById

Das folgende Skript soll aus einer Tabelle einzelne Zellen auslesen und daraus eine neue Zeile machen. Unter IE funktioniert es und unter Firefox bisher auch. Nur mit den neuesten Firefox-Versionen wird neuerdings nur noch "undefined" in die Tabelle geschrieben.

Was muss ich jetzt ändern ?

<html>  
<head>  
<title>Test</title>  
  
<script type="text/javascript">  
var Zeile = 0;  
function ZeileEinfuegen () {  
  if (Zeile == 0)  
    document.getElementById("Tabelle_2").deleteRow(0);  
  var TR = document.getElementById("Tabelle_2").insertRow(Zeile);  
  Zeile += 1;  
  
  var TD1 = document.createElement("td");  
  var TD1text = document.createTextNode(document.getElementById("a1").innerText);  
  TD1.appendChild(TD1text);  
  
  var TD2 = document.createElement("td");  
  var TD2text = document.createTextNode(document.getElementById("a2").innerText);  
  TD2.appendChild(TD2text);  
  
  TR.appendChild(TD1);  
  TR.appendChild(TD2);  
  
}  
</script>  
  
</head>  
  
<body>  
  
<table border="1">  
<tr><td id="a1">1</td><td id="b1">2</td></tr>  
<tr><td id="a2">3</td><td id="b2">4</td></tr>  
<tr><td id="a3">5</td><td id="b3">6</td></tr>  
<tr><td id="a4">7</td><td id="b4">8</td></tr>  
</table>  
  
  
<input type="button" value=" OK " onclick="ZeileEinfuegen()"><br>  
  
  
<table id="Tabelle_2" border="1">  
<tr><td>Eine Tabelle</td></tr>  
</table>  
</body>  
</html>
  1. Was muss ich jetzt ändern ?

    [code lang=javascript]<html>

    Zu Anfang, was hälst du von einem vernüftigen DOCTYPE?

    var TD1text = document.createTextNode(document.getElementById("a1").innerText);

    innerText kann kein Firefox, d.h. deine Beobachtung das es bisher funktionierte war falsch. In dem Fall kannst du auf innerHTML ausweichen.

    Struppi.

    1. "InnerHTML" kann ich nicht wirklich brauchen, da ich nur die Zelleninhalte brauche und nicht die Formatierung.
      Trotzdem danke für die schnelle Antwort !

      1. Hi,

        "InnerHTML" kann ich nicht wirklich brauchen, da ich nur die Zelleninhalte brauche und nicht die Formatierung.

        Von welcher Formatierung redest du? In deinem Beispiel gibt es keinerlei Formatierung - und auch nicht das, was du vermutlich wirklich meinst, nämlich zusätzliche HTML-Elemente in den Tabellenzellen.
        Je nachdem, wie diese aussehen, könntest du direkt auf den Inhalt des/der Textknoten zugreifen. Oder du nutzt für den FF anstelle von innerText dessen ebenfalls proprietäre Eigenschaft textContent. Dann musst du aber noch gründlich testen, ob die anderen Browser wenigstens eins von beidem unterstützen.

        MfG ChrisB

        --
        “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
      2. "InnerHTML" kann ich nicht wirklich brauchen, da ich nur die Zelleninhalte brauche und nicht die Formatierung.

        Auch InnerHTML gibt es nicht. Die Eigenschaft heißt innerHTML.
        Wenn du nur die Textknoten brauchst, dann musst du diese ermitteln über childNodes

        Struppi.