Avatar billede solus Nybegynder
02. marts 2004 - 10:47 Der er 13 kommentarer

placering af dropdown menu

Hvordan bærer jeg mig ad med at få min dropdown menu placeret så den befinder sig samme sted uanset vinduets størrelse.
Herunder er den js fil hvor jeg selv tror at løsningen skal findes!
Håber en eller anden kan hjælpe mig da jeg snart har brugt ufattelig lang tid på at finde ud af det.


<!-- Minus AutoDato -->

<!-- hide JavaScript from non-JavaScript browsers
var agt=navigator.userAgent.toLowerCase();
var is_major = parseInt(navigator.appVersion);
var is_minor = parseFloat(navigator.appVersion);
var is_nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1) && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1) && (agt.indexOf('webtv')==-1));
var is_nav2 = (is_nav && (is_major == 2));
var is_nav3 = (is_nav && (is_major == 3));
var is_badnav4 = (is_nav && (parseFloat(navigator.appVersion) == 4.02));
var is_oldnav4 = (is_nav && (parseFloat(navigator.appVersion) < 4.06));
var is_nav4 = (is_nav && (is_major == 4));
var is_nav4up = (is_nav && (is_major >= 4));
var is_nav6 = (is_nav && (is_major == 5));
var is_nav6up = (is_nav && (is_major >= 5));
var is_ie  = (agt.indexOf("msie") != -1);
var is_ie3  = (is_ie && (is_major < 4));
var is_ie4  = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")==-1));
var is_ie4up  = (is_ie  && (is_major >= 4));
var is_ie5  = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")!=-1));
var is_ie5up  = (is_ie && !is_ie3 && !is_ie4);
var is_aol  = (agt.indexOf("aol") != -1);
var is_aol3  = (is_aol && is_ie3);
var is_aol4  = (is_aol && is_ie4);
var is_aol5up  = (is_aol && is_ie5up);
var is_opera = (agt.indexOf("opera") != -1);
var is_opera4 = (is_opera && (is_major == 4));
var is_opera5 = (is_opera && (is_major == 5));
var is_opera5up = (is_opera && (is_major >= 5));
var is_webtv = (agt.indexOf("webtv") != -1);
var is_domcom = ((is_nav6up)||(is_ie5up)||(is_opera5up))
var is_mac    = (agt.indexOf("mac")!=-1);
var is_mac68k = (is_mac && ((agt.indexOf("68k")!=-1) || (agt.indexOf("68000")!=-1)));
var is_macppc = (is_mac && ((agt.indexOf("ppc")!=-1) || (agt.indexOf("powerpc")!=-1)));
var dhtmlnav=0;
var dhtmlBrowser=0;
if ((is_nav4up)||(is_ie4up)) dhtmlBrowser=1;

var table_template_front_array1 = new Array();
var table_template_front_array2 = new Array();
var table_template_end_array = new Array();
var row_template_front_array = new Array();
var parent_layer_array = new Array();
var child_layer_array = new Array();
var last_button_name = "";
var last_parent_layer = "";
var last_child_layer = "";
var last_image_name = "";
var image_pointer = "";
var TimerID = "";
var TimerIDLink = "";
var table_width = 185; // Changes the width of all menu tables. Set to widest menu.
var IsLink = "NO";
var PrevLayer = "NO";
var WaitLink = 0;
var LinkLayer = "";
var TimeLinkOut = 800;
var TimeLayerOut = 800;

if (document.images) {
    var arrow = new Image();
    var blank = new Image();
    arrow.src = "dscript113/arrow.gif";
    blank.src = "dscript113/blank.gif";

    var I1on = new Image();
    I1on.src = "knapper/sund.jpg";
    var I1off = new Image();
    I1off.src = "knapper/sund2.jpg";
    var I2on = new Image();
    I2on.src = "knapper/virk.jpg";
    var I2off = new Image();
    I2off.src = "knapper/virk2.jpg";
    var I3on = new Image();
    I3on.src = "knapper/traening.jpg";
    var I3off = new Image();
    I3off.src = "knapper/traening2.jpg";
    var I4on = new Image();
    I4on.src = "knapper/beh.jpg";
    var I4off = new Image();
    I4off.src = "knapper/beh2.jpg";
    var I5on = new Image();
    I5on.src = "knapper/salg.jpg";
    var I5off = new Image();
    I5off.src = "knapper/salg2.jpg";
    var I6on = new Image();
    I6on.src = "knapper/ny.jpg";
    var I6off = new Image();
    I6off.src = "knapper/ny2.jpg";
    var I7on = new Image();
    I7on.src = "knapper/hvem.jpg";
    var I7off = new Image();
    I7off.src = "knapper/hvem2.jpg";
    var I8on = new Image();
    I8on.src = "knapper/links.jpg";
    var I8off = new Image();
    I8off.src = "knapper/links2.jpg";
    var I9on = new Image();
    I9on.src = "knapper/booking.jpg";
    var I9off = new Image();
    I9off.src = "knapper/booking2.jpg";
    var I10on = new Image();
    I10on.src = "knapper/kontakt.jpg";
    var I10off = new Image();
    I10off.src = "knapper/kontakt2.jpg";
}

