Benjamin: String als Funktionsparameter übergeben + getElementByID

Hey ho.

Ich hab mir grad mal ne kleine Funktion als JavaScript geschrieben die mir verschiedene Elemente meiner Website durch klicke auf einen Link sichtbar bzw. unsichtbar darstellen lassen soll.

Dabei greif ich auf das Element per "getElementById" zu und setzte den Stylesheet "visibility" auf "hidden" bzw. "visible".

Da ich aber nicht für jedes Element meiner Seite eine eigene Funktion schreiben wollte, wollte ich den Namen des Elements als Parameter der Funktion übergeben. Leider funktioniert das nicht.

Hier mal mein bisheriger JavaScript Code:

function visibilityChange(element){
    document.write(document.getElementById(element).style.visibility);
    if(document.getElementByClass(element).style.visibility=="hidden"){
     document.getElementById(element).style.visibility="visible";
    }
    else if (document.getElementById(element).style.visibility=="visible"){
     document.getElementById(element).style.visibility="hidden";
    }
   }

Als Aufruf verwende ich :
<a href="JavaScript:visibilityChange('test')"></a>

"test" ist hierbei die ID eines DIV-Elements.

Habt ihr ne Ahnung wieso das nicht funktioniert? Der String "test" wird einwandfrei übergeben, jedoch nimmt es die Funktion "getElementById" nicht an.

Würde mich über Antworten freuen und bedanke mich schonmal im Vorraus. ;)

  1. hi,

    function visibilityChange(element){
        document.write(document.getElementById(element).style.visibility);

    Das allein ist schon reichlich unsinnig - document.write, nach dem initialen Rendern des Dokumentes aufgerufen, ersetzt dieses vollständig.

    if(document.getElementByClass(element).style.visibility=="hidden"){

    Die Werte von CSS-Eigenschaften sind im übrigen über style erst abfragbar, wenn sie zuvor per Javascript gesetzt, oder inline per style-Attribut am Element selber hinterlegt wurden.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Hubsa, hab ich irgendwie blöde angestellt.

    Jetzt funzts. ;)

  3. Leider funktioniert das nicht.

    Fehlermeldungen?

    function visibilityChange(element){
        document.write(document.getElementById(element).style.visibility);

    Das document.write überschreibt dein gesamtes aktuelles Dokument mit dem als Parameter übergebenen Wert. Rufe doch mal spaßeshalber die Quelltextansicht auf. Zum debuggen solltest du von document.write die Finger lassen und statt dessen alert verwenden.

    if(document.getElementByClass(element).style.visibility=="hidden"){

    Was ist "getElementByClass"?

    document.getElementById(element).style.visibility="visible";
        }
        else if (document.getElementById(element).style.visibility=="visible"){
         document.getElementById(element).style.visibility="hidden";
        }
       }

    Ich würde eventuell zur Eigenschaft display="none" neigen, um Elemente auszublenden, es sei denn, du willst den Platzhalter bei visibility="hidden" haben.

    <a href="JavaScript:visibilityChange('test')"></a>

    Wieso zweckentfremdest du einen Hyperlink? Nimm vielleicht besser einen Button kombiniert mit einem passenden Eventhandler (wie wär's mit onclick?).

    Siechfred

    --
    Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.