Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Shaun E on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

unable to open an page over menu script in a frame

Status
Not open for further replies.

apeoortje

Technical User
May 26, 2004
46
NL
I'm have 5 buttons each of which open a menu item the same as the one below in a menu frame. but the problem is that once you have a menu in the frame. you can't open another one. Any Idea how this can be change (PS I'm not very good with Java)

<html>
<head>
<title>Cascading Menu</title>
</head>
<body>
<script language="JavaScript">
function goToURL() { history.go(-1); }
</script>
<style>
.menu
{
background-color:#2B6Ebb;
border:1px solid darkblue;
width:150px;
font-size:11px;
font-family:verdana;
position: absolute;
font:bold;
color: #ffffff;
cursor: hand;
}
.item_panel
{
width:150px;
border-left:1px solid darkblue;
border-right:1px solid darkblue;
clip:rect(0,150,0,0);
position:absolute;
}
.item_panel a
{
text-decoration:none;
color:black;
cursor:hand;
}
.item
{
background-color: #E9F0F8;
width: 148px;
font-size: 10px;
font-family: verdana;

}
</style>
<script language="JavaScript">
var height = 20; // height of the menu headers
var iheight = 15; // height of the menu_items
var bgc = "#E9F0F8" // background color of the item
var tc = "black" // text color of the item
var over_bgc = "white";
var over_tc = "#004891";
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.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[2] == 1)
{open_item += self_menu[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[3] == nr) pull_down(i,nr)
i==self_menu.length;
}
}
}
</script>
<table width=150><tr><td>
<script language="JavaScript">
//Link[nr] = "position [0 is menu/1 is item],Link name,url,target (blank|top|frame_name)"
var Link = new Array();
Link[0] = "0|Home";
Link[1] = "1|Home| Link[2] = "1|Web Hosting| Link[3] = "1|Web Tools| Link[4] = "1|Developer Resources| Link[5] = "0|Access";
Link[6] = "1|Login| Link[7] = "1|Lost Password| Link[8] = "0|Help";
Link[9] = "1|Help| Link[10] = "1|Copy/Paste| Link[11] = "0|Advertise";
Link[12] = "1|your ad here|";
startup(4);
</script>
</td>
</tr>
</table><br><br><br><br><br><br>
</body>
</html>
 
Since the script has been lifted from another source, and by your own admission you lack any real skills in java(script), I suggest you email the author of your script and ask them for some assistance.

Alternatively look for another pre-packaged solution that does allow multiple instances of menus on the page.

Post your requirements so that we can understand what it is you are doing and there may very well be some suggestions for a replacement script for you. Just a hunch.

Jeff

 
All I'm after is a vertical menu bar which can be used in a limited amount of space. This one was perfect as it collapses on it's self so only the main menu items could would be shown. the only problem with it is as I said that if you try to open a new page in a same frame as this script, the menu stays and the page opens in a new window.

Thanks for this Jeff.

T
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top