Avatar billede danriis Nybegynder
28. januar 2001 - 22:28 Der er 12 kommentarer og
5 løsninger

Menu (HASTER)

Hejsa!!

Først vil jeg gerne sige at jeg overhovedet ikke kan finde ud af JAVA/DHTML (dog godt ændre lidt i det) - Men tilgengæld så meget andet.
Så hvis der er nogle der har problemmer med ASP vil jeg med glæde hjælpe... Vi må jo hjælpe hinanden!!!

Men jeg skal bruge en menu og håber at der en der gider at lave det for mig!! (550 point)

Den skal se sådan her ud:

Der skal være 4 billeder fx.

Billede 1
Billede 2
Billede 3
Billede 4

Så når man klikker på et af billederne skal der komme noget tekst frem, så det kommer til at se sådan her ud:

Billede 1
- Tekst 1
- Tekst 2
- Tekst 3
- Tekst 4
- Tekst 5
Billede 2
Billede 3
Billede 4

Men når man klikker på fx billede 3 skal menu 1 forsvinde og man skal kun kunne se dette:

Billede 1
Billede 2
Billede 3
- Tekst 1
- Tekst 2
- Tekst 3
- Tekst 4
- Tekst 5
Billede 4


Det må selvfølgelig gerne være et script som i har fundet og tilpasset det, så jeg kan bruge det :)


Håber at der er nogen der vil hjælpe også selvom at det måske er DHTML jeg skal bruge aner det ikke!

Jeg gider IKKE have et link, med mindre at det lige præcis opfylder det, som jeg ønsker her, jeg synes dog at det er rimeligt for 550 point!

På forhånd TAK!!
Dan Riis

(Hvis du kunne tænke dig opgaven send lige en mail til mig på, dan_r@sol.dk.)
Avatar billede jmf Nybegynder
28. januar 2001 - 22:40 #1
Avatar billede jakoba Nybegynder
28. januar 2001 - 22:42 #2
Kan menu-en på  http://www.am-denmark.com/index2.htm  bruges?

Den er fra www.bratta.com så den skulle ikke være svær at rette til.

Den er beregnet til brug på en rammeside, med menuen i separat lodret ramme.

Hvis det er ok kan jeg, og ca alle andre, sætte den op for dig.

mvh JakobA
Avatar billede 12tri Nybegynder
28. januar 2001 - 23:22 #3
Jeg brugte engang et program kaldet anfy.

Det er meget simpelt at bruge, og kan lave det du beskriver, tror nok det bliver lavet med java(script)

Programmet kan hentes her:

http://anfyteam.com/ln/danish/

På hjemmesiden står der
\"..Anfy 1.4.5 Inkluderer 40 Java™ applets, effekter, menuer m.m...\"

Så tag og prøv det, for det virker ganske udemærket

