mehrere Elemente ausblenden
Benni
- javascript
Hallo
Auf meiner Homepage habe ich eine JS Funtkion eingebaut, mit der man zB <div> oder <table> ein und ausblenden kann:
function navi_tour(e1) {
if (document.getElementById) {
var display = document.getElementById(e1).style.display;
if(display == "block") {
document.getElementById(e1).style.display = "none";
}
if(display == "none") {
document.getElementById(e1).style.display = "block";
}
}
}
Ein Element das aus bzw eingeblendet werden kann sieht dann zB so aus:
<div id='test1' style='display:none'>TEST</div>
Funktioniert soweit auch sehr gut... jetzt hab ich nur eine Frage. Ist es möglich mit einem Klick alle Elemente die in ihrer id zB "test" enthalten auszublenden ohne dass ich alle einzeln auflisten muss.
Ich hoffe sowas wurde noch nicht so oft gefragt.... wusste nicht nach was ich genau suchen sollte.
Grüße Benni
Hi,
Ist es möglich mit einem Klick alle Elemente die in ihrer id zB "test" enthalten
es gibt keine Elemente, die in ihrer ID "test" enthalten. Eine ID ist atomar und *muss* daher immer komplett betrachtet werden.
ohne dass ich alle einzeln auflisten muss.
Das klingt für mich nach einer Klassifizierung.
Cheatah
Das klingt für mich nach einer Klassifizierung.
Wie funktioniert das genau mit der Klassifizierung... kann mir grad nichts darunter vorstellen.
Benni
Hi,
Wie funktioniert das genau mit der Klassifizierung...
es funktioniert _ziemlich_ genau, danke der Nachfrage ;-)
kann mir grad nichts darunter vorstellen.
Verwende das class-Attribut mit sinnbehafteten Bezeichnern für alle Elemente, die sich durch eine Gemeinsamkeit auszeichnen. Eine direkte Zugriffsmöglichkeit per DOM hast Du darauf nicht; Du kannst jedoch alle in Frage kommenden Elemente auf ihren className hin testen und - effizienterweise - dann in einem Array speichern.
Cheatah
Verwende das class-Attribut mit sinnbehafteten Bezeichnern für alle Elemente, die sich durch eine Gemeinsamkeit auszeichnen. Eine direkte Zugriffsmöglichkeit per DOM hast Du darauf nicht; Du kannst jedoch alle in Frage kommenden Elemente auf ihren className hin testen und - effizienterweise - dann in einem Array speichern.
Weißt du ein Beispiel oder Link wie das genau funktioniert. Bin ein Anfänger in JS und mir fehlt in der Hinsicht noch etwas die Kreativität....
ok ich habs. Ich habe die Funktion so abgeändert:
function navi_tour(e1) {
if (document.getElementById) {
var display = document.getElementById(e1).style.display;
var x = 0;
while(document.getElementsByName("tour")[x]) {
document.getElementsByName("tour")[x].style.display = "none";
x++;
}
if(display == "block") {
document.getElementById(e1).style.display = "none";
}
if(display == "none") {
document.getElementById(e1).style.display = "block";
}
}
}
Ich habe jedem Element den name "tour" gegeben und vor jedem klick werden erst mal alle tour elemente ausgeblendet.
Hi,
Ich habe jedem Element den name "tour" gegeben und vor jedem klick werden erst mal alle tour elemente ausgeblendet.
Nur wenige Elemente haben ueberhaupt eine name-Attribut - Tabellen und Divs bspw. gehoeren _nicht_ dazu. Wenn es mit solchen "funktioniert", dann nur rein zufaellig in dem Browser, in dem du testest.
Nutze das class-Attribut, wie schon gesagt - und suche hier im Forum oder per Google nach einer Funktion getElementsByClassName.
MfG ChrisB
ok. Geht mit dem IE nicht. Hast recht.
ich habe jetzt eine Lösung hier im Forum gefunden, leider funktioniert die auch nur mit ff und nicht mit ie. Was ist daran "falsch":
var elems = document.getElementsByTagName("div");
var laenge = elems.length;
for(var i = 0; i < laenge; i++) {
var elem = elems[i];
var cls = elem.getAttribute("class");
if(cls == "tour_detail") {
elem.style.display = "none";
}
}
es sollen nach wie vor alle Elemente mit der Klasse "tour_detail" ausgeblendet werden (sind natürlich div's).
ah jetzt hab ichs.... getAttribute anscheinend nicht. Habe es durch className ersetzt.