Avatar billede hans01 Nybegynder
22. marts 2006 - 18:35 Der er 34 kommentarer og
1 løsning

Hjælp til ændring af dropdown menu

Er der nogen der kan hjælpe mig med at modificere i en dropdown menu, så man kan lave eksterne links til at åbne i et nyt vindue.

Min menu_script.js ser sådan ud:

var ve=true;    // true - the main menu runs vertically, false - horizontally
//    After change, modify same values in your *.css file:
var tdColor="#000000";        // menu item text color
var tdBgColor="#999999";    // menu item background color
var hlColor="#000000";        // highlight text color
var hlBgColor="#FFFFBB";    // highlight background color
var md=250;
var ti=-1;
var oTd=new Object;
oTd=null;
function doMenu(td){
    clearTimeout(ti);
    td.style.backgroundColor=hlBgColor;
    td.style.color=hlColor;
    var i;
    var sT="";
    var tda=new Array();
    tda=td.id.split("_");
    if(oTd!=null){
        var tdo=new Array();
        tdo=oTd.id.split("_");
        for(i=1;i<tdo.length;i++){
            sT+="_"+tdo[i];
            if(tdo[i]!=tda[i]){
                document.getElementById("td"+sT).style.backgroundColor=tdBgColor;
                document.getElementById("td"+sT).style.color=tdColor;
                if(document.getElementById("tbl"+sT)!=null)
                    document.getElementById("tbl"+sT).style.visibility="hidden";
            }
        }           
    }
    oTd=td;
    sT="tbl";
    for(i=1;i<tda.length;i++)
        sT+="_"+tda[i];
    if(document.getElementById(sT)!=null)
        document.getElementById(sT).style.visibility="visible";

}
function clearMenu(){
    if(oTd!=null){
        var tdo=new Array();
        tdo=oTd.id.split("_");
        var sT="";
        for(var i=1;i<tdo.length;i++){
            sT+="_"+tdo[i];
            document.getElementById("td"+sT).style.backgroundColor=tdBgColor;
            document.getElementById("td"+sT).style.color=tdColor;
            if(document.getElementById("tbl"+sT)!=null)
                document.getElementById("tbl"+sT).style.visibility="hidden";
        }
        oTd=null;           
    }
}
function runMenu(strURL){
    location.href=strURL;
}
var tt="";
var sT="";
var pT=new Array();
var tA=new Array();
function getCoord(st){
    tA=st.split("_");
    if(tA.length>2){
        tA=tA.slice(0,-1);
        tt=tA.join("_");
        return (document.getElementById("tbl"+tt).offsetTop+document.getElementById("td"+st).offsetTop+4)+"px;left:"+
            (document.getElementById("tbl"+tt).offsetLeft+document.getElementById("td"+st).offsetWidth-2)+"px'>";
    }
    var p1=ve?document.getElementById("td"+st).offsetTop+4:document.getElementById("td"+st).offsetHeight-2;
    var p2=ve?document.getElementById("mainmenu").offsetWidth-4:document.getElementById("td"+st).offsetLeft+5;
    return (document.getElementById("mainmenu").offsetTop+p1)+"px;left:"+(document.getElementById("mainmenu").offsetLeft+p2)+"px'>";
}
if(document.getElementById){
var g1=ve?"":"<tr>";
var g2=ve?"":"</tr>";
var v1=ve?"<tr>":"";
var v2=ve?"</tr>":"";
var v3=ve?" style='float:left'>":">";
var sH="<table class='menu' id='mainmenu' cellspacing='0'"+v3+g1;
var p=0;
var j=0;
while(eval("typeof(td_"+ ++j +")!='undefined'")){
    sH+=v1+"<td id='td_"+j+"' onmouseover='doMenu(this)' onmouseout=\"ti=setTimeout('clearMenu()',md)\"";
    sH+=(eval("typeof(url_"+j+")!='undefined'"))?" onclick=\"runMenu('"+eval("url_"+j)+"')\">":">";
    sH+=eval("td_"+j)+"</td>"+v2;
    if (eval("typeof(td_"+j+"_1)!='undefined'"))
        pT[p++]="_"+j;
}
sH+=g2+"</table>";
document.write(sH);
for(var q=0;typeof(pT[q])!="undefined";q++){
    sT=pT[q];
    sH="";
    j=0;
    sH+="<table class='menu' id='tbl"+sT+"' cellspacing='0' style='top:"+getCoord(sT);
    while(eval("typeof(td"+sT+"_"+ ++j +")!='undefined'")){
        sH+="<tr><td id='td"+sT+"_"+j+"' onmouseover='doMenu(this)' onmouseout=\"ti=setTimeout('clearMenu()',md)\"";
        sH+=(eval("typeof(url"+sT+"_"+j+")!='undefined'"))?" onclick=\"runMenu('"+eval("url"+sT+"_"+j)+"')\">":">";
        sH+=eval("td"+sT+"_"+j)+"</td></tr>";
        if (eval("typeof(td"+sT+"_"+j+"_1)!='undefined'"))
            pT[p++]=sT+"_"+j;
    }
    sH+="</table>";
    document.write(sH);
}
document.getElementById("mainmenu").style.visibility="visible";
}
else document.write("<p>This page uses DHTML and DOM, but your browser doesn't support them.</p>");

