Avatar billede dm_mx Nybegynder
07. februar 2004 - 13:31 Der er 8 kommentarer

Menuproblemer - folder sammen ved valg

Har følgende 2 problemer med min javascript menu :

1) der er ikke link på hovedmenupunkterne - ved at klikke på disse bliver undermenuerne blot valgt.

2) ved valg af en undermenu kommer den valgte side rigtigt nok frem, men menuen er foldet sammen på siden.

Sitet er opbygget i ASP - og selve menuen tabllen bliver hentet via include.

Kilde kolde:

<title>Testing crap</title>
  <style type="text/css">
.menuOut {cursor:pointer; margin:2px; background-color:#0099cc; color:#000000; width:120px; border:1px solid #000000; padding:2px; text-align:center; font-family:arial; font-weight:bold;}
.menuOver {cursor:pointer; margin:2px; background-color:#000000; color:#0099cc; width:120px; border:1px solid #0099cc; padding:2px; text-align:center; font-family:arial; font-weight:bold;}
.submenu {width:115px; font-family:arial; font-size:11px; padding-left:5px;}
.submenu a {color:#000080; text-decoration:none; font-weight:none;}
.submenu a:hover {color:#ff0000; text-decoration:none; font-style:none; font-weight:none;}
</style>
<script type="text/javascript">
/* 
Script made by Martial Boissonneault © 2001-2003 http://getElementById.com/
This script may be used and changed freely as long as this msg is intact
Visit http://getElementById.com/ for more free scripts and tutorials.
Script featured at SimplytheBest.net http://simplythebest.net/scripts/
*/
function SwitchMenu(obj){
    if(document.getElementById){
    var el = document.getElementById(obj);
    var ar = document.getElementById("cont").getElementsByTagName("DIV");
        if(el.style.display == "none"){
            for (var i=0; i<ar.length; i++){
                ar[i].style.display = "none";
            }
            el.style.display = "block";
        }else{
            el.style.display = "none";
        }
    }
}
function ChangeClass(menu, newClass) {
    if (document.getElementById) {
        document.getElementById(menu).className = newClass;
    }
}
document.onselectstart = new Function("return true");
</script>
 
</head>

<body>

<!-- Menu start -->
<div id="cont">
    <p id="menu1" class="menuOut" onclick="SwitchMenu('sub1')" onmouseover="ChangeClass('menu1','menuOver')" onmouseout="ChangeClass('menu1','menuOut')">SHAREWARE</p>
    <div class="submenu" id="sub1" style="display:none;">
        • <a href="http://simplythebest.net/shareware/business/" title="Business shareware">Business</a><br/>
        • <a href="http://simplythebest.net/shareware/educational/" title="Educational shareware">Educational</a><br/>
        • <a href="http://simplythebest.net/games/" title="Games shareware">Games</a><br/>
        • <a href="http://simplythebest.net/shareware/graphics/" title="Graphics shareware">Graphics</a><br/>
        • <a href="http://simplythebest.net/shareware/hobby/" title="Hobby shareware">Hobby</a><br/>
        • <a href="http://simplythebest.net/shareware/music/" title="Music shareware">Music</a><br/>
        • <a href="http://simplythebest.net/shareware/programming/" title="Programming shareware">Programming</a><br/>
        • <a href="http://simplythebest.net/shareware/utilities/" title="Utilities shareware">Utilities</a><br/>
        • <a href="http://simplythebest.net/shareware/web_utilities/" title="Internet utilities shareware">Web utilities</a>
    </div>

    <p id="menu2" class="menuOut" onclick="SwitchMenu('sub2')" onmouseover="ChangeClass('menu2','menuOver')" onmouseout="ChangeClass('menu2','menuOut')">SCRIPTS</p>
    <div class="submenu" id="sub2" style="display:none;">
        • <a href="http://simplythebest.net/cgiscripts/" title="CGI scripts">CGI scripts</a><br/>
        • <a href="http://simplythebest.net/scripts/" title="DHTML scripts & Javascripts">DHTML scripts</a>
    </div>

    <p id="menu3" class="menuOut" onclick="SwitchMenu('sub3')" onmouseover="ChangeClass('menu3','menuOver')" onmouseout="ChangeClass('menu3','menuOut')">INFO LIBRARY</p>
    <div class="submenu" id="sub3" style="display:none;">
        • <a href="http://simplythebest.net/info/anti_virus.html" title="Anti-virus">Anti-virus</a><br/>
        • <a href="http://simplythebest.net/info/asp.html" title="ASP">ASP</a><br/>
        • <a href="http://simplythebest.net/info/graphics_design.html" title="Graphics design">Graphics design</a><br/>
        • <a href="http://simplythebest.net/info/htmlinfo.html" title="HTML">HTML</a><br/>
        • <a href="http://simplythebest.net/info/linux.html" title="Linux Unix">Linux/Unix</a><br/>
        • <a href="http://simplythebest.net/info/mysql.html" title="MySQL">MySQL</a><br/>
        • <a href="http://simplythebest.net/cgiscripts/perl.html" title="PERL">PERL</a><br/>
        • <a href="http://simplythebest.net/info/security_issues.html" title="Security">Security issues</a><br/>
        • <a href="http://simplythebest.net/info/servers.html" title="Servers">Servers</a><br/>
        • <a href="http://simplythebest.net/sounds/sound_guide.html" title="Sound guide">Sound guide</a><br/>
        • <a href="http://simplythebest.net/info/spyware.html" title="Spyware">Spyware</a><br/>
        • <a href="http://simplythebest.net/info/" title="Click here for more">And more...</a>
    </div>
   
    <p id="menu4" class="menuOut" onclick="SwitchMenu('sub4')" onmouseover="ChangeClass('menu4','menuOver')" onmouseout="ChangeClass('menu4','menuOut')">STB LIBRARIES</p>
    <div class="submenu" id="sub4" style="display:none;">
        • <a href="http://simplythebest.net/affiliates/" title="Affiliate programs">Affiliate programs</a><br/>
        • <a href="http://simplythebest.net/cgiscripts/cgiscripts.html" title="CGI scripts">CGI scripts</a><br/>
        • <a href="http://simplythebest.net/cgi-bin/suite/classifieds/classifieds.cgi" title="Classifieds">Classified ads</a><br/>
        • <a href="http://simplythebest.net/drivers/drivers.html" title="Drivers">Device drivers</a><br/>
        • <a href="http://simplythebest.net/scripts/" title="DHTML scripts">DHTML scripts</a><br/>
        • <a href="http://simplythebest.net/fonts/" title="Free fonts">Free fonts</a><br/>
        • <a href="http://simplythebest.net/hosting/" title="Hosting providers">Hosting providers</a><br/>
        • <a href="http://simplythebest.net/info/" title="Information library">Information library</a><br/>
        • <a href="http://simplythebest.net/search/search.html" title="Metasearch">Metasearch</a><br/>
        • <a href="http://simplythebest.net/shareware/" title="Shareware & Freeware">Shareware</a><br/>
        • <a href="http://simplythebest.net/shop/" title="Shopping">Shopping</a><br/>
        • <a href="http://simplythebest.net/sounds/" title="Free sounds">Sounds</a><br/>
        • <a href="http://simplythebest.net/web_builder/" title="Web builder">Web builder</a>
    </div>
   
    <p id="menu5" class="menuOut" onclick="SwitchMenu('sub5')" onmouseover="ChangeClass('menu5','menuOver')" onmouseout="ChangeClass('menu5','menuOut')">PLANMAGIC</p>
    <div class="submenu" id="sub5" style="display:none;">
        • <a href="http://planmagic.com/business_planning.html" title="Business plan">Business plan</a><br/>
        • <a href="http://planmagic.com/marketing_planning.html" title="Marketing plan">Marketing plan</a><br/>
        • <a href="http://planmagic.com/financial_planning.html" title="Financial plan">Financial plan</a><br/>
        • <a href="http://planmagic.com/webquest.html" title="Web marketing plan">Web marketing plan</a>
    </div>
</div>
<!-- Menu end -->

Tak
Avatar billede roenving Novice
07. februar 2004 - 14:21 #1
Hvis du re-loader hele siden, vil menuerne jo gå tilbage til default ...

-- det kan kun klares ved at have dit øvrige indhold i en anden frame eller ved at besøge kagebageriet (skrive en cookie og aflæse den onload !-)

I øvrigt kan det på det stærkeste frarådes, at skifte klasse on-the-fly, selv M$, som jo plejer at prale med de ting, deres software kan, fraråder det på det kraftigste, og anbefaler at man ændrer properties i stedet ...

Det kan nu også klares med nogle ganske få kodelinjer:

function ChangeClass(menu, newClass) {
  if (document.getElementById) {
    var m = document.getElementById(menu).style;
    switch(newClass){
      case 'menuOver':
        m.backgroundColor = "#000";
        m.color = m.borderColor = "#09c";
        break;
      case 'menuOut':
        m.backgroundColor = "#09c";
        m.color = m.borderColor = "#000";
        break;
  }
}
Avatar billede roenving Novice
07. februar 2004 - 14:22 #2
Hov, der manglede en } til sidst !-)
Avatar billede dm_mx Nybegynder
09. februar 2004 - 10:01 #3
OK - tak det prøver jeg,

Hvad med link i overskrifterne ? Det er således at når man trykker på overskrifterne så kommer man ikke til "side1" i kategorien, men menuen foldes blot ud.

Har du en løsning på det?
Avatar billede roenving Novice
09. februar 2004 - 15:59 #4
Sådan at man sendes til det første link på listen ?-)

-- ja det kan jo klares med noget med at finde indre tags, men du har jo allerede een funktionalitet der. Skal den så fjernes ?o]

Men en funktion ku' se sådan ud:

function clickFirst(id){
  document.getElementById(id).getElementsByTagName("A")[0].click();
}

-- ganske utestet !-)
Avatar billede dm_mx Nybegynder
09. februar 2004 - 18:00 #5
Hej Igen,

Planen er at når man trykker på Hovedoverskriften - så bliver man sendt til "splash siden" for dette punkt + at undermenuerne bliver vist.

Oki?
Avatar billede roenving Novice
09. februar 2004 - 20:51 #6
Så skulle ovenstående kunne bruges med:

<p id="menu4" class="menuOut" onclick="SwitchMenu('sub4');clickFirst('sub4');" onmouseover="ChangeClass('menu4','menuOver')" onmouseout="ChangeClass('menu4','menuOut')">STB LIBRARIES</p>
Avatar billede dm_mx Nybegynder
09. marts 2004 - 14:40 #7
skidtet virker

takker

hvofor kan jeg ikke give points ???
Avatar billede roenving Novice
09. marts 2004 - 16:07 #8
Fordi jeg ikke har lagt et svar endnu, men det kan du få her: Velbekomme '-)
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