/Morten
Avatar billede nixen Nybegynder
29. januar 2001 - 00:38 #4
Hvilke browsere skal det virke i? Hvis du kan klare dig med IE4.0+ tager det sådan ca. 2 sekunder - hvis Netscape skal med tager det nok en times tid :(
Avatar billede nixen Nybegynder
29. januar 2001 - 00:39 #5
..og hvad skal der så ske når man trykker på et af links\'ne (for det er vel links?) - er det en frame-baseret løsning med åbning af url i frame, eller snakker vi lag (altså en side med udskiftning)?
Avatar billede nixen Nybegynder
29. januar 2001 - 01:35 #6
Her er et eksempel på hvordan sådan noget kan gøres - det her er et rimeligt simpelt, ikke særligt pænt, og ganske skod-kodet eksemplar af en \"folde ud-folde sammen\"-menu.. Du angiver menupunkternes titel, tekst, url osv.osv i \"BuildMenu\" funktionen.. good luck!

<html>
<head>
<STYLE TYPE=\"text/css\">
BODY{BACKGROUND-COLOR:#c8c4c0;}
#menuen
{
    POSITION:absolute;
    TOP:10;
    LEFT:10;
    WIDTH:140;
    HEIGHT:300;
    CLIP:rect(0px 140px 300px 0px);
    LAYER-BACKGROUND-COLOR:#ffffff;
    BACKGROUND-COLOR:#ffffff;
    BORDER:inset 2px white;
}
</STYLE>
<SCRIPT LANGUAGE=javascript>
<!--
function document_onload()
{
    IE=document.all?true:false;
    BuildMenu()
}
function BuildMenu()
{
    MenuPointMaxWidth=100
   
    var m=new Array()
    m[0]=new MenuPoint(\"main1\",12,\"Verdana,Arial\",false,null,null)
    m[1]=new MenuPoint(\"main2\",12,\"Verdana,Arial\",false,null,null)
    m[2]=new MenuPoint(\"main3\",12,\"Verdana,Arial\",false,null,null)
       
    var s=new Array()
    s[0]=new SubMenu(\"sub1,1\",\"http://www.jubii.dk\",m[0],10,\"Verdana,Arial\")
    s[1]=new SubMenu(\"sub1,2\",\"http://www.jubii.dk\",m[0],10,\"Verdana,Arial\")
    s[2]=new SubMenu(\"sub2,1\",\"http://www.jubii.dk\",m[1],10,\"Verdana,Arial\")
    s[3]=new SubMenu(\"sub2,2\",\"http://www.jubii.dk\",m[1],10,\"Verdana,Arial\")
    s[4]=new SubMenu(\"sub2,3\",\"http://www.jubii.dk\",m[1],10,\"Verdana,Arial\")
    s[5]=new SubMenu(\"sub3,1\",\"http://www.jubii.dk\",m[2],10,\"Verdana,Arial\")
    s[6]=new SubMenu(\"sub3,2\",\"http://www.jubii.dk\",m[2],10,\"Verdana,Arial\")

    var str = \"\"
    for (var i in MenuPoints) str+=MenuPoints[i].GetHTML();
    for (var i in SubMenues) str+=SubMenues[i].GetHTML();
    menuWrite(str)
    for (var i in MenuPoints) MenuPoints[i].Init();
    for (var i in SubMenues) SubMenues[i].Init();
    SetAllPositions(4)
}
function menuWrite(str)
{
    if (IE) document.all[\'menuen\'].innerHTML=str;
    else {
        document.menuen.document.write(str);
        document.menuen.document.close();
    }
}
function SetAllPositions(x)
{
    if (typeof(x)==\"undefined\") x=MenuStartLeft;
    else MenuStartLeft=x;
    var theTop=0
    for (var i=0;i<MenuPoints.length;i++) {
        var obj=MenuPoints[i];
        obj.SetPosition(theTop,x)
        theTop+=MenuPoints[i].height;
        if (obj.isOpen) {
            for (var j=0; j<obj.children.length;j++) {
                obj.children[j].SetPosition(theTop,x)
                theTop+=obj.children[j].height;
            } 
        }
        theTop+=2
    }
}
//-->
</SCRIPT>
<SCRIPT LANGUAGE=javascript>
<!--
MenuPoints=new Array();
MenuPointExpanded=null;
function MenuPoint(title,fontSize,fontFamily,isImg,width,height)
{
    this.name=\"MP\"+MenuPoints.length;
    this.obj=this.name+\"obj\";
    eval(this.obj+\"=this\");
   
    this.count=MenuPoints.length;
    MenuPoints[this.count]=this;
   
    this.title=title;
    this.isImg=isImg;
    this.fontSize=fontSize;
    this.fontFamily=fontFamily;
    this.width=this.isImg?width:MenuPointMaxWidth;
    this.height=this.isImg?height:this.fontSize+6;
   
    this.isOpen=false;
    this.children=new Array();
   
    this.GetHTML=MenuPoint_getHTML;
    this.Init=MenuPoint_init;
    this.SetPosition=MenuPoint_setPosition;
    this.Expand=MenuPoint_expand;
    this.Collapse=MenuPoint_collapse;
    this.Mousedown=MenuPoint_mousedown;
}
function MenuPoint_getHTML()
{
    var styleStr=\'POSITION:absolute;TOP:0;LEFT:0;\'
    styleStr+=\'width:\'+this.width+\';height:\'+this.height+\';CLIP:rect(0px \'+this.width+\'px \'+this.height+\'px 0px);CURSOR:hand;\'
   
    return \'<div id=MP\'+this.name+\' STYLE=\"\'+styleStr+\'\">\'+this.title+\'</DIV>\';
}
function MenuPoint_init()
{
    this.element=IE?document.all[\'MP\'+this.name]:document.menuen.document.layers[\'MP\'+this.name];
    this.css=IE?this.element.style:this.element;
    if (!IE) this.element.captureEvents(Event.MOUSEDOWN);
    this.element.onmousedown=new Function(\"e\",this.obj+\".Mousedown()\");
}
function MenuPoint_setPosition(y,x)
{
    this.css.top=y;
    if (typeof(x)!=\"undefined\") this.css.left=x;
}
function MenuPoint_expand(){
    this.isOpen=true;
    if (MenuPointExpanded!=null) MenuPointExpanded.Collapse();
    MenuPointExpanded=this;
    for (var i in this.children) this.children[i].Show()
}
function MenuPoint_collapse(){
    this.isOpen=false;
    MenuPointExpanded=null;
    for (var i in this.children) this.children[i].Hide();
}
function MenuPoint_mousedown()
{
    if (this.isOpen) this.Collapse();
    else this.Expand();   
    SetAllPositions()
}
//-->
</SCRIPT>
<SCRIPT LANGUAGE=javascript>
<!--
SubMenues=new Array()
function SubMenu(title,url,parentMenu,fontSize,fontFamily,width)
{
    this.name=\"SM\"+SubMenues.length;
    this.obj=this.name+\"obj\";
    eval(this.obj+\"=this\");
   
    this.count=SubMenues.length;
    SubMenues[this.count]=this;
   
    this.title=title;
    this.url=url;
    this.parentMenu=parentMenu;
    this.fontSize=fontSize;
    this.fontFamily=fontFamily;
   
    this.width=typeof(width)==\"undefined\"? MenuPointMaxWidth:width;
    this.height=this.fontSize+6;
   
    this.parentMenu.children[this.parentMenu.children.length]=this;
   
    this.GetHTML=SubMenu_getHTML;
    this.Init=SubMenu_init;
    this.SetPosition=SubMenu_setPosition;
    this.Show=new Function(\"\",\"this.css.visibility=\'visible\'\");
    this.Hide=new Function(\"\",\"this.css.visibility=\'hidden\'\");
    this.Mousedown=SubMenu_mousedown;
}
function SubMenu_getHTML()
{
    var styleStr=\'POSITION:absolute;TOP:0;LEFT:0;WIDTH:\'+this.width+\';HEIGHT:\'+this.height+\';CLIP:rect(0px \'+this.width+\'px \'+this.height+\'px 0px);VISIBILITY:hidden;FONT:\'+this.fontSize+\'px \'+this.fontFamily+\';CURSOR:hand;\';
    return \'<DIV ID=SM\'+this.name+\' STYLE=\"\'+styleStr+\'\">\'+this.title+\'</DIV>\'
}
function SubMenu_init()
{
    this.element=IE?document.all[\'SM\'+this.name]:document.menuen.document.layers[\'SM\'+this.name];
    this.css=IE?this.element.style:this.element;
    if (!IE) this.element.captureEvents(Event.MOUSEDOWN);
    this.element.onmousedown=new Function(\"e\",this.obj+\".Mousedown()\");
}
function SubMenu_setPosition(y,x)
{
    this.css.top=y;
    if (typeof(x)!=\"undefined\") this.css.left=x;
}
function SubMenu_mousedown()
{
    window.open(this.url)
}
//-->
</SCRIPT>

</head>
<body onload=\"document_onload()\">
<DIV ID=menuen>

</DIV>
</body>
</html>
Avatar billede nixen Nybegynder
29. januar 2001 - 01:41 #7
..testet i IE5.0 og NS4.7 på win2k..
By the way så hedder IE-only ekvivalenten noget så simpelt som:

<HTML><HEAD>
<STYLE>
BODY                { background-color: black;color: gold; font: 24pt sans-serif; }
UL                  { cursor: hand; }
UL LI                { display: none;font: 18pt;list-style: square; }
UL.showList LI      { display: block; }
.defaultStyles UL    { color: gold; }
UL.defaultStyles LI  { display: none; }
</STYLE>
</HEAD>
<BODY>
<H2>Example: Expanding Table of Contents</H2>

<UL onclick=\"this.className=\'showList\';\"
    ondblclick=\"this.className=\'defaultStyles\';\"
    onmouseover=\"this.style.color=\'orange\';\"
    onmouseout=\"this.style.color=\'gold\'\">Part I: DHTML Text Features
    <LI><A HREF=\"about:blank.htm\">Activating Text in Response to User Actions</A>
    <LI><A HREF=\"about:blank.htm\">Showing Text on Demand Using the CSS <B>DISPLAY</B> Attribute</A>
    <LI><A HREF=\"about:blank.htm\">Animating Text by Character and Whole Words</A>
</UL>
<UL onclick=\"this.className=\'showList\';\"
    ondblclick=\"this.className=\'defaultStyles\';\"
    onmouseover=\"this.style.color=\'orange\';\"
    onmouseout=\"this.style.color=\'gold\'\">Part II: Filter Effects
    <LI><A HREF=\"about:blank.htm\">Creating Interpage Transitions</A>
    <LI><A HREF=\"about:blank.htm\">Layering Graphical Objects</A>
    <LI><A HREF=\"about:blank.htm\">Using Paths to Create Flying Text</A>
    <LI><A HREF=\"about:blank.htm\">Generating Sliding Text with CSS Positioning</A>
</UL>
<UL onclick=\"this.className=\'showList\';\"
    ondblclick=\"this.className=\'defaultStyles\';\"
    onmouseover=\"this.style.color=\'orange\';\"
    onmouseout=\"this.style.color=\'gold\'\">Part III: Conclusion
    <LI><A HREF=\"about:blank.htm\">Closing Remarks</A>
</UL>
</BODY>
</HTML>

.. det har jeg bare aldrig kunnet få til at fungere i Netscape - Hvis Ole kan synes jeg han skal oplyse alle os tumper om hvordan man gør :)

Hvis du vil lave en mere avanceret menu-struktur har jeg ladet mig fortælle at www.webreference.com har en udmærket tutorial \"Hierarchical Menues\"..
Avatar billede madsmm Nybegynder
29. januar 2001 - 16:07 #8
Her er et lille eksempel jeg har lavet, og det virker i netscape... så skal du bare udskifte headerdelen til at have et billede i stedet for navnet!

Håber det kan bruges

------ JavaScript DOKUMENT START ------

    var menu = new Array();                                // Opretter et array til menuelementerne
    var menuTemp = new Array();                            // Midlertidigt array til menuopbygning
    var last = null;                                    // Sætter den sidst klikkede til null - dvs. ingen
    var item = 1;

    function writestr(str) {                            // Skriver menustrengen i rigtige browser
        ns = document.layers?true:false;
        ie = document.all?true:false;
        if (ie)
            document.all.menu.innerHTML = str;
        else if (ns)
            with (document[\"menu\"].document) {
                open();
                write(str);
                close();
            }
        else
            document.write(\'<p>Menufejl!\');       
    }

    function menuItem(text, url, parentNode,descrip) {    // Bruges til at oprette menupunkterne
        this.text = text;
        this.url = url;
        this.parentNode = parentNode;                    // Sættes til 0 hvis det er en top menu, sættes til overskriftens nr, hvis det er en undermenu
        this.descrip = descrip;
        return this;
    }

    function addHeader(navn,popup) {
        menuTemp[item] = new menuItem(navn,\'#\',\'0\',popup);
        item++;
    }

    function addItem(navn,url,popup) {
        menuTemp[item] = new menuItem(navn,url,\'0\',popup);
        item++;
    }

    function createMenu() {
        var headerNum;

        for (i=1;i<menuTemp.length;i++) {
            if (menuTemp[i].url==\'#\') {                    // header
                if (menuTemp[i].descrip==\'\')
                    menuTemp[i].descrip = menuTemp[i].text;
                menu[i] = new menuItem(menuTemp[i].text,menuTemp[i].url,\'0\',menuTemp[i].descrip);
                headerNum = i;
            } else {                                    // Item
                if (menuTemp[i].descrip==\'\')
                    menuTemp[i].descrip = menuTemp[i].text;
                menu[i] = new menuItem(menuTemp[i].text,menuTemp[i].url,headerNum,menuTemp[i].descrip);
            }
        }   
    }

    function showTree(aktiv) {                            // Menu-strukturen dannes
        var str = \"<table border=0 width=\'120\' cellspacing=\'0\' cellpadding=\'0\'>\";

        if (last==aktiv) {                                // hvis der klikkes på en allerede åben menu, så luk
            aktiv=null;
        }
       
        for (i=1;i<menu.length;++i) {                    // løb menuen igennem
            if (menu[i].parentNode==0) {                // er det en overskrift
                if (i==aktiv) {                            // tegn et åbent menupunkt           
                    str+=\'<tr><td valign=\"top\" style=\"padding-top : 3px;\" width=\"8\" align=\"center\"><a href=\"java script:showTree(\'+i+\');\" title=\"\'+menu[i].descrip+\'\" onMouseOver=\"java script:window.status=\\\'\'+menu[i].descrip+\'\\\'; return true;\" onMouseOut=\"java script:window.status=\\\'\\\'; return true;\"><img src=\"open.gif\" border=\"0\" valign=\"absmiddle\"></a></td><td valign=\"top\"><a href=\"java script:showTree(\'+i+\');\" title=\"\'+menu[i].descrip+\'\" onMouseOver=\"java script:window.status=\\\'\'+menu[i].descrip+\'\\\'; return true;\" onMouseOut=\"java script:window.status=\\\'\\\'; return true;\">&nbsp;\'+menu[i].text+\'</a></td>\'   
                } else {                                // tegn et lukket menupunkt
                    str+=\'<tr><td valign=\"top\" style=\"padding-top : 3px;\" width=\"8\" align=\"center\"><a href=\"java script:showTree(\'+i+\');\" title=\"\'+menu[i].descrip+\'\" onMouseOver=\"java script:window.status=\\\'\'+menu[i].descrip+\'\\\'; return true;\" onMouseOut=\"java script:window.status=\\\'\\\'; return true;\"><img src=\"closed.gif\" border=\"0\"></a></td><td valign=\"top\"><a href=\"java script:showTree(\'+i+\');\" title=\"\'+menu[i].descrip+\'\" onMouseOver=\"java script:window.status=\\\'\'+menu[i].descrip+\'\\\'; return true;\" onMouseOut=\"java script:window.status=\\\'\\\'; return true;\">&nbsp;\'+menu[i].text+\'</a></td>\'
                }
            } else {
                if (menu[i].parentNode==aktiv)            // udskriv alle submenupunkter, hvis denne menuheader er valgt
                    str+=\'<tr><td valign=\"top\" align=\"right\"><a href=\"\'+menu[i].url+\'\" target=\"\" onMouseOver=\"java script:window.status=\\\'\'+menu[i].descrip+\'\\\'; return true;\" onMouseOut=\"java script:window.status=\\\'\\\'; return true;\" title=\"\'+menu[i].descrip+\'\">-</a></td><td valign=\"top\"><a href=\"\'+menu[i].url+\'\" target=\"\" onMouseOver=\"java script:window.status=\\\'\'+menu[i].descrip+\'\\\'; return true;\" onMouseOut=\"java script:window.status=\\\'\\\'; return true;\" title=\"\'+menu[i].descrip+\'\">&nbsp;\'+menu[i].text+\'</a></td>\'
            }
        }

        last=aktiv;                                        // Gem hvad der lige er klikket på
        writestr(str);                                    // Skriv menutræet på skærmen
    }

------ JavaScript DOKUMENT SLUT ------


------ HTML DOKUMENT START ------

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<HTML>
<HEAD>
<TITLE> TEST </TITLE>
<META NAME=\"Generator\" CONTENT=\"EditPlus\">
<META NAME=\"Author\" CONTENT=\"\">
<META NAME=\"Keywords\" CONTENT=\"\">
<META NAME=\"Description\" CONTENT=\"\">
<style>
    a:link,a:visited {
        font-family : Tahoma;
        color : ffffee;
        text-decoration : none;
        font-size : 8pt;
    }
    a:hover,a:active {
        color : ff0000;
    }
    p {
        font-family : Tahoma;
        color : aaaaaa;
    }
</style>

<script language=\"JavaScript\" src=\"menu.js\"></script>
<script language=\"JavaScript\">
<!--

    addHeader(\'Sort by category\',\'\');
    addItem(\'Games\',\'-\',\'\');
    addItem(\'HTML\',\'-\',\'\');
    addItem(\'PHP\',\'-\',\'\');
    addItem(\'WebServer\',\'-\',\'\');
    addHeader(\'Alphabeticaly\',\'\');
    addItem(\'A\',\'-\',\'\');
    addItem(\'B\',\'-\',\'\');
    addItem(\'C\',\'-\',\'\');

-->
</script>

</HEAD>

<BODY BGCOLOR=\"#090909\" onLoad=\"java script:createMenu(); java script:showTree();\">

<br>
<table width=\"120\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">
<tr width=\"100%\">
    <td>
        <div id=\"menu\" style=\"absolute;\">&nbsp;</div>
    </td>
</tr>

</BODY>
</HTML>

------ HTML DOKUMENT SLUT ------
Avatar billede madsmm Nybegynder
29. januar 2001 - 16:07 #9
og det var self et svar.... og ikke en kommentar :)
Avatar billede nixen Nybegynder
30. januar 2001 - 15:03 #10
hvordan kan du mene at det vil virke i Netscape??? No way du kan definere et lag med <DIV STYLE=\"absolute\"> ;-)
Ud over det har dit skript følgende problemer:
1) Det eneste det skriver ud i NS6 er...\"menufejl!\"
2) Ns 4 kan slet ikke håndtere at skrive en menu ud i et lag hver gang du trykker på noget. Afhængigt af maskinens ydeevne vil jeg skyde på at browseren crasher et sted mellem 3 og 10 tryk..
Avatar billede nixen Nybegynder
30. januar 2001 - 15:34 #11
...for ikke at nævne \"parentNode\" som du bruger i ShowTree-funktionen..
Avatar billede madsmm Nybegynder
30. januar 2001 - 15:38 #12
damn... jeg har vist taget fejl mht. ns

men den ene procent der bruger netscape må bare gå uden om min menu.... ej det kan man self ikke kræve :)

men det spiller bare derudaf i IE
Avatar billede nixen Nybegynder
30. januar 2001 - 17:49 #13
helt sikkert, men i IE er der slet ingen grund til at lave det så kompliceret - se evt.mit indlæg af 29/01 2001 01:41:13.
Pointen er at du bare kan skifte \"display\"-propertyen i IE - der er ingen grund til at tegne lukkede menupunkter etc.etc. :) 
Avatar billede danriis Nybegynder
30. januar 2001 - 22:40 #14
Tak for jeres svar!! Men jeg har fået hjælp \"udefra\" (via mail). Men jeg alligevel får i dog 200 point til deling.
Avatar billede danriis Nybegynder
30. januar 2001 - 22:42 #15
Til tak for jeres svar!

Mvh. Dan
Avatar billede 12tri Nybegynder
31. januar 2001 - 14:35 #16
Må vi se hvad du har fået ud af det :-)
Avatar billede madsmm Nybegynder
31. januar 2001 - 14:39 #17
ja det ville da være rart, hvis du vil dele :D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester