[HTML/JS] Alle Links auf einmal aktivieren

M

Mr. Snoot

Gast
Hio,

ich hab mir für meine MP3s ne HTML-Datei erstellt (am besten mal das Beispiel im Anhang öffnen, dann wirds leichter verständlich).

In dieser Liste habe ich also immer eine Zeile mit dem Künstler. Klicke ich diesen an werden die einzelnen Alben angezeigt, und ein Klick darauf zeigt die einzelnen Titel an.

Dies geschieht mittels Javascript:
HTML:
<a href="javascript:show('Künstler_');">Künstler</a>

Und die Tabelle dazu enthält den Code:

<table style="display:none;" id="showKünstler_" width="100%">
Gibt es eine Möglichkeit, dass alle Links auf einmal aktiviert werden; dass also die gesamte MP3-Liste über einen Link aus-/eingeklappt wird?

Ich weiß, dass sowas generell möglich ist - aber kann man so eine Funktion auch nachträglich da einbauen?
 

Anhänge

Zuletzt bearbeitet:
Also gehen tut das ganz sicher.

Deine show Methode erwartet eine konkrete id, was eingeblendet werden soll. Jetzt muss du nur eine Methode "showall" machen, welche anstatt nur ein ganz konkretes Element, über alle Elemente des document loopt und die dann anzeigt.

Da Du nicht alle Elemente hiden oder showen möchtest, musst Du im Loop über die Elemente des document, den Elementname überprüfen, ob es ein Element mit dem Namen "show" und irgendwas ist. Wenn das der Fall ist, dann kannst Du es ein- oder ausblenden.

Klar vom Prinzip her? ;)

EDIT:
Ich denke es sollte gehen, sofern sich alle Elemente die Du auf- und zu machen willst an eine "Namenskonvention" halten. Aber soweit ich das sehe, tun sie das. Also ist es ein Versuch wert...
 
Zuletzt bearbeitet:
Ja, vom Prinzip her klar - kenn mich aber mit JS nicht weiter aus :D

Also was ganz einfaches ala <a href="javascript:show('*');"> gibt's da nicht, wobei * ne Wildcard wäre?

Was theoretisch auch ginge, dass von Anfang an alle Links ausgeklappt sind - dann würd ich halt einfach einmal ne Seite zugeklappt und eine ausgeklappt machen und zwischen den zwei hin und her verlinken. Kann man das vielleicht einfach hinbekommen?
 
Zuletzt bearbeitet:
Aha Du Schlingel! Du willst eine fertige Lösung, das hab ich mir doch glatt gedacht :evillol:

Ne, ist klar das geht anders da muss man schon was in JavaScript programmieren. Lass mich mal schnell nachgucken...
 
Falls du die Möglichkeit hast - gib jeder Zelle den namen name="allesZeigen". Dann kannst du über
document.getElementByName("allesZeigen") alle Objekte mit dem Namen finden.

Edit: Und natürlich anzeigen:
Code:
var alleObjekte = document.getElementByName("allesZeigen")
for(var zaehler=0;zaehler<alleObjekte.length;zaehler++) {
  var tdNode = alleObjekte[zaehler];
  if(tdNode.style.display == 'none') {
  	tdNode.style.display = '';
  }else{
  	tdNode.style.display = 'none';
  }
}
*glubsch* Nicht getestet - aber aufgrund der Logik würd ich grünes Licht geben :)

PS: Was ist das für ne Matrix in deiner Signatur Gauder :p?
 
Zuletzt bearbeitet:
So: Mein Kollege oben war zwar schneller im Posten eines Lösungsansatzes, aber ich kann Dir die Lösung posten. Ist nur eine Frage des Geldes, wie alles auf der Welt ;-) Nein, ich schenks Dir, war lustig mal wieder was einfaches in JS zu coden...

Dort wo Du die Link willst:
Code:
<p>
<a href="javascript:showAll();">Expand all</a> | <a href="javascript:hideAll();">Collapse all</a>
</p>
Und der JavaScript Block muss ebenfalls eingefügt werden:
Code:
<script language="JavaScript1.2" type="text/javascript">
function showAll() {
for(var i=0; i<document.all.length; i++) {
    var eltObj = document.all[i];
    if (eltObj.id.indexOf("show") > -1) {        
        eltObj.style.display = '';
    }
}
}
function hideAll() {
for(var i=0; i<document.all.length; i++) {
    var eltObj = document.all[i];
    if (eltObj.id.indexOf("show") > -1) {        
        eltObj.style.display = 'none';
    }
}
}
</script>

Am Rande bemerkt: Das Script funktioniert nur solange, wie die Elemente die angezeigt werden auch die Zeichenfolge "show" in der id besitzt. Wenn du andere Elemente mit "show" in der id hast, dann gibts probleme ;-)
 

Anhänge

Zuletzt bearbeitet:
kaepten schrieb:
Aha Du Schlingel! Du willst eine fertige Lösung, das hab ich mir doch glatt gedacht :evillol:
Das war deine Idee ;)

Aber natürlich trotzdem recht herzlichen Dank - auch an Enigma :)

Jetzt muss ich's nur noch schaffen, dass das Script beim Erzeugen der HTML-Datei korrekt eingebaut wird; hat nochmal wer ne Sekunde ..? (ne Spaß :p)

Also, danke vielmals kaepten - klappt wunderbar :daumen:
 
Zuletzt bearbeitet:
Schaut schön aus!

Das erinnert mich an das Proggie was ich verwende: Helium2. Da kannst Du Dir recht ähnlich auch solche "Sichten" zeigen (und auf Wunsch auch exportieren) lassen - allerdings "realtime" weil es sich um ein Mp3 Verwaltungsprogramm handelt. Kostet halt was, aber kannst es Dir ja mal als Trial anschauen. Bei der Zahl Deiner Alben wäre das vlt. noch interessant für Dich!?

http://www.helium2.com
 
Das Programm hat ich schonmal in den Fingern - allerdings ist mir das schon zu umfangreich und dadurch auch zu unübersichtlich.

Allerdings hat das Proramm nen Klasse Tag-Editor; aber nur dafür isses mir zu teuer :)
 
Ja stimmt schon, ich hatte es lange immer wieder ausprobiert und jedesmal wieder deinstalliert weil ich es auch zu kompliziert fand. Aber irgendwann habe ich wirklich ein gutes Verwaltungsprogramm (und guten Tagger) gebraucht und hab mir dann mal die Zeit genommen alles anzuschauen.

Fazit: Jetzt wo ich mich auskenn hat es mich so begeistert, dass ich es nicht mehr hergeben würde. Zuerst brauchte ich es primär als Tagger, aber heute schätze ich die Verwaltungs- und Suchfunktionen sehr.
 
Zurück
Oben