/    Sign up×
Community /Pin to ProfileBookmark

Help with Slide-down Menu

Hi!

I’m using the ‘slide-down menu’ <http://javascript.internet.com/navigation/slide-down-menu.html>.

Everything’s working fine, except that I’m having difficulty editing the script so that the menu pulls down on the mouseover (instead of onclick) and pulls up again on mouseout. I was able to get it to pull down on mouseover without a problem, but I can’t figure out how to get it to pull up again. This question was posed in the following thread:

<http://www.webdeveloper.com/forum/showthread.php?t=23626&highlight=slide-down+menu>

But I don’t think it ever got answered.

Thanks so much to anyone who can help!!?

to post a comment
JavaScript

2 Comments(s)

Copy linkTweet thisAlerts:
@fuknlightnJul 03.2007 — Could you post your code?
Copy linkTweet thisAlerts:
@KayTwoauthorJul 04.2007 — Here it is...

/* This script and many more are available free online at

The JavaScript Source :: http://javascript.internet.com

Created by: ScriptBreaker :: http://www.scriptbreaker.com/ *
/

var height = 20; // height of the menu headers

var iheight = 15; // height of the menu_items

var bgc = "#ffffff" // background color of the item

var tc = "black" // text color of the item

var over_bgc = "#ffffff";

var over_tc = "red";

var speed = 0;

var timerID = "";

var N = (document.all) ? 0 : 1;

var width = 152

var self_menu = new Array();

function write_menu() {

smc = 0; // count the position of the self_menu

document.write("<div style='position:absolute'>");

mn = 0;

mni = 1;

start = -1;

for(i=0;i<Link.length;i++) {

la = Link[i].split("|");

if (la[0] == "0") {

if(start == 0) {

document.write("</div>");

h = csmc * iheight;

tmn = mn; //-h

self_menu[smc] = new Array(tmn,h,0,-2);

smc++;

mn--;

}

csmc = 0;

document.write("<div class='menu' style='top:"+mn+";height:"+height+"' id='down"+smc+"' onclick='pull_down("+smc+","+mni+")'> "+ la[1] + "</div>");

self_menu[smc] = new Array(mn,height,0,mni);

smc++;

mni++;

mn+=height;

start = 1;

} else {

if(start == 1) {

if(N)mn+=2;

document.write("<div class='item_panel' id='down"+smc+"' style='top:"+mn+"'>");

start = 0;

}



document.write("<a href='"+la[2]+"'");
if (la[3] != "") document.write(" target='" + la[3] + "' ");
document.write("><div class='item' id='d"+i+"' style='height:"+iheight);
if (N) document.write(";width:150");
document.write("' onmouseover='color(this.id)' onmouseout='uncolor(this.id)'> "+ la[1] + "</div></a>");
csmc++;

}

}

if (start == 0) {

document.write("</div>");

h = csmc * iheight;

tmn = mn + 5; //-h

self_menu[smc] = new Array(tmn,h,0);

name = "down" + (self_menu.length-1);

obj = document.getElementById(name);

obj.style.borderBottomColor = "darkblue";

obj.style.borderBottomWidth = 1;

obj.style.borderBottomStyle = "solid";

}

document.write("</div>");

}

function color(obj) {

document.getElementById(obj).style.backgroundColor = over_bgc;

document.getElementById(obj).style.color = over_tc

}

function uncolor(obj) {

document.getElementById(obj).style.backgroundColor = bgc;

document.getElementById(obj).style.color = tc

}

function pull_down(nr,c) {

if (timerID == "") {

to = self_menu[nr+1][1]

begin = nr + 2;

if (timerID != "") clearTimeout(timerID);

if (self_menu[nr+1][2] == 0) {

self_menu[nr+1][2] = 1;

if(nr == self_menu.length-2) {to++;}

epull_down(begin,to,0);

} else {

to = 0;

self_menu[nr+1][2] = 0;

name = "down"+(nr+2);

open_item = 0;

for(i=0;i<nr;i++) {

if(self_menu[i][2] == 1)

{open_item += self_menu[i][1];

}

}

if (N == false) {open_item-= (c*1)};

if (nr== self_menu.length-2) {val = self_menu[self_menu.length-1][1];to=-1;}

else val = parseInt(document.getElementById(name).style.top) -(open_item)-(c*
height);

epull_up(begin,to,val);

}

}

}



function epull_down(nr,to,nowv) {

name = "down" + (nr-1);

obj = document.getElementById(name).style.clip = "rect(0,"+width+","+(nowv+1)+",0)";

for (i=nr;i<self_menu.length;i++) {

name = "down" + i;

obj = document.getElementById(name);

obj.style.top = parseInt(obj.style.top)+1;

}

nowv++;

if(nowv < to) timerID = setTimeout("epull_down("+nr+","+to+","+nowv+")",speed);

else timerID = "";

}



function epull_up(nr,to,nowv) {

name = "down" + (nr-1);

obj = document.getElementById(name).style.clip = "rect(0,"+width+","+nowv+",0)";

for (i=nr;i<self_menu.length;i++) {

name = "down" + i;

obj = document.getElementById(name);

obj.style.top = parseInt(obj.style.top)-1;

}

nowv--;

if(nowv > to) timerID = setTimeout("epull_up("+nr+","+to+","+nowv+")",speed);

else timerID = "";

}



function startup(nr) {

write_menu();

if (nr != 0) {

for(i=0;i<self_menu.length;i++)

{

if(self_menu[i][3] == nr) pull_down(i,nr)

i==self_menu.length;

}

}

}
×

Success!

Help @KayTwo spread the word by sharing this article on Twitter...

Tweet This
Sign in
Forgot password?
Sign in with TwitchSign in with GithubCreate Account
about: ({
version: 0.1.9 BETA 5.19,
whats_new: community page,
up_next: more Davinci•003 tasks,
coming_soon: events calendar,
social: @webDeveloperHQ
});

legal: ({
terms: of use,
privacy: policy
});
changelog: (
version: 0.1.9,
notes: added community page

version: 0.1.8,
notes: added Davinci•003

version: 0.1.7,
notes: upvote answers to bounties

version: 0.1.6,
notes: article editor refresh
)...
recent_tips: (
tipper: @AriseFacilitySolutions09,
tipped: article
amount: 1000 SATS,

tipper: @Yussuf4331,
tipped: article
amount: 1000 SATS,

tipper: @darkwebsites540,
tipped: article
amount: 10 SATS,
)...