从子帧运行程序调用函数

时间:2014-06-03 10:42:33

标签: javascript html

忍受我。这需要一点解释。

我有一个主页面,分为三个< 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>

1 个答案:

答案 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;
}

现在通过单击超链接来打开和关闭,在我提交表单时隐藏,并在再次单击超链接时立即再次打开。