Avatar billede kappel Nybegynder
26. januar 2004 - 22:23 Der er 15 kommentarer og
1 løsning

3level menu åbner link i et nyt vindue - hvorfor?

Hej
http://eif.kappels.net/
Menuen til venstre åbnes i et nyt vindue og jeg har taget _blank væk de steder hvor den optræder.
her er 3level.htm:
<html>
<link rel="stylesheet" href="menu/3level.css">
<title>Menu</title>
<script language="JavaScript" src="menu/3level_items.js"></script>
<script language="JavaScript" src="menu/3level_menu.js"></script>
<body>
<script language="JavaScript">
create_menu('Kappels.net',Link,Prop);
</script>   
</body>
</html>

og 3level_items.js:
var l1 = new Image()
l1.src = "menu/icons/l1.gif"
var l2 = new Image()
l2.src = "menu/icons/l2.gif"
var l3 = new Image()
l3.src = "menu/icons/l3.gif"

var Link=[
[1,1,"Hjem"],
[2,3,"Forside","http://eif.kappels.net"],
[2,3,"Afstemning","http://eif.kappels.net/index.php?menu=afstemning"],
[2,3,"Gæstebog","http://eif.kappels.net/index.php?menu=gaestebog"],
[2,3,"Kontakt","http://eif.kappels.net/index.php?menu=kontakt"]

var Prop=[
15, // height of the level 1 headers
15, // height of the level 2 headers
15, // height of the level 3 headers
];

og den sidste der er i spil 3level_menu.js:

function create_menu(id,arr,parr)
{
document.write("<table><tr><td><div style='position:relative;'>");
vtop = 0;
open_div = 0
c_div = 1;
for(i=0;i<arr.length;i++)
{
  if(arr[i-1])
  {
  if(arr[i][0] < arr[i-1][0]) {document.write("</div>");open_div--;}
  if((open_div != 0) && (arr[i][0] == 1)) {document.write("</div>");open_div--;
  if((open_div == 1) && (arr[i][0] ==1)) document.write("</div>");
}
  }
  height = parr[(arr[i][1]-1)];
  if(arr[i][1] == 1) img = l1.src;
  else{if (arr[i][1] == 2) img = l2.src;
  else img = l3.src;}
  document.write("<div style='top:"+vtop+";height:"+height+"' class='level"+arr[i][0]+"'>")
  document.write("<img src="+img+" border=0 hspace=3 vspace=1 ");
  if(arr[i+1]) {if(arr[i][0] < arr[i+1][0]) document.write("onclick=change('"+ id +"_"+ c_div+"') style='cursor:hand'");}
  document.write("><a href=\"");
  if(arr[i][3] == null) document.write("java script:change('"+ id +"_"+ c_div+"')\"");
  else document.write(arr[i][3] +"\" target='"+arr[i][4]+"'");
  document.write(">"+arr[i][2]+"</a></div>");
  vtop += height;
  if(arr[i+1])
  {
  if(arr[i][0] < arr[i+1][0]) {document.write("<div style='display:none;' id='"+id+"_"+c_div+"'>");open_div++;c_div++;}
  }}
for(i=0;i<open_div;i++) document.write("</div></td></tr></table>");

document.write("</div>");
}
// free JavaScripts on http://www.ScriptBreaker.com
function change(id)
{
obj = document.getElementById(id);
if(obj.style.display == "")
{
obj.style.display = "none";
}
else
{
  obj.style.display = "";
}
}

Mvh Mikkel
Avatar billede skovenborg Nybegynder
26. januar 2004 - 23:27 #1
Problemmet er at det femte element i dit links-array definerer dit target - altså der hvor der før stod _blank. Når der nu ikke står noget så henter scriptet lige pludselig en værdi som er undefined (så vidt jeg kan tolke det) og dermed bliver dine links til <a href="..." target="undefined"> (eller et eller andet navn). Da dette target ikke eksisterer åbner browseren i stedet et nyt vindue.

Nå, det var vist nok snak for denne gang. Her er i stedet en løsning på problemet :-)

var Link=[
[1,1,"Hjem"],
[2,3,"Forside","http://eif.kappels.net","_self"],
[2,3,"Afstemning","http://eif.kappels.net/index.php?menu=afstemning","_self"],
[2,3,"Gæstebog","http://eif.kappels.net/index.php?menu=gaestebog","_self"],
[2,3,"Kontakt","http://eif.kappels.net/index.php?menu=kontakt","_self"]
Avatar billede kappel Nybegynder
27. januar 2004 - 08:00 #2
super det løste problmet - smid et svar :-)

Jeg har lige et spørgsmål til dig, det kan jo være du ved det:
Kan man gøre sådan at menu punktet [Hjem] fra starten er foldet ud med de nedenstående links:

[2,3,"Forside","http://eif.kappels.net","_self"],
[2,3,"Afstemning","http://eif.kappels.net/index.php?menu=afstemning","_self"],
[2,3,"Gæstebog","http://eif.kappels.net/index.php?menu=gaestebog","_self"],
[2,3,"Kontakt","http://eif.kappels.net/index.php?menu=kontakt","_self"]

På forhånd tak - Mikkel
Avatar billede skovenborg Nybegynder
27. januar 2004 - 18:18 #3
her er et svar i hvert fald :-)

Du kan udfolde Hjem-menuen sådan her:
<body bgcolor="#a9a9a9" onload="change('Kappels.net_1');">

Hvis du i stedet skriver Kappels.net_2  - ja så åbner den script-menuen :-)
Avatar billede skovenborg Nybegynder
27. januar 2004 - 18:20 #4
Du kan også prøve at gøre det før:
<script language="JavaScript">
create_menu('Kappels.net',Link,Prop);
change('Kappels.net_1');
</script>

Skulle give samem resultat medmindre scriptet går videre før menuen er lavet ;-)
Avatar billede kappel Nybegynder
27. januar 2004 - 18:48 #5
jeg brugte den sidste og det virker - alletiders :-)

Kan du forklare hvad de første to tal betyder, f.eks. [1,3, se her nedenunder:

  [2,3,"Stilling","http://eif.kappels.net/index.php?menu=stilling","_self"],
[1,3,"Forum","http://forum.kappels.net","_blank"],

Og det allersidste :), er det muligt at lave et mellemrum eller en linie imellem [menu] og [super6] - se evt: http://eif.kappels.net/index.php

Venlig hilsen Kappel
og tak for hjælpen endnu engang, ha' det munter.
Avatar billede skovenborg Nybegynder
27. januar 2004 - 19:17 #6
Det første tal bestemmer hvad for et "level" eller niveau menupunktet skal være i.
Fx hedder det jo:
[1,1,"Hjem"], - hvilket betyder at Menupunktet hjem er helt til venstre. Det bestemmer ganske enkelt det enkeltes menupunkts indrykning som du kan se når du navigerer rundt i menuen.

Det næste tal bestemmer hvad for et billede der skal være foran. Det er de billeder du definerer i 3level_items.js :
var l1 = new Image()
l1.src = "menu/icons/l1.gif"
var l2 = new Image()
l2.src = "menu/icons/l2.gif"
var l3 = new Image()
l3.src = "menu/icons/l3.gif"

Hvis du skriver [1,3,"Forum","http://forum.kappels.net","_blank"],
bruger den det tredje billede - altså l3.gif som er tom. Ved Hjem bruger du l1.gif osv. På den måde kan du altså bestemme billedet foran linket.

Den sidste forstår jeg dog ikke - jeg kan godt se super6 menupunktet men ikke [menu]. Hvis det er indrykningen du mener, så skal du ændre det første tal sådan som jeg beskrev ovenfor :-)
Avatar billede kappel Nybegynder
27. januar 2004 - 19:25 #7
mange tak, selvfølgelig :)

