Mordor: javascript hide & show - HILFE

Hallo!

Ich habe auf meiner Website eine Javascript-Funktion eingebaut (Kopiert, da ich sogut wie keinen Plan von Javascript habe), mit der sich zwei Div-Container (die mit Display: none; ausgeblendet wurden) abwechselnd durch einen Klick auf einen Link ein- und ausblenden lassen.

Das sind die Javascriptfunktionen

function show(id) {
	if(document.getElementById) {
		var mydiv = document.getElementById(id);
		mydiv.style.display = (mydiv.style.display=='block'?'none':'block');
	}
}
function hide(id) {
	if(document.getElementById) {
		var mydiv = document.getElementById(id);
		mydiv.style.display = (mydiv.style.display=='none'?'block':'none');
	}
}

und so binde ich es in Html ein.

<a onclick="javascript:hide('div2');javascript:show('div1'); return false">Zeige Div 1</a>

<div1 style="display: none;">...
...
...

Funktioniert auch einwandfrei, nur möchte ich eine weitere Funktion einfügen, mit der ich bei uneingeschränkter Anzahl von Containern zum Bsp. alle bis auf 3 Divs ausblenden kann.

Bitte womöglich mit vorgeferigtem Code da ich ein kompletter Noob in js bin :D

LG

  1. Hi there,

    Ich habe auf meiner Website eine Javascript-Funktion eingebaut (Kopiert, da ich sogut wie keinen Plan von Javascript habe), mit der sich zwei Div-Container (die mit Display: none; ausgeblendet wurden) abwechselnd durch einen Klick auf einen Link ein- und ausblenden lassen.

    Scheint schon ein etwas (ur)älteres Script zu sein, denn ob der Browser "document.getElementById" versteht, muss seit ca. 15 Jahren nicht wirklich abgefragt werden, aber sei's drum.

    Funktioniert auch einwandfrei, nur möchte ich eine weitere Funktion einfügen, mit der ich bei uneingeschränkter Anzahl von Containern zum Bsp. alle bis auf 3 Divs ausblenden kann.

    Das geht nur mit einer Funktion, der Du die IDs der Divs, die nicht ausgeblendet werden sollen, als Parameter in Form eines Arrays übergibst und in der eine Schleife abgearbeitet wird, in der alle Divs bis auf die übergebenen ausgeblendet werden. Das ist jetzt für jemanden der von sich behauptet keine Ahnung von Javascript zu haben leider nicht mehr wirklich trivial.

    Bitte womöglich mit vorgeferigtem Code da ich ein kompletter Noob in js bin :D

    Ja, sorry, aber den wirst Du hier nicht finden, aber im Prinzip musst Du so etwas bauen wie:

     function hideDivs(parameterArray) 
     {
     	for (var i=0; i < documentGetElementsByTagName('div').length; i++)
            {
                if (hier_folgt_eine_Abfrage_in_der_nachgeschaut_wird_ob_id_in_array)
                {
                     continue;
                }
                document.getElementsByTagName('div')[i].style.display='none';
            }
     }
    

    das würde alle (auch die, die vielleicht von Deinem genialen Design benötigt werden) Divs ausblenden, die nicht die Bedingung hier_folgt_eine_Abfrage_in_der_nachgeschaut_wird_ob_id_in_array erfüllen...

  2. Lieber Mordor,

    (Kopiert, da ich sogut wie keinen Plan von Javascript habe)

    im Prinzip solltest Du genau das ändern. Im hiesigen Wiki gibt es ein funkelnagelneues Anfänger-Tutorial für JavaScript. Da solltest Du wesentliche Grundlagen praktisch erlernen. Und wenn Du dann Dein Script anpassen möchtest (Tipp: href="javascript:return myDivSwitcher(this.className);"), findest Du hier sicherlich Hilfestellungen für eventuelle Verständnisprobleme.

    und so binde ich es in Html ein.

    Das sollte man besser anders machen. Aber dazu mehr, wenn Du Willens bist Dein Script neu zu bauen.

    Bitte womöglich mit vorgeferigtem Code da ich ein kompletter Noob in js bin :D

    Keinesfalls. Dazu hast Du schon zu viel Vorarbeit geleistet.

    Liebe Grüße,

    Felix Riesterer.