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 IamaSherpa on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Can't open a new webpage over an already open one

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>
 
Hi apeoortje,
a little confused. Do you mean that when you click on a menu button the menu disappears and is replaced by the page you navigated to?
Please let me know and I will take another look

Liam

If you can help, GREAT
If I can help, EVEN BETTER
 
Thank you for looking,

I have 5 buttons in another frame, each button opens a menu such as this in the menu frame. but the problem is if you have pressed a botton to open a menu. when you try another button to open that next one it open in a new window.

I've looked through the html code, and I can't see any problems there.

If you could help me, I's be very grateful

Thx

T
 
Hi apeoortje,
I think I have understooed your problem. I think you are saying that you have 5 buttons which open 5 different menus in the menu frame.
For now we will call this menu frame menu.htm

At the bottom of your code you have some menu items. It looks like this:

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|";

_______________________________________________________

Altering these menu items determines where you want your new page to open. Changing the following will open each page in your menu.htm frame.

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|";


You can notce I have added menu.htm to all of the links. This can be changed to the name of your menu frame, whatever it is.
Hope this helps
Liam

If you can help, GREAT
If I can help, EVEN BETTER
 
Thank you very much!!!! that really help.

Thx

T
 
Hi apeoortje,glad I could be of help. Hope this fixed your issue
Liam

If you can help, GREAT
If I can help, EVEN BETTER
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top