Sören: such den layer

hallo,

ich habe folgende funktion geschrieben um sichtbare layer unsichtbar zu machen und per id-übergabe den gewünschten layer sichtbar zu machen:

function reveal(id) {
for(var i = 0; i <= 7; i++)
if (document.getElementById(i).style.visibility == visible) {
    document.getElementById(i).style.visibility = hidden;
    document.getElementById(id).style.visibility = visible;
   }
}

es sind 7 durchnummeriere layer bei dem einer von anfang an auf visible geschaltet ist. durch klick auf einen link wird die id des zu erscheinenden layers an die funktion weitergegeben wo dann zunächst nach dem sichtbaren layer gesucht werden soll. leider funktioniert diese funktion nicht. bei einer anderen variante ergab sich lediglich nur ein einmaliger layerwechsel:

function reveal(id) {
var i = 0;
i++;
if (document.getElementById(i).style.visibility == visible) {
    document.getElementById(i).style.visibility = hidden;
    document.getElementById(id).style.visibility = visible;
   }
}

das war darauf zurückzuführen dass diese funktion nur bis 1 zählt und da ich den ersten layer als ausgangslayer benutzt habe.

würde mich sehr freuen wenn mir jemand bei diesem problem helfen könnte.

sören

  1. for(var i = 0; i <= 7; i++)
    if (document.getElementById(i)

    sören,
    Sicher, dass du damit die Elemente richtig ansprichst? Welche IDs haben die denn?

    Gunnar

    --
    "Nobody wins unless everybody wins." (Bruce Springsteen)
    1. hallo gunnar,

      ja ich bin mir durchaus sicher dass das ansprechen der einzelnen divs hinhaut. es hat ja auch bei einigen anderen fehlschlägen die funktion grade zu biegen geklappt. sie sind wie folgt durchnummeriert:

      <div id="7" ...
      <div id="6" ...
      <div id="5" ...
      <div id="4" ...
      <div id="3" ...
      <div id="2" ...
      <div id="1" ...

      Sören

      1. <div id="7" ...

        Nö, das ist falsch. IDs müssen mit einem Buchstaben beginnen. http://www.w3.org/TR/html4/types.html#type-id (Danke, Tobias)

        for(var i = 0; i <= 7; i++)
        if (document.getElementById(i).style.visibility == visible)

        Das Argument von getElementById() sollte ein String sein.

        Die if-Abfrage ist nicht nötig; du kannst alle sieben Elemente unsichtbar machen, dann das mit der ID id sichtbar. Dieses sollet außerhalb der Schleife stehen.

        Und "visible" in Gänsefüßchen:
        document.getElementById(id).style.visibility = "visible";

        Gunnar

        --
        "Nobody wins unless everybody wins." (Bruce Springsteen)
        1. hallo gunnar,

          ich hab die funktion jetzt soweit vervollständigt - aber die statuszeile zeigt trotzdem noch fehlerhaft an:

          function reveal(id) {
          document.getElementById(id).style.visibility = "visible";
          for(var i = 0; i++)
            document.getElementById("f" + i).style.visibility = "hidden";
          }

          naja vielleicht bin ich einfach zu doof dafür. hier noch wie die links und divs im quellcode aussehen:

          <div id="f1" ...

          <a onClick="reveal('f1');"> ...

          wo liegt jetzt noch der fehler? ich seh da echt nicht mehr durch.

          Sören

          1. document.getElementById(id).style.visibility = "visible";
            for(var i = 0; i++)
              document.getElementById("f" + i).style.visibility = "hidden";
            }

            Damit setzt du dein eben auf visible gesetztes Element auch wieder auf hidden. Die Schleife muss vorher stehen.

            Das ist aber ein logischer Fehler, das

            aber die statuszeile zeigt trotzdem noch fehlerhaft an

            kommt woanders her. Was für ein Fehler tritt denn auf?

            Haste das Ganze mal online zum Anschauen?
            Gunnar

            --
            "Nobody wins unless everybody wins." (Bruce Springsteen)
            1. ich habe die seite mal eben hoch geladen:
              http://www.mynos.de/finish2/tunnelinggal.htm
              es zwar ein wenig sollte aber ersichtbar sein was es werden soll.
              was für ein fehler auftritt wird ja so in der art nicht genannt nur dass es einen fehler auf der seite gibt.

              Sören

          2. for(var i = 0; i++)

            Fehlt da nicht was? ;-)

            document.getElementById("f" + i).style.visibility = "hidden";

            "f" + i ist nicht besonders sauber, dürfte aber in JavaScript sogar funktionieren.

            Gunnar

            --
            "Nobody wins unless everybody wins." (Bruce Springsteen)