Zeilenanzahl von Tabelle
Hickie
- javascript
Hallo,
ich erstelle auf meiner Website eine Tabelle mit dynamischen HTML. Nun möchte ich mit javascript gerne die Anzahl der Zeilen ermitteln. Ich weiß, dass die Methoden getElementById() und getElementsByTagName() verwenden muss, erhalte aber als Wert "0" zurück, obwohl die Tabelle sieben Zeilen umfasst. Könnt ihr mir bitte helfen und meinen javascript-code berichtigen?!
Hier mein momentaner Quelltext:
<script type="text/javascript">
TA=document.getElementById("modul01");
ZA=TA.getElementsByTagName("tr").length;
document.write(ZA);
</script>
... //Es folgt die Erzeugung der Tabelle
<object id="mannschaft" classid="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83" width="192" height="192">
<param name="DataURL" value="mannschaft.txt">
<param name="UseHeader" value="true">
<param name="FieldDelim" value="%">
<param name="Sort" value="name">
</object>
<table id="mannschaft" datasrc="#mannschaft" dataformatas="html" cellSpacing="0" width="99%" border="1">
<tr>
<td width="33%" height="50" align="center" class="nav-1"><a class="navigation-1" datafld="Link"><span datafld="eMail"></span></a></td>
<td width="33%" height="50" align="center" class="ueberschrift-verlinkt"><a class="text-grau"><span datafld="telefon"></span></a></td>
<tdwidth="33%"height="50"align="center"><a><spandatafld="name"></span></a></td>
</tr>
</table>
...
abend,
TA=document.getElementById("modul01");
------------------------------^ und wo ist die ID?
mfg,
(tanz das)
Z.N.S.
TA=document.getElementById("modul01");
------------------------------^ und wo ist die ID?
Oh, Entschuldigung in meinem Quelltext steht dort:
TA=document.getElementById("mannschaft");
Habe es aus einer anderen Website herauskopiert gehabt.
Hi,
von Z.N.S' Einwand abgesehen: Es ist *immer* ratsam, Zählungen erst durchzuführen, wenn das, was gezählt werden soll, bereits existiert (also Script *nach* der Tabelle oder bei onLoad).
JavaScript kann einiges - hellsehen m.W. jedoch nicht.
Gruß, Cybaer
Danke für den Hinweis, habe es jetzt hinter die Tabelle gesetzt. Bekomme als Rückgabewert immer noch "0" heraus (Richtig wären sieben!).
Hi,
Danke für den Hinweis, habe es jetzt hinter die Tabelle gesetzt. Bekomme als Rückgabewert immer noch "0" heraus (Richtig wären sieben!).
Na, dann darfst Du jetzt den zusammengeklauten Code von den Fehlern die beim Klauen entstanden sind befreien. Z.B. ...
<tdwidth="33%"height="50"align="center"><a><spandatafld="name"></span>
... gibt es hier die geöffneten und nicht geschlossenen Tags TDWIDTH und SPANDATAFLD, die irgendwie jeder Sinnhaftigkeit entbehren.
Tip: Jag deine Seiten mal durch einen Validator.
Gruß, Cybaer
<tdwidth="33%"height="50"align="center"><a><spandatafld="name"></span>
... gibt es hier die geöffneten und nicht geschlossenen Tags TDWIDTH und SPANDATAFLD, die irgendwie jeder Sinnhaftigkeit entbehren.
Tip: Jag deine Seiten mal durch einen Validator.
So zusammengeklaut wie du denkst ist der Quellcode gar nicht. Deine beiden Anmerkungen sind Rechtschreibfehler meinerseits, die mir beim Kopieren in dieses Forum unterlaufen sind. Dieser Fehler ist nicht im Quelltext meines HTML-Editors nicht vorhanden.
Die zitierte Zeile lautet:
<td width="33%" height="50" align="center"><a><span datafld="name"></span>
Hi,
So zusammengeklaut wie du denkst ist der Quellcode gar nicht.
Ich habe ja auch geholfen. ;-)
Dieser Fehler ist nicht im Quelltext meines HTML-Editors nicht vorhanden.
Also wenn ich all diese Fehler raushaue, gibt's bei mir das korrekte Ergebnis.
Gruß, Cybaer
Mit dem berichtigten Quelltext läuft das Javascript immer noch nicht. Bitte um Ratschläge...
Hier mein berichtigter Quelltext:
... //Es folgt die Erzeugung der Tabelle
<object id="mannschaft" classid="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83" width="192" height="192">
<param name="DataURL" value="mannschaft.txt">
<param name="UseHeader" value="true">
<param name="FieldDelim" value="%">
<param name="Sort" value="name">
</object><table id="mannschaft" datasrc="#mannschaft" dataformatas="html" cellSpacing="0" width="99%" border="1">
<tr>
<td width="33%" height="50" align="center" class="nav-1"><a class="navigation-1" datafld="Link"><span datafld="eMail"></span></a></td>
<td width="33%" height="50" align="center" class="ueberschrift-verlinkt"><a class="text-grau"><span datafld="telefon"></span></a></td>
<tdwidth="33%"height="50"align="center"><a><spandatafld="name"></span></a></td>
</tr>
</table><script type="text/javascript">
TA=document.getElementById("mannschaft");
ZA=TA.getElementsByTagName("tr").length;
document.write(ZA);</script>
hi,
Mit dem berichtigten Quelltext läuft das Javascript immer noch nicht.
doch, tut es, würde ich sagen. (unter der annahme, dass du immer noch 0 herausbekommst.)
deine tabelle hat _genau ein_ <tr>, bei nullbasiertem index ergibt ZA=TA.getElementsByTagName("tr").length folglich den wert 0, weil sich ein element in der collection befindet.
wenn du davon ausgehst, dass die von dir verwendete "dateneinbindung á la microsoft" zusätzliche tabellenzeilen erzeugen würde, gehst du m.E. falsch.
ruß,
wahsaga
wenn du davon ausgehst, dass die von dir verwendete "dateneinbindung á la microsoft" zusätzliche tabellenzeilen erzeugen würde, gehst du m.E. falsch.
Was sollte ich deiner Meinung nach dann tun?
hi,
wenn du davon ausgehst, dass die von dir verwendete "dateneinbindung á la microsoft" zusätzliche tabellenzeilen erzeugen würde, gehst du m.E. falsch.
Was sollte ich deiner Meinung nach dann tun?
auf das zählen der zeilen verzichten, oder die einbindung der daten anders (serverseitig, und damit auch kompatibler) lösen.
gruß,
wahsaga
Hi,
deine tabelle hat _genau ein_ <tr>, bei nullbasiertem index ergibt ZA=TA.getElementsByTagName("tr").length folglich den wert 0, weil sich ein element in der collection befindet.
Falls Du JavaScript programmierst, wäre jetzt der Zeitpunkt gekommen, deine Skripte zu überprüfen. ;)
Das erste Element hat die Indexnr. 0. Die Anzahl der Elemente (length) ist aber natürlich trotzdem 1. =:-o
Übrigens egal ob Du Collections oder Strings betrachtest.
Gruß, Cybaer
hi,
Falls Du JavaScript programmierst, wäre jetzt der Zeitpunkt gekommen, deine Skripte zu überprüfen. ;)
Das erste Element hat die Indexnr. 0. Die Anzahl der Elemente (length) ist aber natürlich trotzdem 1. =:-o
ja, hast natürlich recht, danke für die korrektur.
dann liegt _dieser_ fehler (das er 0 erhält) vermutlich doch an der doppelten verwendung des namens "Mannschaft".
der _konzeptionellen_ fehler, dass sich die TRs durch die MS-dateneinbindung nicht vermehren werden, beliebt aber m.E. trotzdem bestehen.
gruß,
wahsaga
dann liegt _dieser_ fehler (das er 0 erhält) vermutlich doch an der doppelten verwendung des namens "Mannschaft".
der _konzeptionellen_ fehler, dass sich die TRs durch die MS-dateneinbindung nicht vermehren werden, beliebt aber m.E. trotzdem bestehen.
Das hast du richtig erfasst wahsaga.
Hi,
dann liegt _dieser_ fehler (das er 0 erhält) vermutlich doch an der doppelten verwendung des namens "Mannschaft".
Nein, Namen dürfen mehrfach vorkommen (sonst gäbe es keine Möglichkeit, Radiobuttons sinnvoll zu nutzen).
Aber er hat in diesem Fall ja auch gar nicht einen Namen, sondern eine id mehrfach verwendet ...
cu,
Andreas
Moin,
die object id deines activex-controls und die id deiner table lauten beide "Mannschaft". Ich nehme an, das ist der Fehler. Der untere Schnipsel für sich funzt einwandfrei.
<table id=mannschaft>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
</table>
<script language=Javascript>
TA=document.getElementById("mannschaft");
ZA=TA.getElementsByTagName("tr").length;
document.write(ZA);
</script>
cu mipu
Hi,
<object id="mannschaft" classid="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83" width="192" height="192">
<param name="DataURL" value="mannschaft.txt">
<param name="UseHeader" value="true">
<param name="FieldDelim" value="%">
<param name="Sort" value="name">
</object>
<table id="mannschaft" datasrc="#mannschaft" dataformatas="html" cellSpacing="0" width="99%" border="1">
TA=document.getElementById("mannschaft");
ZA=TA.getElementsByTagName("tr").length;
Wieviele tr-Elemente befinden sich Deiner Zählung nach in dem Object-Element?
Wie oft darf ein bestimmter id-Wert in einem Dokument vorkommen?
Was hat datasrc mit HTML zu tun?
Was hat dataformatas mit HTML zu tun? ...
cu,
Andreas
Hi,
Was hat datasrc mit HTML zu tun?
Was hat dataformatas mit HTML zu tun? ...
Sie stören aber auch nicht.
Gruß, Cybaer