Dynamisches HTML - versteckte Absätze einblenden

  • Hallo!

    Ich bin gerade beim Programmieren meiner Homepage.
    Ich möchte nun auf einer Seite dynamisches HTML anwenden, um auf Mausklick in einem Text verschiedene "versteckte" Elemente einzublenden. Also, der Text besteht aus mehreren Absätzen, die von verschiedenen Leuten stammen, und auf Mausklick sollen (am besten rechts daneben in einer extra-Spalte) sämtliche Namen der Leute eingeblendet werdne, ohne dass die Seite neu geladen werden muss.
    Leider kenne ich mich mit Dynamischem HTML nicht aus. Kann mir jemand sagen, wie ich das bewerkstelligen kann?

  • Würde ich mit Javascript machen, weiss nicht obs ne einfachere Möglichkeit gibt.

    HTML
    <a href="#" onclick="javascript: anzeigen('bezeichnung')">Anzeigen</a>
    <span id="bezeichnung" style="display: none;">
    HIER DER VERSTECKTE TEXT
    </span>
  • Klar, versteh ich schon, aber die Absätze sollen dann ja nicht alle untereinander angezeigt werden, sondern im Text verteilt sein. Da mal ein (versteckter) Absatz, dann ein paar Zeilen drunter einer... Wie geht das?

  • ich hab sowas mal verwendet.
    die eizelnen bereiche hab ich in aber in nen div-container verpackt, und den per javascript auf/zumachen zu können


    if(document.getElementById(personID).style.display=="block")
    {
    document.getElementById(detailID).style.display="none";
    document.getElementById(detailID).style.height=0;
    }
    else
    {
    document.getElementById(detailID).style.display="block";
    document.getElementById(detailID).style.height="auto";
    }

  • schreib anstelle des <span> mal ein <div>, dann sollte deine javascript-funktion richtig sein

  • Dazu wäre mir jetzt folgende Idee gekommen, die bei einem kurzen Test auch geklappt hat. :)

    JS Code bleibt gleich, aber:

  • Lautet die Funktion dann korrekterweise:

    HTML
    <script type="text/javascript">
    function anzeigen(id){
    div = document.getElementById(id).style.display;
    if(div == "none"){
    document.getElementById(id).style.display = "";
    }else{
    document.getElementById(id).style.display ="none";
    }
    }
    </script>



    So funktioniert's nicht. Wenn ich die obigen beiden "div"s zu "span" ändere, geht's auch nicht. Es wird immer nur der erste Absatz eingeblendet, ne Fehlermeldung kommt aber auch nicht!!
    Ich hab das Ganze in einer Tabelle drin, aber ich glaub nicht, dass das einen Unterschied macht, oder?

  • Oh, hab's grad probiert - wenn das Ganze nicht in eine Tabelle eingepackt ist, funktioniert's!! Aber ich hätte es schon gerne in einer Tabelle, weil mir dann die versteckten Namen in der Spalte rechts angezeigt werden könnten!

  • edit:
    hab mir die zeit genommen nochmal alles zu lesen...
    also ich hab zwar keinen link für dich, dafür kannste aber auf die tabelle klicken....
    styles musste anpassen und es is ratsam jquery in deinen eigenen webspace zu packen, statt ihn wie ich es mache von googlecode zu sucken....

    lange rede gar kein sin :D hier der code.... (jquery is zwar gewöhnungsbedürftig, aber wenn mans mal kapiert hat fruchtet die sau ohne zu mucken)

    das ganze sieht dann fertig so aus: http://home.arcor.de/olewat/einblenden.html

    2 Mal editiert, zuletzt von synaptic (25. September 2009 um 00:32)

  • Hallo!

    Wow, warum gibt's Leute wie dich ( synaptic), die sich für andere Leute so viel antun? Wahnsinn! Vielen, vielen Dank!
    Aber (tut mir Leid, da ist trotzdem ein "aber") es geht immer noch nicht. Es wird wieder nur der erste versteckte Absatz einggeblendet...
    Außerdem wär's mir lieber, ich hätte einen Link um all versteckten Elemente anzuzeigen, und müsste nicht nur auf den Text klicken wie in deinem Beispiel. (Denn dann machen das sicher viele Leute sofort beim Durchlesen, und dann ist der Überraschungseffekt weg...)
    Ich glaube ich Mach's einfach ohne Tabelle, irgendwie. Anscheinend geht's ja anders nicht...

  • mach mal deinen quelltext fertig(ruhig mit dummytexten oder anderen beispielinhalt), wenn ich dann heute abend daheim bin, nehm ich den und werd das script entsprechend anpassen.
    denke ich bin gegen 19 uhr daheim (hoffe du kannst noch bis dahin warten)
    vorher klappts leider net, da ich heut nen arsch voll zu programmieren hab

  • Machs sonst mal lieber so:

    HTML
    <script type="text/javascript">
    function anzeigen(id){
    span = document.getElementById(id).style.display;
    if(span == "none"){
    document.getElementById(id).style.display = "block";
    }else{
    document.getElementById(id).style.display ="none";
    }
    }
    </script>

    Es kann sein, dass du mit dem Leerlassen des display: Fehler erhältst.
    Wenn du die Funktion nur für Block-Elemente, wie divs oder Absätze brauchst, dann ist die obige Lösung besser.
    Ansonsten bräuchtest du etwas, womit du sagst, ob es inline oder block ist.

  • Hab mich mal für dich drangesetzt.
    Demo: http://hid.white-tiger.ch/show.html