Menüleiste verlinken

  • Hallo Leute

    Ich habe ein kleines Problem bei welchem ich einfach nicht weiter komme. Vermutlich ist es nur eine Kleinigkeit.

    Ich habe eine Homepage gestaltet wo sich auf der linken Seite mein Menü befindet ( Frame menü ). Von dort aus soll auf entsprechende Textseiten verlinkt werden welche sich dann in einem anderem Frame ( Frame mitte ) öffnen. Dies funktioniert auch soweit ( siehe Seiten welche im Quellcode fett markiert sind / Shanghai und Peking ) , jedoch möchte ich auch, dass das Verlinken auch funktioniert wenn ich auf den obersten Name der Aufzählung ( in dem Fall China ) klicke. Bei mir ist es momentan so, dass wenn ich dort drauf klicke der Menübaum geöffnet wird und bei einem weiterem klick wieder geschlossen wird. Dies ist auch soweit OK jedoch soll beim draufklicken der Menübaum geöffnet werden und gleichseitig soll im Frame mitte eine verlinkte Seite angezeigt werden. Ist dies überhaupt möglich?

    Bin euch dankbar für eure Hilfe.


    <html>

    <head>

    <title>Australien index </title>

    </head>

    <BODY BGCOLOR="6666FF" TEXT=BLACK LINK=BLUE VLINK=PURPLE ALINK=RED >
    <BODY>


    <style>
    <!--
    #foldheader{cursor:pointer;cursor:hand ; font-weight:bold ;
    //list-style-image:url(fold.gif)}
    #foldinglist{list-style-image:url(list.gif)}
    //-->
    </style>
    <script language="JavaScript1.2">
    <!--

    //Smart Folding Menu tree- By Dynamic Drive (rewritten 03/03/02)
    //For full source code and more DHTML scripts, visit http://www.dynamicdrive.com
    //This credit MUST stay intact for use

    var head="display:''"
    img1=new Image()
    img1.src="fold.gif"
    img2=new Image()
    img2.src="open.gif"

    var ns6=document.getElementById&&!document.all
    var ie4=document.all&&navigator.userAgent.indexOf("Opera")==-1

    function checkcontained(e){
    var iscontained=0
    cur=ns6? e.target : event.srcElement
    i=0
    if (cur.id=="foldheader")
    iscontained=1
    else
    while (ns6&&cur.parentNode||(ie4&&cur.parentElement)){
    if (cur.id=="foldheader"||cur.id=="foldinglist"){
    iscontained=(cur.id=="foldheader")? 1 : 0
    break
    }
    cur=ns6? cur.parentNode : cur.parentElement
    }

    if (iscontained){
    var foldercontent=ns6? cur.nextSibling.nextSibling : cur.all.tags("UL")[0]
    if (foldercontent.style.display=="none"){
    foldercontent.style.display=""
    cur.style.listStyleImage="url(open.gif)"
    }
    else{
    foldercontent.style.display="none"
    cur.style.listStyleImage="url(fold.gif)"
    }
    }
    }

    if (ie4||ns6)
    document.onclick=checkcontained

    //-->
    </script>

    <br>
    <ul>
    <li id="foldheader">China</li>
    <ul id="foldinglist" style="display:none" style=&{head};>
    <li><a href="chinashanghai.html" target="5">Shanghai</a></li>
    <li><a href="chinapeking.html" target ="5">Peking</a></li>
    </ul>

    </ul>

    </body>
    </html>

  • Sicher, auchmit JavaScript. In der HTML fürs menu:

    Code
    parent['framesetname'].child['name des mittelframes'].src="...";

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Vielen Dank für die Hilfe, jedoch werde ich da nicht wirklich schlau draus. Wo muss der Code nun genau eingebaut werden und warum ist src angegeben. Das würde ja bedeuten, dass ich auf ein Bild verlinke. Ich möchte jedoch auf eine andere Textseite verlinken.

    Danke!

  • SRC steht für source, soviel wie Quelle. Das hat mit bildern nix am Hut. In deim Frameset steht doch auch src. Une wenn nich, dann halt href. Der COde muss dahin, wo auch das Untermenü geöffnet wird.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Hallo

    Erst mal vielen Dank für den Tip, jedoch funktioniert das leider nicht. Ich denke ich habe es evtl. an der falschen Stelle eingefügt. Anbei nochmals der Quellcode wo ich dann den Code von dir eingefügt habe. Ich habe es ein beiden Stellen eingefügt, damit du dir das evtl. mal anschauen kannst. Aber es funktioniert an keiner von beiden Stellen. Oder muss es in den Java Script geschrieben werden? Mit Java kenne ich mich leider nicht so gut aus.

    Es soll so sein, dass ich auf China klicke und sich dann im Menü links (indexmenue.html) die 2 Untermenüs Shanghai und Peking öffnen und gleichzeitig im mittlerem Frame (indexmitte.html) eine beliebige Seite aufgeht ( z.B. Beispiel.html ).

    Danke

    Gruß

    <html>

    <head>

    <title>Australien index </title>

    </head>

    <BODY BGCOLOR="6666FF" TEXT=BLACK LINK=BLUE VLINK=PURPLE ALINK=RED >
    <BODY>


    <style>
    <!--
    #foldheader{cursorointer;cursor:hand ; font-weight:bold ;
    //list-style-image:url(fold.gif)}
    #foldinglist{list-style-image:url(list.gif)}
    //-->
    </style>
    <script language="JavaScript1.2">
    <!--

    //Smart Folding Menu tree- By Dynamic Drive (rewritten 03/03/02)
    //For full source code and more DHTML scripts, visit http://www.dynamicdrive.com
    //This credit MUST stay intact for use

    var head="display:''"
    img1=new Image()
    img1.src="fold.gif"
    img2=new Image()
    img2.src="open.gif"

    var ns6=document.getElementById&&!document.all
    var ie4=document.all&&navigator.userAgent.indexOf("Ope ra")==-1

    function checkcontained(e){
    var iscontained=0
    cur=ns6? e.target : event.srcElement
    i=0
    if (cur.id=="foldheader")
    iscontained=1
    else
    while (ns6&&cur.parentNode||(ie4&&cur.parentElement)){
    if (cur.id=="foldheader"||cur.id=="foldinglist"){
    iscontained=(cur.id=="foldheader")? 1 : 0
    break
    }
    cur=ns6? cur.parentNode : cur.parentElement
    }

    if (iscontained){
    var foldercontent=ns6? cur.nextSibling.nextSibling : cur.all.tags("UL")[0]
    if (foldercontent.style.display=="none"){
    foldercontent.style.display=""
    cur.style.listStyleImage="url(open.gif)"
    }
    else{
    foldercontent.style.display="none"
    cur.style.listStyleImage="url(fold.gif)"
    }
    }
    }

    if (ie4||ns6)
    document.onclick=checkcontained

    //-->
    </script>

    <br>
    <ul>
    <li id="foldheader">China</li>

    parent="[indexmenue.html]".child"[indexmitte.html]".src="Beispiel.html";


    <ul id="foldinglist" style="display:none" style=&{head};>

    parent="[indexmenue.html]".child"[indexmitte.html]".src="Beispiel.html";

    <li><a href="chinashanghai.html" target="5">Shanghai</a></li>
    <li><a href="chinapeking.html" target ="5">Peking</a></li>
    </ul>

    </ul>

    </body>
    </html>

  • was solln das?

    Code
    parent="[indexmenue.[URL='http://www.forum-hilfe.de/vbglossar.php?do=showentry&item=html']html[/URL]]".child"[indexmitte.[URL='http://www.forum-hilfe.de/vbglossar.php?do=showentry&item=html']html[/URL]]".src="Beispiel.[URL='http://www.forum-hilfe.de/vbglossar.php?do=showentry&item=html']html[/URL]";
    Code
    document.frames['framename'].href="zielseite";

    Sorry, mein erstes Beispiel war n bissle schlecht. den "framename"ennimmst du deinem Frameset.
    Ich würde das mit dem Menü so machen:

    Damit wird die Hauptseite verlinkt und das Untermenü geöffnet. Die Funktion page(); lässt sich ja beliebig erweitern.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Wieso hat hier noch niemand erwähnt, dass Frames großer Käse sind? Und wieso hat noch niemand gesagt, dass man die Funktionalität einer Seite nicht auf JavaScript aufbauen sollte?

  • Wieso hat hier noch niemand erwähnt, dass Frames großer Käse sind?


    Vielleicht aus dem gleichen Grund dass noch niemand erwähnt hat, dass eine Seite immer mit der Dokumentendeklaration anfängt.

  • Hallo zusammen.

    Hab das jetzt mal so gemacht wie angegeben. Prinzipiell funktioniert es auch ( aber das hat es soweit ja auch schon vorher ). Das Problem ist nur, dass das Menü immer geöffnet ist, also dass auch die Untermenüs ( bei mir eins und zwei sowie drei und vier ) angezeigt werden. Dies ist aber unpraktisch, da sich das ganze irgendwann aufbläht und dann gesrollt werden muss. Es soll so sein dass sich diese erst öffnen wenn man auf Home klickt und bei einem weiterem klick wieder schließt.

    Bandit 600 was für eine Alternative gäbe es gegenüber Frames. Warum sind Frames Käse?
    Einen besseren Vorschlag wie ich mein Problem in den Griff kriegen könnte?

    Danke


    <html>
    <head>
    <script type="text/javascript">
    function page(p) {
    window.frames['hautpinhalt'].href=p+".html";
    document.getElementById("untermenu_"+p").style.display="block";
    }
    </script>
    </head>
    <body>
    <ul>
    <li><a href="chinashanghai.html" target="5">Home</a></li>
    <div id="untermenu_index">
    <ul>
    <li><a href="chinashanghai.html" target="5">eins</a></li>
    <li><a href="chinapeking.html" target="5">zwei</a></li>
    </ul>
    </div>
    <li><a href="chinashanghai.html" target="5">Home</a></li>
    <div id="untermenu_index">
    <ul>
    <li><a href="Kontakt.html" target="5">drei</a></li>
    <li><a href="chinapeking.html" target="5">vier</a></li>
    </ul>
    </div>
    </ul>
    </body>
    </html>

  • Ist doch sein Kram, wenn er frames will, ham wir ja mit mir auch schon weichgekloppt. Aber so nen Untermenü kann man am elegantesten über JS lösen.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Und die Vor- und Nachteile von Frames werden in endlosvielen Threads und Tutorials im Internet besprochen.


    Die Vorteile einer Dokumentendeklaration auch....