JürgenB: DOM - Tabelleninhalt auslesen. Klappt nicht im IE?!?!

Beitrag lesen

Hallo Thomas,

der Zugriff über die Knoten (firstChild...) ist nicht zu empfehlen, da Leerzeichen und Zeilenumbrüche zwischen den Tags auch als Knoten interpretiert werden - und leider nicht von allen Browsern gleich. Ich greife daher auf Tabellenfelder so zu:

  
 var tab=document.getElementById(TabId);  
 var tbdy=tab.getElementsByTagName("tbody")[0];  
 var tz=tbdy.getElementsByTagName("tr");  
 var nzeilen=tz.length;  
 var nspalten=tz[0].getElementsByTagName("td").length;  
  
   for(var z=0;z<nzeilen;z++) {  
    var zeile=tz[z].getElementsByTagName("td");  
    Arr[z]=new Array(nspalten);  
    for(var s=0;s<nspalten;s++)  
//     Arr[z][s]=zeile[s].firstChild.nodeValue;  
     Arr[z][s]=zeile[s].innerHTML;  
   }  
  
  for(var z=0;z<nzeilen;z++) {  
   var zeile=tz[z].getElementsByTagName("td");  
   for(var s=0;s<nspalten;s++) {  
//    zeile[s].firstChild.nodeValue=Arr[z][s];  
    zeile[s].innerHTML=""; // für den MAC-IE  
    zeile[s].innerHTML=Arr[z][s];  
   }  
  }  

siehe auch http://www.j-berkemeier.de/TableSort.html

Das sollte sich Problemlos auch auf Kopf- und Fußzeilen erweitern lassen. Die Tabelle darf bei diesem Algorithmus aber keine colspan und rowspan enthalten. Ob besser firstChild.nodeValue oder innerHTML eingesetzt wird, hängt vom Inhalt der Tabellenfelder ab.

Gruß, Jürgen