koerschgen2001: Verweis mit wechselnder Funktion

Hallo erstmal,

ich habe ein Element in dem ich den Haupteil nach belieben aus-, einblenden lassen möchte.
Dazu habe ich mir zwei Funktionen geschrieben. Die eine blendet aus die andere blendet ein. Die Funktionen ändern eigentlich nur die
Eigenschaft "display", das ist auch schon alles.

Ich möchte jetzt dass das ganze funktioniet wie bei Windows fenstern.
Man klickt in meinem Elemnt  auf eine Grafik(Verweis) und es wird
minimiert(display:none) und dann soll an dieser Stelle die Grafik
zum wiederherstellen(display:block) erscheinen und der verweis muss sich natürlich auch auf die funktion zum anzeigen ändern(und umgekehrt).

Wie kann ich sowas realisieren?

  1. Hi,

    Man klickt in meinem Elemnt  auf eine Grafik(Verweis) und es wird
    minimiert(display:none) und dann soll an dieser Stelle die Grafik
    zum wiederherstellen(display:block) erscheinen und der verweis muss sich natürlich auch auf die funktion zum anzeigen ändern(und umgekehrt).

    nein, die Funktion bleibt die selbe. Sie agiert einfach in Abhängigkeit zum aktuellen Zustand.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Mahlzeit.

      Vielleicht funktioniert das als universalfunktion:

      function change_anaus(obj,o2,t1,t2)
      {
       if(obj.style.display=="none")
       {
       o2.innerHTML = t2
       obj.style.display="inline"
       }
       else
       {
       o2.innerHTML = t1
       obj.style.display="none"
       }
      }

      Und der Link bzw. Button:
      <a href="javascript:void(0)" onClick="change_anaus(document.all.layer,this,'An','Aus')">An/aus</a>

      Somit kannst du beliebig viele Layer erstellen, die dann unabhängig voneinander nur 1 Funktion benötigen.

      Du mußt aber vorher in den Layer das display objekt haben, sonst gehts nicht richtig am anfang.

      MFG
      Griever

      --
      LOOK MY PAGE!
      1. Hi,

        Vielleicht funktioniert das als universalfunktion:

        nein, tut es nicht. Und bitte unterlasse es, Fragestellern durch Posten fertigen Codes Schaden zuzufügen.

        Und der Link bzw. Button:

        Ein Link dient der Referenzierung einer weiteren Ressource. Da dies hier nicht gewünscht ist, ist es definitiv die falsche Struktur.

        <a [...] onClick=[...]

        Der Code ist nicht XHTML-kompatibel.

        [...]="change_anaus(document.all.layer,this,'An','Aus')">An/aus</a>

        Der Code ist nicht Internet-kompatibel. Bitte poste nie wieder angeblich fertigen Code.

        Somit kannst du beliebig viele Layer erstellen,

        Nein. Es gibt im Bereich HTML, CSS und JavaScript nichts, was "Layer" heißt.

        Du mußt aber vorher in den Layer das display objekt haben,

        Die display-Eigenschaft in der style-Collection.

        sonst gehts nicht richtig am anfang.

        Ein weiterer Grund, der gegen Deinen Code spricht.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Toll, jetzt bin ich genau so schlau wie vorher.

          @Cheatah
          Könntest mir denn dann mal einen Anstoß in die richtige Richtung geben.

          1. hi,

            Toll, jetzt bin ich genau so schlau wie vorher.

            Das kann ja eigentlich nur heißen, dass du kein bisschen mitgedacht hast.

            @Cheatah
            Könntest mir denn dann mal einen Anstoß in die richtige Richtung geben.

            Hat er doch schon.
            Was hast du an

            nein, die Funktion bleibt die selbe. Sie agiert einfach in Abhängigkeit zum aktuellen Zustand.

            nicht verstanden?

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. Hi,

              Was hast du an

              nein, die Funktion bleibt die selbe. Sie agiert einfach in Abhängigkeit zum aktuellen Zustand.
              nicht verstanden?

              hab ich schon.

              Habe das hier gebastelt:

              function change_anaus(id)
              {
               if(document.getElementById(id).style.display=="none")
               {
               document.getElementById(id).style.display="block";
               }
               else
               {
               document.getElementById(id).style.display="none";
               }
              }

              Hatte nur einen blöden schreibfehler drin. Statt getElementById habe ich getElementByID geschrieben. Deswegen dachte ich meine Funktion wäre falsch, weils halt nicht funktionierte.
              Aber jetzt ist alles bestens. Danke

              1. koerschgen2001,

                Hi,

                Was hast du an

                nein, die Funktion bleibt die selbe. Sie agiert einfach in Abhängigkeit zum aktuellen Zustand.
                nicht verstanden?

                hab ich schon.

                Habe das hier gebastelt:

                function change_anaus(id)
                {
                if(document.getElementById(id).style.display=="none")
                {
                document.getElementById(id).style.display="block";
                }
                else
                {
                document.getElementById(id).style.display="none";
                }
                }

                Dann muss jedesmal im Elementbaum das Element mit der ID id neu gesucht werden. Einmal reicht doch, und in einer globalen Variablen speichern: myElement = document.getElementById(id);
                Zugriffe dann mit myElement.style.display;

                Oder noch besser gleich myElementStyle = document.getElementById(id).style;
                Zugriffe mit myElementStyle.display;

                Live long and prosper,
                Gunnar

                --
                „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
                1. Hallo,

                  also meine Funktion sieht jetzt so aus:

                  function change_anaus(id,name)
                  {
                  myElementStyle = document.getElementById(id).style;
                   if(myElementStyle.display=="none")
                   {
                   name.innerHTML = "Verstecken";
                   myElementStyle.display="block";
                   }
                   else
                   {
                   name.innerHTML = "Anzeigen";
                   myElementStyle.display="none";
                   }
                  }

                  Ich habe noch eine Funktion um alle Boxen Einzublenden und eine um alle Auszublenden.
                  Hier mal die zum Einblenden:

                  function show_all () {

                  for(id=1;document.getElementById(id);id++)
                    {
                      document.getElementById(id).style.display = "block";
                    }
                  }

                  Ich möchte das diese Funktion gleichzeitig auch alle Links von "Anzeigen" auf "Verstecken"
                  ändert. Ich habe schon einiges versucht. auch getElementsByName, aber nix klappt.

                  1. Hallo koerschgen2001,

                    for(id=1;document.getElementById(id);id++)

                    ich weiß jetzt nicht, ob das dein Problem löst, aber IDs dürfen nicht mit Zahlen beginnen. Nimm als ID doch einfach "ID1", "ID2", ..., "ID10", "ID11", ... und als Schleife for(nr=1;document.getElementById("ID"+nr);nr++)

                    Gruß, Jürgen

              2. Noch ein Tipp!

                Hatte nur einen blöden schreibfehler drin. Statt getElementById habe ich getElementByID geschrieben. Deswegen dachte ich meine Funktion wäre falsch, weils halt nicht funktionierte.

                Das wäre der optimale Zeitpunkt gewesen in die JS Konsole zu schauen (im Firefox direkt über das Menü Extras zu erreichen) und dort den Fehler zu finden.

                "Funktioniert nicht" gibt es i.d.R. nicht, entweder du hast einen Fehler der von jedem Browser auch angezeigt wird (wobei die Fehlermeldung im IE nicht unbedingt brauchbar ist) oder benutzt etwas was der Browser nicht kann (was aber meistens auch eine Fehlermeldung erzeugt) und selten ist es ein Bug.

                Struppi.