function changeImages() {
  if (document.images) {
    for (var i=0; i<changeImages.arguments.length; i+=2) {
      document[changeImages.arguments[i]].src = eval(changeImages.arguments[i+1] + ".src");
    }
  }
}

function Layer(name, visibility, zindex, table_template, left, top) {
    this.name = name;
    this.left = left;
    this.top = top;
    this.width = table_width;
    this.visibility = visibility;
    this.zindex = zindex;
    this.table_template = table_template;
    this.ar = ar;
    this.fl = fl;

    if (this.table_template == 1) {
        this.left = this.left + this.width - 7;
    }

    if ((is_domcom)||(is_ie4)) { 
      if (is_mac) { //changed the navigator.appVersion.indexOf("Macintosh") to is_mac
            this.top += 7;
            this.left += 2;
        }
        this.layer_content = '<div id="' + this.name + '" style="position: absolute; left: ' + this.left + '; top: ' + this.top + '; width: ' + this.width + '; visibility: ' + (this.visibility ? 'visible' : 'hidden') + '; z-index: ' + this.zindex + ';">';
    } else if (is_nav4) {
        this.layer_content = '<layer name="' + this.name + '" left=' + this.left + ' top=' + this.top + ' width=' + this.width + ' visibility=' + (this.visibility ? '"show"' : '"hide"') + ' z-index=' + this.zindex + '>';
    }
      this.layer_content += table_template_front_array1[this.table_template];
      this.layer_content += name
      this.layer_content += table_template_front_array2[this.table_template];
        if (this.table_template == 0) {
            parent_layer_array[parent_layer_array.length] = this.name;
        } else {
        child_layer_array[child_layer_array.length] = this.name;
        }
}

function ar(row_template, row_content) { 
    this.layer_content += row_template_front_array[row_template] + row_content + row_end;
}

function fl() { 
    this.layer_content += table_template_end_array[this.table_template];
    if ((is_domcom)||(is_ie4)) {
      this.layer_content += '</div>';
    } else if (is_nav4) {
        this.layer_content += '</layer>';
        ;
    } document.write(this.layer_content)
}