Kan godt forstå du ikke forstå jeg kludrer...

Jeg mener et mellemrum mellem:

[1,1,"Hjem",null,"_self"],
og
[1,1,"Super6",null,"_self"],

se nedenfor hvordan det ser ud:

[1,1,"Hjem",null,"_self"],
[2,3,"Forside","http://eif.kappels.net","_self"],
[2,2,"Afstemning",null,"_self"],
  [3,3,"Aktuel","http://eif.kappels.net/index.php?menu=afstemning","_self"],
  [3,3,"Arkiv","http://eif.kappels.net/index.php?menu=afstemning_arkiv","_self"],
[2,3,"Gæstebog","http://eif.kappels.net/index.php?menu=gaestebog","_self"],
[2,3,"Anbefal super6","http://eif.kappels.net/index.php?menu=anbefal","_self"],
[2,3,"Sæt til startside","http://eif.kappels.net/index.php?menu=startside","_self"],
[2,3,"Kontakt","http://eif.kappels.net/index.php?menu=kontakt","_self"],
[1,3,"Forum","http://forum.kappels.net","_blank"],
[1,1,"Super6",null,"_self"],

håber du forstår og mange tak for hjælpen
Avatar billede skovenborg Nybegynder
27. januar 2004 - 20:05 #8
hmm, menupunktet Forum er jo i forvejen mellem Hjem og Super6 !!!

Tænker du egentlig på et linieskift eller blot lidt større mellemrum mellem de forskellige hovedmenupunkter???
Avatar billede kappel Nybegynder
27. januar 2004 - 22:45 #9
Tænker du egentlig på et linieskift mellem de forskellige hovedmenupunkter???

- Ja det er det jeg tænker på :)
Avatar billede skovenborg Nybegynder
28. januar 2004 - 00:01 #10
er det fint nok hvis du ændrer det her i 3level.css:

.level1
{
font-size:12px;
margin:5px 0px 0px 0px;
line-height:200%;
}
Giver et udmærket resultat (du kan selvfølgelig ændre det efter smag), men synes du der er for meget mellemrum mellem et hovedmenupunkt og dets undermenupunkter ?-)
Avatar billede kappel Nybegynder
28. januar 2004 - 07:54 #11
Hej Morten og tak for din hjælp
hvad med mellemrum mellem:
  [2,3,"Kontakt","http://eif.kappels.net/index.php?menu=kontakt","_self"],
[1,3,"Forum","http://forum.kappels.net","_blank"],

Kan man lave det? altså et mellemrum mellem det sidste undermenupunkt og det næste hovedmenupunkt :)

Ha en go' dag - Kappel
Avatar billede skovenborg Nybegynder
28. januar 2004 - 16:30 #12
har du prøvet mit forslag ovenover - med line-height:200%; ?-)

Desuden hedder jeg aldeles ikke Morten, tak ;-)
Avatar billede kappel Nybegynder
28. januar 2004 - 16:40 #13
hihi :-)

Hejsa

ja.
Men det jeg gerne vil, er et linieskift, det var bare hvis det kunne lade sig gøre, så kunne han f.eks. lave en streg på tværs <hr>

/kappel
Avatar billede skovenborg Nybegynder
28. januar 2004 - 16:55 #14
jo det kunne man da godt. Du skal dog ændre lidt i 3level_menu.js:

  if (arr[i][0] == 1 && i != 0) document.write("<hr width=\"120\"><div style='top:"+vtop+";height:"+height+"' class='level"+arr[i][0]+"'>");
  else document.write("<div style='top:"+vtop+";height:"+height+"' class='level"+arr[i][0]+"'>");

Omkring linie 20 - håber du kan finde det :-)
Avatar billede kappel Nybegynder
28. januar 2004 - 17:15 #15
tak for det :-)
Avatar billede skovenborg Nybegynder
28. januar 2004 - 17:34 #16
og tak for point :-)
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