Hej Alle!
Håber nogen kan hjælpe med dette problem:
Jeg har en javascript der fungerer på nogenlunde samme måde som
denne her (bare uden 'mapper'):
http://www.dynamicdrive.com/dynamicindex1/navigate1.htm
Problemet er: Når man åbner en af hovedmenuerne og klikker på
underlink og den nye side kommer frem - så "klapper" menu'en
sammen og man kan derved ikke se hvilke underlink man kom fra -
kan man undgå dette? Således at menu'en ikke klapper sammen
Med venlig hilsen
Jimmy Snedker
- Javascriptmenu -
- start -
function lib_bwcheck(){ //Browsercheck (needed)
this.ver=navigator.appVersion
this.agent=navigator.userAgent
this.dom=document.getElementById?1:0
this.opera5=this.agent.indexOf("Opera 5")>-1
this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom &&
!this.opera5)?1:0;
this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom &&
!this.opera5)?1:0;
this.ie4=(document.all && !this.dom && !this.opera5)?1:0;
this.ie=this.ie4||this.ie5||this.ie6
this.mac=this.agent.indexOf("Mac")>-1
this.ns6=(this.dom && parseInt(this.ver) >= 5) ?1:0;
this.ns4=(document.layers && !this.dom)?1:0;
this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 ||
this.ns6 || this.opera5)
return this
}
var bw=new lib_bwcheck()
/*** variables you can configure ***/
FoldNumber = 5 //How many toplinks do you have?
var stayFolded = false //Stay open when you click a new
toplink?
foldImg = 0 //Do you want images (if not set to 0 and remove
the images from the body)?
mainOffsetY = 0 //Vertical space adjustment between the main
items, in pixels.
//This is the default image.
//Remember to change the actual images in the page as well, but
remember to keep the name of the image.
var unImg=new Image();
unImg.src='images/gif/arrow1.gif'
var exImg=new Image(); //Making an image variable...
exImg.src='images/gif/arrow2.gif' //...this is the source of the
image that it changes to when the menu expands.
// NOTE: if you change the position of divCont from absolute to
relative, you can put the foldoutmenu in a table.
// HOWEVER it will no longer work in netscape 4. If you wish to
support netscape 4, you have to use absolute positioning.
/*** There should be no need to change anything beyond this. ***/
// A unit of measure that will be added when setting the position
of a layer.
var px = bw.ns4||window.opera?"":"px";
if(navigator.userAgent.indexOf('Opera')>-1 &&
document.getElementById){ //Opera 5 resize fix.
scrX= innerWidth; scrY= innerHeight;
document.onmousemove= function(){
if(scrX<innerWidth-10 || scrY<innerHeight-10 ||
scrX>innerWidth+10 || scrY>innerHeight+10){
scrX = innerWidth;
scrY = innerHeight;
initFoldout();
}
};
}
//object constructor...
function makeMenu(obj,nest){
nest= (!nest)?"":'document.'+nest+'.';
this.el=
bw.ie4?document.all[obj]:bw.ns4?eval(nest+'document.'+obj):docume
nt.getElementById(obj);
this.css= bw.ns4?this.el:this.el.style;
this.ref= bw.ns4?this.el.document:document;
this.x= (bw.ns4||bw.opera5)?this.css.left:this.el.offsetLeft;
this.y= (bw.ns4||bw.opera5)?this.css.top:this.el.offsetTop;
this.h=
(bw.ie||bw.ns6)?this.el.offsetHeight:bw.ns4?this.ref.height:bw.op
era5?this.css.pixelHeight:0;
this.vis= b_vis;
this.hideIt= b_hideIt;
this.showIt= b_showIt;
this.moveIt= b_moveIt;
return this
}
//object methods...
function b_showIt(){this.css.visibility='visible'}
function b_hideIt(){this.css.visibility='hidden'}
function b_vis(){if(this.css.visibility=='hidden' ||
this.css.visibility=='HIDDEN' || this.css.visibility=='hide')
return true;}
function b_moveIt(x,y){this.x=x; this.y=y;
this.css.left=this.x+px; this.css.top=this.y+px}
/****************************************************************
********************
This is the function that changes the sub menus to folded or
unfolded state.
*****************************************************************
*******************/
function menu(num){
if(bw.bw){
if (!stayFolded){
for (var i=0; i<oSub.length; i++){
if (i!=num){
oSub[i].hideIt()
if (foldImg)oTop[i].ref["imgA"+i].src = unImg.src
}
}
for(var i=1; i<oTop.length; i++){
oTop[i].moveIt(0,oTop[i-1].y+oTop[i-1].h)
}
}
if (oSub[num].vis()){
oSub[num].showIt()
if (foldImg)oTop[num].ref["imgA"+num].src = exImg.src
}else{
oSub[num].hideIt()
if(foldImg)oTop[num].ref["imgA"+num].src = unImg.src
}
for(var i=1; i<oTop.length; i++){
if (!oSub[i-1].vis())
oTop[i].moveIt(0,oTop[i-1].y+oTop[i-1].h+oSub[i-1].h+mainOffsetY)
else oTop[i].moveIt(0,oTop[i-1].y+oTop[i-1].h+mainOffsetY)
}
}
}
/****************************************************************
*****
The init function... there should be no need to change anything
here.
*****************************************************************
****/
function initFoldout(){
//Fixing the browsercheck for opera... this can be removed if
the browsercheck has been updated!!
bw.opera5 = (navigator.userAgent.indexOf("Opera")>-1 &&
document.getElementById)?true:false
if (bw.opera5) bw.ns6 = 0
oTop = new Array()
oSub = new Array()
//Making the objects and hiding the subs...
for (var i=0; i<FoldNumber; i++){
oTop[i] = new makeMenu('divTop'+i,'divCont')
oSub[i] = new makeMenu('divSub'+i,'divCont.document.divTop'+i)
oSub[i].hideIt()
}
//Positioning the top objects...
oTop[0].moveIt(0,0)
for (var i=1; i<oTop.length; i++){
oTop[i].moveIt(0, oTop[i-1].y+oTop[i-1].h+mainOffsetY)
}
//Making the containing menu object and showing it...
oCont = new makeMenu('divCont')
oCont.showIt()
}
// If the browser is ok, the script is started onload...
if(bw.bw) onload = initFoldout;
---slut---
- her en af hovedmenuerne med tilhørende underlinks -
<div id="divTop1" class="clTop"><a href="#" onclick="menu(1);
return false" onfocus="this.blur()" title="">Menu1</a><br>
<div id="divSub1" class="clSub"><a
href="menu11.asp" title="">menu11</a><br>
<a href="menu12.asp" title="">menu12</a><br>
<a href="menu13.asp" title="">menu13</a><br>
<a href="menu14.asp" title="">menu14</a><br>
<a href="menu15.asp" title="">menu15</a><br>
<a href="menu16.asp" title="">menu16</a><br>
<br>
</div>
<br>
</div
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! =>
http://www.html.dk/tutorials