function define_table(tw) {
    table_template_front_array1[0] = '<table width="' + tw + '" cellspacing="0" cellpadding="0" border="0" onmouseover="TableOver(\'';
    table_template_front_array2[0] = '\');" onmouseout="TableOut();"><tr><td colspan="2" width="7"><img src="menu-script/corner_ul.gif" width=7 height=8 border="0"></td><td width="' + (tw-7) + '" background="menu-script/line_top.gif"><img src="menu-script/blank.gif" width=' + (tw-7) + ' height=1 border="0"></td><td colspan="2" width="7"><img src="menu-script/corner_ur.gif" width=7 height=8 border="0"></td></tr><tr><td width="1" background="menu-script/vert_line.gif"><img src="menu-script/vert_line.gif" width=1 height=1 border="0"></td><td width="6" bgcolor="FFFFFF"><img src="menu-script/blank.gif" width=6 height=1 border="0"></td><td width="' + (tw-7) + '" valign="top" bgcolor="FFFFFF"><table width="' + (tw-7) + '" cellspacing="0" cellpadding="1" border="0">';
    table_template_end_array[0] = '</table></td><td width="6" bgcolor="FFFFFF"><img src="menu-script/blank.gif" width=6 height=1 border="0"></td><td width="1" background="menu-script/vert_line.gif"><img src="menu-script/vert_line.gif" width=1 height=1 border="0"></td></tr><tr><td colspan="2" width="7"><img src="menu-script/corner_ll.gif" width=7 height=8 border="0"></td><td width="' + (tw-7) + '" background="menu-script/line_bot.gif"><img src="menu-script/blank.gif" width=' + (tw-7) + ' height=1 border="0"></td><td colspan="2" width="7"><img src="menu-script/corner_lr.gif" width=7 height=8 border="0"></td></tr></table>';

    table_template_front_array1[1] = '<table width="' + tw + '" cellspacing="0" cellpadding="0" border="0" onmouseover="TableOver(\'';
    table_template_front_array2[1] = '\');" onmouseout="TableOut();"><tr><td colspan="2" width="7"><img src="menu-script/corner_ul.gif" width=7 height=8 border="0"></td><td width="' + (tw-14) + '" background="menu-script/line_top.gif"><img src="menu-script/blank.gif" width=' + (tw-14) + ' height=1 border="0"></td><td colspan="2" width="7"><img src="menu-script/corner_ur.gif" width=7 height=8 border="0"></td></tr><tr><td width="1" background="menu-script/vert_line.gif"><img src="menu-script/vert_line.gif" width=1 height=1 border="0"></td><td width="6" bgcolor="FFFFFF"><img src="menu-script/blank.gif" width=6 height=1 border="0"></td><td width="' + (tw-14) + '" valign="top" bgcolor="FFFFFF"><table width="' + (tw-14) + '" cellspacing="0" cellpadding="1" border="0">';
    table_template_end_array[1] = '</table></td><td width="6" bgcolor="FFFFFF"><img src="menu-script/blank.gif" width=6 height=1 border="0"></td><td width="1" background="menu-script/vert_line.gif"><img src="menu-script/vert_line.gif" width=1 height=1 border="0"></td></tr><tr><td colspan="2" width="7"><img src="menu-script/corner_ll.gif" width=7 height=8 border="0"></td><td width="' + (tw-14) + '" background="menu-script/line_bot.gif"><img src="menu-script/blank.gif" width=' + (tw-14) + ' height=1 border="0"></td><td colspan="2" width="7"><img src="menu-script/corner_lr.gif" width=7 height=8 border="0"></td></tr></table>';

    row_template_front_array[0] = '<tr><td width=11 valign="top">-</td><td width=' + (tw-25) + '>';
    row_template_front_array[1] = '<tr><td width=' + (tw-14) + ' COLSPAN="2"><font face="Verdana, sans-serif" size=1>';
    row_template_front_array[2] = '<tr><td width=' + (tw-14) + ' ALIGN="right" COLSPAN="2"><font face="Verdana, sans-serif" size=1>';

    row_end = '</tr>';
}

define_table(table_width);

var l = new Layer("L1", 0, 4, 0, 170, 188);

l.ar(0, '<a href="virksomheder/sunde-medarb.htm" onmouseout="LinkOut(\'L1\');" onmouseover="LinkOver(\'L1-0\');" class="MenuLink"><font face=Verdana, sans-serif>Sunde medarbejdere</font></a></td>');
l.ar(0, '<a href="virksomheder/medarb-beh.htm" onmouseout="LinkOut(\'L1\');" onmouseover="LinkOver(\'L1-0\');" class="MenuLink"><font face=Verdana, sans-serif>Medarbejder behandling</font></a></td>');
l.ar(0, '<a href="virksomheder/forebyggelse.htm" onmouseout="LinkOut(\'L1\');" onmouseover="LinkOver(\'L1-0\');" class="MenuLink"><font face=Verdana, sans-serif>Forebyggelse</font></a></td>');
l.ar(0, '<a href="virksomheder/motion.htm" onmouseout="LinkOut(\'L1\');" onmouseover="LinkOver(\'L1-0\');" class="MenuLink"><font face=Verdana, sans-serif>Motion & træning</font></a></td>');
l.ar(0, '<a href="virksomheder/ergonomi.htm" onmouseout="LinkOut(\'L1\');" onmouseover="LinkOver(\'L1-0\');" class="MenuLink"><font face=Verdana, sans-serif>Ergonomisk rådgivning</font></a></td>');
l.ar(0, '<a href="virksomheder/foredrag.htm" onmouseout="LinkOut(\'L1\');" onmouseover="LinkOver(\'L1-0\');" class="MenuLink"><font face=Verdana, sans-serif>Foredrag/undervisning</font></a></td>');
l.ar(0, '<a href="virksomheder/effekt.htm" onmouseout="LinkOut(\'L1\');" onmouseover="LinkOver(\'L1-0\');" class="MenuLink"><font face=Verdana, sans-serif>Effektmåling/screening</font></a></td>');
l.ar(0, '<a href="virksomheder/sundhedstjek.htm" onmouseout="LinkOut(\'L1\');" onmouseover="LinkOver(\'L1-0\');" class="MenuLink"><font face=Verdana, sans-serif>Sundhedstjek</font></a></td>');
l.fl();

