hammon Skrevet 9. april 2003 Del Skrevet 9. april 2003 Dette er en slidemeny som virker fra iexplorer og opera, men ikke fra mozilla og netscape. Kan noen som er guru på javascript fortelle meg hvorfor? Legger ved hele sriptet: 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() function makeMenuObj(obj,nest){ nest=(!nest) ? "":'document.'+nest+'.' this.css=bw.dom? document.getElementById(obj).style:bw.ie4?document.all[obj].style:bw.ns4?eval(nest+"document.layers." +obj):0; this.el=bw.dom?document.getElementById(obj):bw.ie4?document.all[obj]:bw.ns4?eval(nest+'document.'+obj):0; this.ref=bw.dom || bw.ie4? document:bw.ns4?eval(nest+"document.layers." +obj+".document"):0; this.x=(bw.ns4 || bw.ns5)? this.css.left:this.css.offsetLeft; this.y=(bw.ns4 || bw.ns5)? this.css.top:this.css.offsetTop; this.hideIt=b_hideIt; this.showIt=b_showIt; this.movey=b_movey this.moveIt=b_moveIt; this.moveBy=b_moveBy; this.status=0; this.bgImg=b_bgImg; this.obj = obj + "Object"; eval(this.obj + "=this"); this.clipTo=b_clipTo; return this } function b_showIt(){this.css.visibility="visible"; this.status=1} function b_hideIt(){this.css.visibility="hidden"; this.status=0} function b_movey(y){this.y=y; this.css.top=this.y} function b_moveIt(x,y){this.x=x; this.y=y; this.css.left=this.x;this.css.top=this.y} function b_moveBy(x,y){this.x=this.x+x; this.y=this.y+y; this.css.left=this.x;this.css.top=this.y} function b_bgImg(img){if(bw.ie||bw.dom)this.css.backgroundImage="url('"+img+"')" else this.css.background.src=img } function b_clipTo(t,r,b,l,w){if(bw.ns4){this.css.clip.top=t;this.css.clip.right=r this.css.clip.bottom=b;this.css.clip.left=l }else{this.css.clip="rect("+t+","+r+","+b+","+l+")"; if(w){this.css.width=r; this.css.height=b}}} function SlideMenuInit(){ oSlideMenu=new makeMenuObj('divSlideCont') oSlideMenu.moveIt(menux,menuy) oSlide=new Array() for(i=0;i<menus.length;i++){ oSlide=new makeMenuObj('divSlide'+i,'divSlideCont') oSlide.subs=menus.subs oSlide.sub=new Array() oSlide.moveIt(0,mainheight*i) oSlide.starty=oSlide.y if(bw.opera) oSlide.css.paddingLeft="10px" if(!menus.seperator) oSlide.bgImg(level0_regular) for(j=0;j<oSlide.subs;j++){ oSlide.sub[j]=new makeMenuObj('divSlideSub'+i+"_"+j,'divSlideCont') oSlide.sub[j].moveIt(10,oSlide.y+subheight*j+between) oSlide.sub[j].starty=oSlide.sub[j].y oSlide[j]=new Array() oSlide[j].subs=menus[j].subs oSlide[j].sub=new Array() img=level1_round if(oSlide[j].subs!=0){ if(j!=oSlide.subs-1) img=level1_sub else img=level1_sub_round oSlide.sub[j].css.color="white" }else{ if(j!=oSlide.subs-1)img=level1_regular } oSlide.sub[j].origimg=img oSlide.sub[j].bgImg(img) for(a=0;a<oSlide[j].subs;a++){ oSlide[j].sub[a]=new makeMenuObj('divSlideSub'+i+"_"+j+"_"+a,'divSlideCont') oSlide[j].sub[a].moveIt(20,oSlide.sub[j].y+subheight*a+between-2) oSlide[j].sub[a].starty=oSlide[j].sub[a].y oSlide[j][a]=new Array() oSlide[j][a].subs=menus[j][a].subs oSlide[j][a].sub=new Array() if(a!=oSlide[j].subs-1) img=level2_regular else img=level2_round oSlide[j].sub[a].origimg=img oSlide[j].sub[a].bgImg(img) } } } oSlideMenu.showIt() } var active=-1;var going;var isthere; var sactive=-1; var sisthere=-1; var s2active=-1; var s2isthere=-1 function swmenu(num,snum,s2num){ if(snum!=-1){ if(oSlide[num][snum].subs==0) return } if(s2num!=-1){ if(oSlide[num][snum][s2num].subs==0) return } if((num!=active || snum!=sactive || s2num!=s2active) && !going){going=true;isthere=0;sisthere=0;moveUp(num,snum,s2num)} } function moveUp(num,snum){ if(snum==-1){ for(i=0;i<oSlide.length;i++){ if(oSlide.y>oSlide.starty+pxspeed && active!=i) oSlide.moveBy(0,-pxspeed) else{if(active!=i) oSlide.moveIt(oSlide.x,oSlide.starty); isthere=i} } if(isthere<oSlide.length-1) setTimeout("moveUp("+num+","+snum+")",timspeed) else swmenu2(num,snum) }else{ if(num==oSlide.length-1) isthere=num if(sactive!=-1){ //Is out! //Slide subs j=0 for(i=sactive+1;i<oSlide[num].sub.length;i++){ j++ if(oSlide[num].sub.y>oSlide[num].sub.starty+pxspeed) oSlide[num].sub.moveBy(0,-pxspeed) else{oSlide[num].sub.moveIt(oSlide[num].sub.x,oSlide[num].sub.starty); sisthere=i} } //Slide main for(i=num+1;i<oSlide.length;i++){ if(oSlide.y>oSlide.starty + oSlide[num].sub[sactive].y +subheight*j ) oSlide.moveBy(0,-pxspeed) else{oSlide.moveIt(oSlide.x,oSlide.starty + oSlide[num].sub[sactive].y +subheight*j ); isthere=i} } }else{ //Slide to the one clicked for(i=num+1;i<oSlide.length;i++){ if(oSlide.y>oSlide.starty + snum*between+between) oSlide.moveBy(0,-pxspeed) else{oSlide.moveIt(oSlide.x,oSlide.starty + snum*between+between); isthere=i} } } if(isthere<oSlide.length-1 || (sactive!=-1 && sisthere<oSlide[num].sub.length-1 && sactive!=oSlide[num].sub.length-1)) setTimeout("moveUp("+num+","+snum+")",timspeed) else swmenu2(num,snum) } } function swmenu2(num,snum){ isthere=0; sisthere=0; if(active>-1 && snum==-1){ //Hiding submenus for(j=0;j<oSlide[active].subs;j++){oSlide[active].sub[j].hideIt()} oSlide[active].bgImg(level0_regular) oSlide[active].moveIt(0,oSlide[active].starty) } if(sactive>-1){ //Hiding submenus for(j=0;j<oSlide[active][sactive].sub.length;j++){oSlide[active][sactive].sub[j].hideIt()} oSlide[active].sub[sactive].bgImg(oSlide[active].sub[sactive].origimg) oSlide[active].sub[sactive].moveIt(10,oSlide[active].sub[sactive].starty) //Move back to place for(i=sactive+1;i<oSlide[active].sub.length;i++){ oSlide[active].sub.moveIt(oSlide[active].sub.x,oSlide[active].sub.starty) } } active=num //Showing submenus if(snum>-1){ sactive=snum for(j=0;j<oSlide[num][snum].sub.length;j++){oSlide[num][snum].sub[j].showIt()} oSlide[num].sub[snum].moveBy(10,3) oSlide[num].sub[snum].bgImg(level1_round2) }else{ sactive=-1 for(j=0;j<oSlide[active].subs;j++){oSlide[active].sub[j].showIt()} oSlide[num].moveBy(10,3) oSlide[num].bgImg(level0_round) } if(num!=oSlide.length-1) moveDown(num,snum) else{ isthere=num moveDown(num,snum) } } function moveDown(num,snum){ //if(num==oSlide.length-1) isthere=num for(i=num+1;i<oSlide.length;i++){ if(snum==-1){ if(oSlide.y<(oSlide[num].subs-1)*subheight+oSlide.starty+between-pxspeed) oSlide.moveBy(0,pxspeed) else{oSlide.moveIt(oSlide.x,(oSlide[num].subs-1)*subheight+oSlide.starty+between); isthere=i} }else{ if(oSlide.y<(oSlide[num].subs-1)*subheight+oSlide.starty+between-pxspeed + (oSlide[num][snum].subs-1)*subheight+between) oSlide.moveBy(0,pxspeed) else{oSlide.moveIt(oSlide.x,(oSlide[num].subs-1)*subheight+oSlide.starty+between + (oSlide[num][snum].subs-1)*subheight+between); isthere=i} } } if(snum!=-1){ for(i=snum+1;i<oSlide[num].sub.length;i++){ if(oSlide[num].sub.y<(oSlide[num][snum].subs-1)*subheight+oSlide[num].sub.starty+between-pxspeed) oSlide[num].sub.moveBy(0,pxspeed) else{oSlide[num].sub.moveIt(oSlide[num].sub.x,(oSlide[num][snum].subs-1)*subheight+oSlide[num].sub.starty+between); sisthere=i} } } if(snum==-1){ if(isthere<oSlide.length-1) setTimeout("moveDown("+num+","+snum+")",timspeed) else going=false }else{ if(isthere<oSlide.length-1 || (sisthere<oSlide[num].sub.length-1 && snum!=oSlide[num].sub.length-1)) setTimeout("moveDown("+num+","+snum+")",timspeed) else going=false } } var test=0 menus=new Array(); var a=0; var b=0; var c=0; var d=0 function makeMenu(type,text,lnk,target,end){ str=""; tg=""; if(target) tg='target="'+target+'"' if(!lnk) lnk="#" self.status=lnk if(a==0) str='<div id="divSlideCont">n' if(type=="top"){ menus[a]=new Array(); if(text=="seperator"){ str+='t<div id="divSlide'+a+'" class="clSlide"></div>n' menus[a].seperator=1 }else{ str+='t<div id="divSlide'+a+'" class="clSlide"><a href="'+lnk+'" '+tg+' onclick="swmenu('+a+',-1,-1); if(bw.ie || bw.ns6) this.blur(); ' if(lnk=="#") str+='return false' str+='" class="clSlideLinks fade"> '+text+'</a><br></div>n' } menus[a].subs=0; a++; b=0 }else if(type=="sub"){ str+='tt<div id="divSlideSub'+(a-1)+'_'+(B)+'" class="clSlideSub"><a '+tg+' onclick="swmenu('+(a-1)+','+b+',-1); if(bw.ie || bw.ns6) this.blur(); ' if(lnk=="#") str+='return false' str+='" href="'+lnk+'" class="clSlideSubLinks fade"> '+text+'</a><br></div>n' b++; menus[a-1].subs=b; menus[a-1][b-1]=new Array(); c=0; menus[a-1][b-1].subs=0 }else if(type=="sub2"){ str+='tt<div id="divSlideSub'+(a-1)+'_'+(b-1)+'_'+c+'" class="clSlideSub2"><a '+tg+' href="'+lnk+'" class="clSlideSub2Links fade"> '+text+'</a><br></div>n' c++; menus[a-1][b-1].subs=c; menus[a-1][b-1][c-1]=new Array(); d=0; menus[a-1][b-1][c-1].subs=0 } if(end) str+="</div>" document.write(str) } function preLoadBackgrounds(){ for(i=0;i<arguments.length;i++){ this=new Image() this.src=arguments } return this } Lenke til kommentar
Dahl Skrevet 25. april 2003 Del Skrevet 25. april 2003 Tviler på att noen gidder å lese gjenom hele den koden... Men jeg tittet litt på den, og det er vel ikke tilfeldigvis coolmenus fra www.dhtmlcentral.com (mulig jeg tar feil) :wink: Jeg har selv prøvd meg litt med coolmenus, men har droppet å bruke det. Jeg aner ikke hvor feilen er... Sikker på at den funker i IE og ikke i Netscape?? Sjekk det en gang til. du kan jo også laste ned nyeste versjon av coolmenus, og se om det funker da! Lykke til! :smile: :smile: :smile: Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå