忍受我。这需要一点解释。
我有一个主页面,分为三个< divs>顶部< div>有一个超链接。另一个< divs> (称为“menu_div”)具有< object>在它中加载perl脚本。默认情况下,这是隐藏的
当在“header_div”中单击超链接时,它会通过“parent.document.getlementById('menu_div)显示”menu_div“.style.visibility ='visible'”同时,它设置了一个“show_hide” “标志为1
如果用户再次点击超链接,它会检查“show_hide”的状态,如果设置为1,则隐藏< div>并将标志设置为0。
**实际上,每次用户点击超链接时,该框都会打开和关闭
打开盒子并运行脚本,一切顺利,直到最后一部分。我可以使用上面的visibility语句再次隐藏该框。但是,< header_div>包含超链接仍然设置为“show_hide标志位于”1“,(说弹出窗口打开)
**所以 - 一旦menu.pl脚本关闭了窗口,如果再次点击超链接,则没有任何反应(因为它正在重置“show_hide”标志)但是在第二次点击时,“menu_div”再次弹出。因此我需要在程序提交表单之前将“show_hide”更改为0,以便下次第一次单击超链接时弹出。
注意:当“menu_div”关闭时,它会将数据发送到“menu.pl”,结果显示在“page_div”
中我问的是......
如何在程序进行提交调用之前访问show_options函数
这就是解释:这是代码
<link href="/style.css" rel="stylesheet" type="text/css">
<body>
<div class="header_div">
<object width="100%" height="30px" id="header" name="header" data="/cgi-bin/header.pl"></object>
</div>
<div class="page_div" id="page_div">
<object id="page" name="page"
width="100%" height="100%" data="/cgi-bin/page.pl"></object>
</div>
<div class="menu_div" id="menu_div">
<object id="menu"
data="/cgi-bin/menu.pl" width="250px" height="150px"></object>
</div>
</body>
+++++
在“header.pl”
中<script language="javascript">
var show_hide=0;
function show_options(){
if (show_hide == 0){
parent.document.getElementById('menu_div').style.visibility='visible';
show_hide=1;
return false;
}
if (show_hide == 1){
parent.document.getElementById('menu_div').style.visibility='hidden';
show_hide=0;
return false;
}
}
</script>
<link href="/style.css" rel="stylesheet" type="text/css">
</head>
<body topmargin="0" leftmargin="0" bgcolor="#eeaabb">
<table class="header_options">
<tr>
<td width="300px"><font class="head">MY SITE LOGO</font></td>
<td width="100px"><font class="head">
<a href="javascript:void(0);" onclick="return show_options();">SEARCH</a></font></td>
+++++
在“menu.pl”(Abrreviated script)中
function checkService(){
var opt1=document.getElementById('service').selectedIndex;
if (opt1 == 0){
return false;
}
\\window.parent.show_options(); \\-- This is where I'm getting probs
\\parent.document.show_options();
\\parent.document.show_hide.value=0;
\\parent.document.getElementById('menu_div').style.visibility='hidden'; \\ -- Will hide menu_div
document.userChoice.target="page";
document.userChoice.submit();
<select onchange="check_service();">
...
..
.
</select>
答案 0 :(得分:0)
似乎我是&#34;用锤子敲碎核桃&#34; !我所要做的就是 - 而不是设置&#34; show_hide&#34;国旗 - 是检查的状态。换句话说,是否可见。 (有趣的是,在检查“隐藏”属性时它不起作用,这就是我使用&#34;不等于&#34;护发素的原因)
if (parent.document.getElementById('menu_div').style.visibility == "visible"){
parent.document.getElementById('menu_div').style.visibility='hidden';
return false;
}
if (parent.document.getElementById('menu_div').style.visibility != "visible"){
parent.document.getElementById('menu_div').style.visibility='visible';
return false;
}
现在通过单击超链接来打开和关闭,在我提交表单时隐藏,并在再次单击超链接时立即再次打开。