var l = new Layer("L2", 0, 4, 0, 170, 220);

l.ar(0, '<a href="traening/holdbeskrivelse.htm" onmouseout="LinkOut(\'L2\');" onmouseover="LinkOver(\'L2-0\');" class="MenuLink">Holdbeskrivelse<font face=Verdana, sans-serif></font></a></td>');
l.ar(0, '<a href="traening/holdtider.htm" onmouseout="LinkOut(\'L2\');" onmouseover="LinkOver(\'L2-0\');" class="MenuLink">Holdtider<font face=Verdana, sans-serif></font></td>');

l.fl();

var l = new Layer("L2-1", 0, 5, 1, 137, 167);
l.ar(1, '<b><font class=MenuHead1>hj</b></font>');
l.ar(0, '<a href="" onmouseover="TableOver(\'L2-1\');" class="MenuLink"><font face=Verdana, sans-serif>hgj</font></a></td>');
l.ar(0, '<a href="" onmouseover="TableOver(\'L2-1\');" class="MenuLink"><font face=Verdana, sans-serif>hgj</font></a></td>');
l.ar(0, '<a href="" onmouseover="TableOver(\'L2-1\');" class="MenuLink"><font face=Verdana, sans-serif>hj</font></a></td>');
l.ar(0, '<a href="" onmouseover="TableOver(\'L2-1\');" class="MenuLink"><font face=Verdana, sans-serif>ghj</font></a></td>');
l.fl();

var l = new Layer("L2-2", 0, 5, 1, 137, 182);
l.ar(1, '<b><font class=MenuHead1>hgj</b></font>');
l.ar(0, '<a href="" onmouseover="TableOver(\'L2-2\');" class="MenuLink"><font face=Verdana, sans-serif>hj</font></a></td>');
l.ar(0, '<a href="" onmouseover="TableOver(\'L2-2\');" class="MenuLink"><font face=Verdana, sans-serif>ghj</font></a></td>');
l.ar(0, '<a href="" onmouseover="TableOver(\'L2-2\');" class="MenuLink"><font face=Verdana, sans-serif>ghj</font></a></td>');
l.ar(0, '<a href="" onmouseover="TableOver(\'L2-2\');" class="MenuLink"><font face=Verdana, sans-serif>How to order</font></a></td>');
l.fl();

var l = new Layer("L2-3", 0, 5, 1, 137, 198);
l.ar(1, '<b><font class=MenuHead1>ffg</b></font>');
l.ar(0, '<a href="" onmouseover="TableOver(\'L2-3\');" class="MenuLink"><font face=Verdana, sans-serif>fggff</font></a></td>');
l.ar(0, '<a href="" onmouseover="TableOver(\'L2-3\');" class="MenuLink"><font face=Verdana, sans-serif>gff</font></a></td>');
l.ar(0, '<a href="" onmouseover="TableOver(\'L2-3\');" class="MenuLink"><font face=Verdana, sans-serif>fgfgfg</font></a></td>');
l.fl();

var l = new Layer("L2-4", 0, 5, 1, 137, 213);
l.ar(1, '<b><font class=MenuHead1>gfhfg</b></font>');

l.ar(0, '<a href="" onmouseover="TableOver(\'L2-4\');" class="MenuLink"><font face=Verdana, sans-serif>gh</font></a></td>');
l.ar(0, '<a href="" onmouseover="TableOver(\'L2-4\');" class="MenuLink"><font face=Verdana, sans-serif>hgjgh</font></a></td>');
l.ar(0, '<a href="" onmouseover="TableOver(\'L2-4\');" class="MenuLink"><font face=Verdana, sans-serif>hgjhgj</font></a></td>');
l.ar(0, '<a href="" onmouseover="TableOver(\'L2-4\');" class="MenuLink"><font face=Verdana, sans-serif>hgj</font></a></td>');
l.fl();

var l = new Layer("L3", 0, 4, 0, 170, 430);

l.ar(0, '<a HREF="mailto:info@tkd.dk" onmouseover="TableOver(\'L3\');" class="MenuLink"><font face=Verdana, sans-serif>info@tkd.dk</font></a></td>');
l.ar(0, '<font face=Verdana, sans-serif>Algade 4 <BR>varde</font></a></td>');

l.fl();



var l = new Layer("L4", 0, 4, 0, 170, 160);

l.ar(0, '<a href="java script:nytVindue()" onmouseover="TableOver(\'L4\');" class="MenuLink"><font face=Verdana, sans-serif>Se eksempel på en sundhedsportal</font></a></td>');

l.fl();

var numOfMenus = 10; // Number of the Main menus
var numOfImages = 10; // Number of rollover button images

layersList = new Array("L1","L2","L2-1","L2-2","L2-3","L2-4","L3","L4");
var layerCount = 8; // Total number of the Main and the Sub menus

//--> end hide JavaScript
Avatar billede Slettet bruger
02. marts 2004 - 10:56 #1
Jeg vil egentlig hellere se et link.

Og mht. "samme sted", mener du så samme koordinater eller samme afstand til et andet element på siden?
Avatar billede solus Nybegynder
02. marts 2004 - 11:11 #2
Samme afstand tilet andet element
Avatar billede Slettet bruger
02. marts 2004 - 11:13 #3
Ja, så bliver det rigtig svært. Kan du smide et link med en forklaring til, hvilket element, vi taler om?
Avatar billede solus Nybegynder
02. marts 2004 - 11:22 #4
Afstanden regnet fra knapperne, så det ikke lægger sig hen over dem. Se her:
www.fysioteam.dk
Avatar billede Slettet bruger
02. marts 2004 - 12:23 #5
Fx i denne linje:

var l = new Layer("L4", 0, 4, 0, 170, 160);

... skal du gøre tallet 170 større. Men eftersom din side er centreret, vil det ikke virke i alle opløsninger.

Umiddelbart er det smarteste, jeg kan finde på, dette script:

<script type="text/javascript">
function placerMenuer() {
  obj = document.getElementById("bill");
  l = 0;
  while (obj.offsetParent != null) {
    l += obj.offsetLeft;
    obj = obj.offsetParent;
  }
  for (i = 0; i < layerCount; i++)
    document.getElementById(layersList[i]).style.left = l;
}
</script>

I body-tagget skal følgende stå:

<body onload="placerMenuer();">

... og et af menubillederne skal have en id:

<img src="knapper/sund2.jpg" border="0" name="I1" align="top" width="150" height="14" id="bill">
Avatar billede solus Nybegynder
02. marts 2004 - 12:39 #6
Det virker ikke lige umiddelbart.
Finder funktionen en værdi for knappens placering? Og skal man ikke på en eller anden måde have denne værdi sat ind i denne linie i stedet for 170 : var l = new Layer("L4", 0, 4, 0, 170, 160);
Avatar billede Slettet bruger
03. marts 2004 - 12:46 #7
Prøv i stedet at ændre scriptet til:

<script type="text/javascript">
function placerMenuer() {
  obj = document.getElementById("bill");
  l = 0;
  while (obj.offsetParent != null) {
    l += obj.offsetLeft;
    obj = obj.offsetParent;
  }
  l += 160;
  for (i = 0; i < layerCount; i++)
    document.getElementById(layersList[i]).style.left = l;
}
</script>

Og husk så lige at uploade, så jeg kan se, hvad fejlen er.
Avatar billede solus Nybegynder
03. marts 2004 - 13:03 #8
Desværre
Jeg har uploaded det
Avatar billede Slettet bruger
04. marts 2004 - 17:30 #9
Dit body-tag skal se således ud:

<BODY onload="preloadImages('menu-script/corner_ll.gif','menu-script/corner_lr.gif','menu-script/corner_ul.gif','menu-script/corner_ur.gif','menu-script/line_bot.gif','menu-script/line_top.gif','menu-script/vert_line.gif'); placerMenuer();"  topmargin="0">
Avatar billede solus Nybegynder
08. marts 2004 - 14:03 #10
Der kommer en besked at offsetLeft er null eller ikke et object
Avatar billede solus Nybegynder
08. marts 2004 - 14:08 #11
Skal jeg ikke på en eller anden måde sætte en værdi istedet for 170 i contents.js
Avatar billede solus Nybegynder
08. marts 2004 - 14:25 #12
Nu fik jeg det til at du' bortset fra hvis man ændrer på vinduets størrelse mens man er på siden så rykker dropdown menuen ikke med.
Er det muligt at gøre det eller må jeg bare leve med det som det er?
Avatar billede Slettet bruger
10. marts 2004 - 20:22 #13
Tja, det er lidt ressourcekrævende, men i dit body-tag skal du skrive:

<body ... onscroll="placerMenuer();">
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