Unbekannte Anzahl an TR Zeilen verbergen
phomeXa
- javascript
Ich will für eine Forensoftware eine unbestimmte Anzahl an TR Zeilen verbergen bzw. anzeigen lassen. Bisher sieht mein Script so aus:
if (document.getElementsByName('table_' + pre)[0].style.display == ''){
for (var tr in document.getElementsByName('table_' + pre))
tr.style.display = 'none';
document.getElementsByName('img_' + pre)[0].src = 'plus.jpg';
}else{
for (var tr in document.getElementsByName('table_' + pre))
tr.style.display = '';
document.getElementsByName('img_' + pre)[0].src = 'minus.jpg';
}
Es gibt also mehrere Zeilen, die jeweils "table_xxx" heißen. Leider funktioniert es nicht wirklich so wie es soll. Weder unter Firefox noch unter IE. Hat irgendwer eine Idee, wie's besser geht?
Gruß
phomeXa
Es gibt also mehrere Zeilen, die jeweils "table_xxx" heißen. Leider funktioniert es nicht wirklich so wie es soll. Weder unter Firefox noch unter IE. Hat irgendwer eine Idee, wie's besser geht?
TR hat kein Attribut name.
Struppi.
Es gibt also mehrere Zeilen, die jeweils "table_xxx" heißen. Leider funktioniert es nicht wirklich so wie es soll. Weder unter Firefox noch unter IE. Hat irgendwer eine Idee, wie's besser geht?
TR hat kein Attribut name.
Andere Ideen? Extra eine neue Tabelle aufmachen (die ich dann verstecken kann) wollte ich nicht.
hi,
TR hat kein Attribut name.
Andere Ideen?
klasse.
http://de.selfhtml.org/html/attribute/allgemeine.htm#uebersicht
http://de.selfhtml.org/javascript/objekte/all.htm#class_name
gruß,
wahsaga
Hi,
Ich will für eine Forensoftware eine unbestimmte Anzahl an TR Zeilen verbergen bzw. anzeigen lassen. Bisher sieht mein Script so aus:
ggf. mehrere tbody-Elemente mit id verwenden (keines der tabelleninternen Elemente hat ein name-Attribut) und diese tbody-Elemente ein-/ausblenden.
cu,
Andreas
Hi,
Ich will für eine Forensoftware eine unbestimmte Anzahl an TR Zeilen verbergen bzw. anzeigen lassen. Bisher sieht mein Script so aus:
ggf. mehrere tbody-Elemente mit id verwenden (keines der tabelleninternen Elemente hat ein name-Attribut) und diese tbody-Elemente ein-/ausblenden.
cu,
Andreas
Also ich hab die Dinger jetzt folgendermaßen definiert:
<TBODY ID=table_25 STYLE="display:none;">
...
</TBODY>
Funktioniert auch wunderbar, wird nicht angezeigt. Das Script sieht folgendermaßen aus:
function toggleVis(pre) {
if (document.getElementByID('table_' + pre).style.display == ''){
document.getElementByID('table_' + pre).style.display = 'none';
...
}else{
document.getElementByID('table_' + pre).style.display = '';
...
}
}
Und wird über toggleVis(25); aufgerufen, aber es funktioniert nicht. Die IE Fehlermeldungen helfen leider nicht weiter und FF hab ich auf der Arbeit nicht. Sieht jemand den Fehler?
Hallo phomeXa,
if (document.getElementByID('table_' + pre).style.display == ''){
mal abgesehen davon, dass du das 'd' von getElementById klein schreiben musst - lass dir mal ausgeben, welchen Wert style.display vor dieser Zeile hat.
Grüße aus Nürnberg
Tobias
Hallo,
if (document.getElementByID('table_' + pre).style.display == ''){
mal abgesehen davon, dass du das 'd' von getElementById klein schreiben musst - lass dir mal ausgeben, welchen Wert style.display vor dieser Zeile hat.
Natürlich »none«, wenn style="display:none" im Quelltext steht. Wenn kein style-Attribut im Quelltext steht, ist .style.display wie in der Abfrage vermutet ein leerer String. Worauf willst du hinaus?
Mathias
Hallo Mathias,
if (document.getElementByID('table_' + pre).style.display == ''){
mal abgesehen davon, dass du das 'd' von getElementById klein schreiben musst - lass dir mal ausgeben, welchen Wert style.display vor dieser Zeile hat.
Natürlich »none«, wenn style="display:none" im Quelltext steht. Wenn kein style-Attribut im Quelltext steht, ist .style.display wie in der Abfrage vermutet ein leerer String. Worauf willst du hinaus?
Sorry, mein Fehler - ich war fälschlicherweise davon ausgegangen, dass (sofern nirgends ein anderer Wert angegeben ist) .style.display den Default-Wert enthält (im Falle von tbody eben "table-row-group") - wenn das der Fall gewesen wäre, würde die Abfrage auf =='' natürlich schiefgehen.
Grüße aus Nürnberg
Tobias
function toggleVis(pre) {
if (document.getElementByID('table_' + pre).style.display == ''){
document.getElementByID('table_' + pre).style.display = 'none';
...
}else{
document.getElementByID('table_' + pre).style.display = '';
...
}
}
Wenn du davon ausgehst, dass im Quellcode immer style="display:none" steht, sind diese Abfragen nicht notwendig. Eine Abfrage ist aber nicht verkehrt.
Das einzige Problem ist, dass der MSIE nicht mit display:table-row-group zurechtkommt, sondern display:block fordert. Dementsprechend braucht man eine MSIE-Abfrage, am besten fragt man über currentStyle ab, ob der display-Wert eines sichtbaren tbody-Elements auf »block« steht. Das ist die einzig zuverlässige und zukunftsfähige Abfragemöglichkeit.
var tbody_block = false;
function toggleVis (pre) {
var tbody = document.getElementById("table_" + pre);
if (tbody.style.display != "none") {
if (tbody.currentStyle && tbody.currentStyle.display == "block")
tbody_block = true;
tbody.style.display = "none";
} else {
if (tbody_block)
tbody.style.display = "block";
else
tbody.style.display = "table-row-group";
}
}
Bei dem Beispiel muss die Funktion zuerst auf ein sichtbaren tbody angewendet werden, um ihn zu verstecken, ansonsten schlägt das Sichtbarmachen fehl. (Man kann natürlich auch beim Laden des Dokuments ein beliebigen sichtbaren tbody als Indikator benutzen, um tbody_block zu setzen.)
Mathias
Hi,
Hat irgendwer eine Idee, wie's besser geht?
Gruß, Cybaer