showhide layers

  • hallo
    ich bin gerade dabei eine showhide-funktion zu erarbeiten.

    ich mache so eine art bildergallerie. wenn man auf die kleine vorschaubilder klickt, erscheint dann rechts das große bild.

    ich möchte es so haben, wenn man auf das nächste vorschaubild klick, soll das vorige große bild wieder verschwinden und das aktuelle bild soll groß erscheinen.

    soweit funktioniert auch alles, aber ich weiß nicht, wie man es hinbekommt, dass das vorige große bild verschwindet.
    es geht erst weg, wenn man ein zweites mal auf das vorschaubild klickt.

    das geb ich in den quelltext ein:

    (bei den kleinen vorschaubildern)

    <a href="#" onclick="ShowHide('layer2')">
    <img src="bilder/g-stillleben.jpg" alt="" height="60" width="60" border="0">
    </a>


    die layer sind im head so definiert:

    <style type="text/css" media="screen">
    <!--
    #layer2 { visibility: hidden; position: absolute; top: 116px; left: 406px; width: 100%; height: 100% }
    --></style>

    ...und im body:
    <div id="layer2"><img src="bilder/g-stilllebeng.jpg" width="100%"></div>

  • oh sorry, hab ich vergessen zu ergänzen.
    javascript hab ich natürlich auch im quelltext.

    <script type="text/javascript">
    <!--
    function ShowHide(id) {
    obj = document.getElementsByTagName("div");
    if (obj[id].style.visibility == 'visible'){obj[id].style.visibility = 'hidden';}
    else {obj[id].style.visibility = 'visible';}
    }
    //-->
    </script>

    den script hab ich im internet gefunden. muss ich da möglicherweise hier etwas ändern?

    im prinzip möchte ich so eine funktion haben, wie bei den bildern auf dieser website:
    http://www.grossartwork.com/html/hair.html

    da ist mir aber der quelltext zu kompliziert und ich blicke bei den scripten nicht durch.

  • ja is doch einfach :)

  • danke

    funktioniert auch.

    geht das auch, dass ich nicht immer die url der großen bilder eingeben muss?
    vielleicht wo ich nur 'Layer1', 'layer2'...eingeben muss, da ich die ja schon vorher als ebene definiert hatte.

    <style type="text/css" media="screen">
    <!--
    #layer1 { visibility: hidden; position: absolute; top: 116px; left: 406px; width: 100%; height: 100% }
    --></style>

  • also probier es mal so :) is ungetestet

  • wenn ich diesen quelltext eingebe, hab ich das problem, was ich anfangs schon hatte.
    das erste bild verschwindet erst, wenn ich ein zweites mal mit der maus drübergehe.

    ich habe auch noch mal den quelltext mit deiner ersten lösung komplett neu geschrieben. allerdings werden jetzt alle großen bilder auf einmal gezeigt. da ist nix versteckt. :(

    so sieht der quelltext aus.

    <script type="text/javascript">
    /*<![CDATA[*/
    function show(url){var target = document.getElementById('showpic');
    target.src=url;}
    /*]]>*/
    </script>
    </head>
    <body >

    <img onmouseover="show('bilder/g-flascheng.jpg')"
    src="bilder/flaschen.jpg" alt="" height="60" width="60" border="0"
    style="position:absolute; top:0px; left:0px">

    <img onmouseover="show('bilder/g-stillleben.jpg')"
    src="bilder/stillleben.jpg" alt="" height="60" width="60" border="0"
    style="position:absolute; top:0px; left:70px">

    <img id="showpic" src="bilder/g-flaschen.jpg">
    <img id="showpic" src="bilder/g-stillleben.jpg">
    </body>
    </html>

    eigentlich so, wie du geschrieben hattest. keine ahnung, warum es bei dem anderen dokument funktioniert hatte. das war aber so unübersichtlich geworden, weil ich erst mit tabelle gearbeitet hatte, darum hab ich alles neu gemacht.

    und dann ist da noch was. wenn ich das neue dokument in golive öffnen will, erscheint die fehlermeldung, dass die großen bilder keinen eindeutigen namen habe und dass die bilder umbenannt werden
    wenn ich dann ok klicke ist schon mal der fortschritt, dass das große bild in den vordergrund rückt, was ich auch sehen will (also wenn ich auf das vorschaubild klicke). allerdings sind die anderen bilder immer noch im hintergrund zu sehen.
    im quelltext wird auch die id nummeriert.
    das sieht dann so aus:

    <img id="showpic" src="bilder/..." ...>
    <img id="showpic2" src="bilder/..." ...>

    2 Mal editiert, zuletzt von aila (4. Mai 2009 um 15:05)



  • falls du einen screenshot für einen bessere vorstellung brauchst, sag bescheid

    Einmal editiert, zuletzt von aila (4. Mai 2009 um 16:12)

  • also ich würd die bilder alle in ein array packen und nur iene einzige anzeige bauen.... und da dann nich mit visible und hidden werkeln sondern einfach die src ersetzen


    so wär des echt die einfachste variante :) auch wenn du da nochmal etwas umschreiben müsstest, aber so wird der code wesentlich schlanker

  • was soll ich sagen, es funktioniert immer noch nicht. es zeigt alle bilder auf einmal an und wenn ich die vorschaubilder anklicke funktioniert auch nix.:confused:
    bin ich wirklich zu blöd dafür???

    bei der id schreib ich doch nur die bildnummer hin oder?
    und da ist dann auch wieder das problem mit dem showpic. sobald ich das dokument schließe und neu öffne, kommt wieder die fehlermeldung mit den bildern und die id="showpic" wird nummeriert, wodurch es aber auch nicht besser wird. nur das halt wieder das aktuelle bild in den vordergrund rückt.

    also das wäre mein quelltext. stimmt der überhaupt?

    2 Mal editiert, zuletzt von aila (5. Mai 2009 um 17:54)

  • mach mal nur ein grosses bild und nenn des showpic.. der fehler kommt bestimmt, weil du zweimal die gleiche ID benutzt.. IDs müssen eindeutig sein.
    und nimm mal abstand von position absolute....

    mach mal ne separate datei auf und kopiere da meinen code rein, speichere sie mal im gleichen ordner wie die datei, an der du eigentlich herumwerkelst... und dann füge nur die bild-urls ein

  • auch wenn ich nur ein bild verwende, werden das große und das kleine bild gleichzeitig angezeigt.

    das problem muss irgendwie bei dem "showpic" liegen.
    ich hatte nämlich erst bei den new image bildern einen schreibfehler in der url.
    die bilder wurden aber trotzdem alle angezeigt, da die url bei den id="showpic" richtig war.
    naja, und die IDs wurden ja automatisch nummeriert, sobald ich das dokument neu geöffnet hatte.
    was also tun bei mehreren bildern??
    ich werd aber auch nicht so richtig aus dem quelltext schlau. die funktion heißt ja
    function show(id)
    es werden aber 2 IDs definiert. einmal für die bilder direkt und dann für "showpic".
    auf welche ID greift die funktion eigentlich zurück??

    nachtrag:
    kann es sein, dass ich bei mehreren bilder wirklich nur für ein einziges bild mit
    <img id="show" src="url">
    definieren muss?? da hab ich wohl deinen code erst falsch verstanden.
    ich hab jetzt nämlich alle anderen IDs gelöscht und jetzt wird nur noch ein bild angezeigt. und wenn ich dann die anderen vorschaubilder anklicke, wird auch nur das jeweilige bild angezeigt, so wie ich es eigentlich auch wollte.
    kann man das auch noch einstellen, dass man erst gar kein bild sieht, wenn man die seite das erste mal lädt?

    und warum sollte ich abstand von position absolut nehmen. muss ich dafür mit css arbeiten?

    Einmal editiert, zuletzt von aila (6. Mai 2009 um 14:03)


  • kopiere diesen code in eine separate datei und dann siehst du wie es funktioniert...
    hab für das hundethumbnail-dings das grosse bild genommen, hab dafür kein kleines zur hand..!
    und position: absolute sollte man nur dann benutzen, wenn man damit umgehen kann und weiß wie es funktioniert..
    für deinen fall war es ursprünglich nötig, um den divs bzw img die gleiche position zu geben, so dass sie über einander gelegen haben..
    bei meiner variante brauchste das an sich net.. aber is dein ding, ich ill dir net vorschreiben was du zu tun hast.. ich helfe lediglich beim javascript und zeige dir wie des mit nem schlanken code realisierbar ist