Tabelleneinträge mit JS
    
Brauner
    
    
      
    
  - javascript
 nicht angemeldet
 nicht angemeldetAuf meiner Seite befindet sich eine Tabelle mit folgendem Aussehen:
<table id="tablecomments">
<tr>
                  <td>Nickname (27.01.2007, 13:52): Kommentar <a href="#" onclick="loesche.comment(14, 'BzbOoJNC_TU'); return false;">Loeschen</a></td>
                </tr><tr>
                  <td>Nickname (27.01.2007, 13:51): Kommentar <a href="#" onclick="loesche.comment(13, 'BzbOoJNC_TU'); return false;">Loeschen</a></td>
                </tr><tr>
                  <td>Nickname (27.01.2007, 13:47): Kommentar <a href="#" onclick="loesche.comment(12, 'BzbOoJNC_TU'); return false;">Loeschen</a></td>
                </tr><tr>
                  <td>Nickname (27.01.2007, 13:47): Kommentar <a href="#" onclick="loesche.comment(11, 'BzbOoJNC_TU'); return false;">Loeschen</a></td>
                </tr><tr>
                  <td>Nicknameasd (27.01.2007, 13:42): Kommentarasdf <a href="#" onclick="loesche.comment(10, 'BzbOoJNC_TU'); return false;">Loeschen</a></td>
                </tr><tr>
                  <td>Nickname (27.01.2007, 13:41): Kommentartest <a href="#" onclick="loesche.comment(9, 'BzbOoJNC_TU'); return false;">Loeschen</a></td>
                </tr><tr>
                  <td>Nickname (26.01.2007, 19:40): Kommentar <a href="#" onclick="loesche.comment(8, 'BzbOoJNC_TU'); return false;">Loeschen</a></td>
                </tr><tr>
                  <td>Nickname (26.01.2007, 19:40): Kommentar <a href="#" onclick="loesche.comment(7, 'BzbOoJNC_TU'); return false;">Loeschen</a></td>
                </tr><tr>
                  <td>Nickname (26.01.2007, 19:38): Kommentara <a href="#" onclick="loesche.comment(6, 'BzbOoJNC_TU'); return false;">Loeschen</a></td>
                </tr><tr>
                  <td>Nickname (26.01.2007, 19:38): Kommentar <a href="#" onclick="loesche.comment(5, 'BzbOoJNC_TU'); return false;">Loeschen</a></td>
                </tr><tr><td>   <a href="#" onclick="comment.getpage(2,'BzbOoJNC_TU'); return false;">>></a></td></tr>
</table>
Mozilla Firefox:
Mithilfe von document.getElementById("tablecomments").innerHTML = pText;
verändere ich den Inhalt der Tablle ohne Probleme.
Internet Explorer:
Die Tabelle zu verändern, geht mit IE überhaupt nicht. Das pText habe ich mir ausgeben lassen, es entspricht dem, was zwischen den table tags steht, nur mit anderen Kommentaren/Nicknames, also genauso wie beim FF. Auch die Funktion document.getElementById("tablecomments").innerHTML = pText; wird mit Sicherheit ausgeführt.
Warum schafft IE es einfach nicht, die Tabelle zu verändern???
Ich habe schon mal ein wenig was über die DOM vom IE gelesen, die ich leider nicht ganz verstehe. Gibt es nichts entsprechendes zu ...innerHTML, was mit dem IE gehen würde?? Falls nicht, kann mir evtl jemand helfen, ...innerHTML entsprechend für den IE umzuwandeln?
Hallo,
Mozilla Firefox:
Mithilfe von document.getElementById("tablecomments").innerHTML = pText;
verändere ich den Inhalt der Tablle ohne Probleme.
Welchen Inhalt hat „pText“?
Ich habe schon mal ein wenig was über die DOM vom IE gelesen, die ich leider nicht ganz verstehe.
DOM/IE - Ist das nicht ein Widerspruch in sich?! ;-)
Falls du die Knotenerzeugung per DOM meinst: Kann ich dir nur empfehlen das zu lernen. Wenn du einmal damit umgehen kannst, kann das richtig Spaß machen.
Das Beispiel, aus der SELFHTML-Dokumentation finde ich aber auch viel zu kompliziert.
Ein Objekt das ein <div>-Element bildet und eine Überschrift und einen Textabsatz enthält, könnte z.B. so aussehen:
  
var BeispielObjekt = document.createElement("div"); //neues Div-Objekt erstellen  
with (BeispielObjekt){//um das Objekt nicht jedes Mal neu zu referenzieren  
 className = "mytd"; //so könnte man eine Klasse setzen  
 with (appendChild(document.createElement("h1"))){ //neues <h1>-Element erzeugen, einhängen und gleich wieder in ein „with“ packen  
  appendChild(document.createTextNode("Meine Überschrift")) //der <h1> einen Textknoten zuweisen  
 }  
 appendChild(document.createElement("p")){// einen Absatz einfügen  
  id = "Absatz_in_td"; //So kann man einem Knoten z.B. eine ID zuweisen  
  appendChild(document.createTextNode("hier könnte 'ne genze Menge Text stehen…"));  
 }  
}  
  
document.body.appendChild(BeispielObjekt); //So könnte man das Objekt z.B. am Ende des <body>-Elementes anhängen  
Der Vorteil einer derartigen Programmierung ist, dass man jederzeit noch was verändern oder dynamisch anpassen kann. innerHTML ist mir da zu viel gefrickel. Wenn du die Kommentare entfernst ist das auch garnicht so viel Quelltext…
Schade, dass es in PHP defaultmäßig kein DOM gibt, aber was man selber baut, versteht man dafür noch besser ;-)
Gibt es nichts entsprechendes zu ...innerHTML, was mit dem IE gehen würde??
Normalerweise müsste „innerHTML“ eher in gescheiten Browsern Probleme bereiten…
mfg. Daniel
Hi,
Warum schafft IE es einfach nicht, die Tabelle zu verändern???
Weil Du innerHTML falsch benutzt. Laut Doku von Microsoft (und die müssen es als Erfinder wissen) ist das hier nicht zulässig.
Ich habe schon mal ein wenig was über die DOM vom IE gelesen, die ich leider nicht ganz verstehe. Gibt es nichts entsprechendes zu ...innerHTML, was mit dem IE gehen würde??
Du kannst a) mit innerHTML die komplette Tabelle ins Dokument schreiben, oder mit DOM-Methoden (createElement() & Co.) die einzelnen Einträge. Beides funktioniert in allen modernen Browsern.
Gruß, Cybaer