Og Menu_data.js ser sådan ud:

td_4_3_1 = "Custom Chrome"
td_4_3_2 = "Exile cycles"
td_4_3_3 = "W & W cycles"
td_4_3_4 = "Zodiac"
url_4_3_1 = "www.custom-chrome-europe.com"
url_4_3_2 = "www.exilecycles.com"
url_4_3_3 = "www.wwag.com"
url_4_3_4 = www.zodiac.nl”
Avatar billede mm12010 Nybegynder
23. marts 2006 - 15:40 #1
jeg vil tror at du kan opnå den ønskede funktionalitet ved at tjecke sådan her:

domain="eksperten";//Dit domæne
function runMenu(strURL){
  if(strURL.replace(/^(http:\/\/)?(www\.)?/gi,"").substr(0,domain.length)!=domain&&strURL.substr(0,7)!="mailto:") window.open(strURL);
  else location.href=strURL;
}

der tages højde for mail-links men ikke for subdomæner eller andre protekoller end http
Avatar billede hans01 Nybegynder
23. marts 2006 - 16:06 #2
Mener du jeg skal ændre i menu data fra:
function runMenu(strURL){
    location.href=strURL;
}

til:
domain="eksperten";//Dit domæne
function runMenu(strURL){
  if(strURL.replace(/^(http:\/\/)?(www\.)?/gi,"").substr(0,domain.length)!=domain&&strURL.substr(0,7)!="mailto:") window.open(strURL);
  else location.href=strURL;
Avatar billede mm12010 Nybegynder
23. marts 2006 - 16:08 #3
jepper !-)
Avatar billede hans01 Nybegynder
23. marts 2006 - 20:59 #4
Jamen så prøver jeg lige din anvisning.
Avatar billede hans01 Nybegynder
07. april 2006 - 17:45 #5
Sorry der gik lidt lang til inden jeg kunne teste scriptet, men der kommer en fejlmeldning, har du et tip
Avatar billede mm12010 Nybegynder
07. april 2006 - 17:56 #6
det afhænger lidt af hvilken fejlmelding det er !-)

har du evt et link til siden?
Avatar billede hans01 Nybegynder
07. april 2006 - 18:10 #7
Avatar billede hans01 Nybegynder
07. april 2006 - 18:15 #8
Avatar billede mclemens Nybegynder
07. april 2006 - 18:31 #9
P.s.: du har angivet domain er forkert:
domain="Harley Davidson";//www.harley-davidson-mc.dk
->
domain="harley-davidson-mc";
(tror jeg nok :P )
Avatar billede mclemens Nybegynder
07. april 2006 - 18:31 #10
domain er = domainet
Avatar billede hans01 Nybegynder
07. april 2006 - 18:54 #11
http://www.harley-davidson-mc.dk/www.custom-chrome-europe.com

den lægger lige som henvisningen i enden af mit domaine.
Avatar billede mclemens Nybegynder
07. april 2006 - 19:02 #12
Prøv det her:

i http://www.harley-davidson-mc.dk/Scripts/dropdownmenu/menu_data.js
url_4_3_1 = "www.custom-chrome-europe.com"
url_4_3_2 = "www.exilecycles.com"
url_4_3_3 = "www.wwag.com"
url_4_3_4 = "www.zodiac.nl"

skiftes til:

url_4_3_1 = "http://www.custom-chrome-europe.com"
url_4_3_2 = "http://www.exilecycles.com"
url_4_3_3 = "http://www.wwag.com"
url_4_3_4 = "http://www.zodiac.nl"



samt i http://www.harley-davidson-mc.dk/Scripts/dropdownmenu/menu_script.js
function runMenu(strURL){
    location.href=strURL;
}

rettes til:
domain="harley-davidson-mc";
function runMenu(strURL){
  if(strURL.replace(/^(http:\/\/)?(www\.)?/gi,"").substr(0,domain.length)!=domain&&strURL.substr(0,7)!="mailto:") window.open(strURL);
  else location.href=strURL;
Avatar billede mclemens Nybegynder
07. april 2006 - 19:02 #13
}
Avatar billede hans01 Nybegynder
07. april 2006 - 19:14 #14
Samme fejl
Avatar billede mclemens Nybegynder
07. april 2006 - 19:18 #15
Samme fejl>
- hvordan tester du???
... du retter i denne fil www.harley-davidson-mc.dk/menu_script.js
men filerne som din side bruger er disse to:
http://www.harley-davidson-mc.dk/Scripts/dropdownmenu/menu_data.js
http://www.harley-davidson-mc.dk/Scripts/dropdownmenu/menu_script.js

- har du prøvet det i 07/04-2006 19:02:19
Avatar billede mclemens Nybegynder
07. april 2006 - 19:21 #16
samt den ekstra } jeg glemte :/
(den ekstra der står i 07/04-2006 19:02:54)
Avatar billede hans01 Nybegynder
07. april 2006 - 19:22 #17
Så er fejlen der, retter med det samme
Avatar billede hans01 Nybegynder
07. april 2006 - 19:24 #18
Nej jeg retter i den rigtige fil, kan du ikke lave det endelige script igen?
Avatar billede mclemens Nybegynder
07. april 2006 - 19:30 #19
Nej jeg retter i den rigtige fil, kan du ikke lave det endelige script igen?>
- forstår ikke lige... vil du have hele menu_data.js samt menu_script.js postet?
eller bare rettelserne fra 07/04-2006 19:02:19 igen med den } der røg ned i den meddellelse der ligger lige under igen?
Avatar billede mclemens Nybegynder
07. april 2006 - 19:43 #20
- jeg kan sagtens poste de endelige scripts med rettelserne, hvis det er :)
Avatar billede hans01 Nybegynder
07. april 2006 - 19:46 #21
Nej bare rettelserne med { :/
Avatar billede mclemens Nybegynder
07. april 2006 - 19:47 #22
brug denne her: (du skal bare definere eksterne links med http:// foran linket her er den nye menu_data.js du kan godt lade menu_script.js være som den er :)
Avatar billede mclemens Nybegynder
07. april 2006 - 19:48 #23
nå ok bare sæt http:// foran links i menu_data.js som her:

url_4_3_1 = "http://www.custom-chrome-europe.com"
url_4_3_2 = "http://www.exilecycles.com"
url_4_3_3 = "http://www.wwag.com"
url_4_3_4 = "http://www.zodiac.nl"
Avatar billede mclemens Nybegynder
07. april 2006 - 19:49 #24
- du behæver ikke rette det andet script :)
Avatar billede mclemens Nybegynder
07. april 2006 - 19:50 #25
behæver = behøver ... det går godt for mig :D
Avatar billede hans01 Nybegynder
07. april 2006 - 19:51 #26
Det har jeg gjort, men fejlen er den sammen, den lægger linket ovenpå mit domain
Avatar billede hans01 Nybegynder
07. april 2006 - 19:53 #27
Nu har jeg det jeg oploader til den forkerte folder.
Avatar billede mclemens Nybegynder
07. april 2006 - 19:54 #28
det hjalp :)
Avatar billede hans01 Nybegynder
07. april 2006 - 19:58 #29
Jeps smid lige et svar og modtag min dybe tak og lidt symbolske o´points
Avatar billede mclemens Nybegynder
07. april 2006 - 20:01 #30
mm12010> Dit forslag var meget godt, dog ikke nødvendigt ved dette script
- der skulle bare rettes adressen i data filen ... skal vi dele pointene?
Avatar billede mclemens Nybegynder
07. april 2006 - 20:02 #31
skal vi dele pointene? -> skal vi ikke dele pointene? ;)
Avatar billede hans01 Nybegynder
07. april 2006 - 20:03 #32
jeps MM12010 smip lige et svar
Avatar billede mclemens Nybegynder
07. april 2006 - 20:07 #33
Avatar billede hans01 Nybegynder
07. april 2006 - 20:10 #34
Tak for det: god weekend
Avatar billede mclemens Nybegynder
07. april 2006 - 20:10 #35
- og tak for point Hans :)
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