这可能是我的一个明显错误。我有一个C#页面,其中有一个按钮,单击该按钮可在iFrame中打开日历(ASP经典)。该日历以 AddToCartButton 的形式传递给按钮的ClientID并使用此行:
lo("parent.document.getElementById('" & AddToCartButton & "').style.display = 'none';")
( lo 是一个 Response.Write 类型的函数,只是将文本输出到页面。)
在日历出现时隐藏按钮。在用户选择日期后,日历使用类似的行将日期放入我的C#文本框中:
lo("parent.document.getElementById('" & PostBackField & "').value = '" & Replace(CurrentDate,":00 "," ") & "';")
这一切都很好但是当我尝试重新打开按钮时:
lo("parent.document.getElementById('" & AddToCartButton & "').style.display = '';")
没有任何反应。我也尝试了'内联'类似的非结果。有没有人对我在这里所写的内容有所了解?
答案 0 :(得分:1)
您熟悉firebug吗?尝试使用它,看看它是否有助于您调试问题。您可以在iframe窗口的代码中设置断点,该代码执行相关行并查看发生的情况。在那里,我会尝试将parent.document.getElementById('" & AddToCartButton & "')
设置为变量,看看你得到了什么。
答案 1 :(得分:0)
你应该使用Visibility而不是display,但我看不出为什么你的代码不能用于显示。
lo("parent.document.getElementById('" & AddToCartButton & "').style.visibility = 'hidden';")
然后
lo("parent.document.getElementById('" & AddToCartButton & "').style.visibility ='visible'
将显示设置为隐藏会从流中移除项目,其中可见性使项目保持原位,并隐藏它,我认为这就是您想要的。
这是一个很好的article解释差异。
以下是我拼凑的快速示例。
<html>
<head>
<script type="text/javascript">
function show_button()
{
document.getElementById("targetBtn").style.visibility = 'visible';
}
function hide_button()
{
document.getElementById("targetBtn").style.visibility = 'hidden';
}
function remove_button()
{
document.getElementById("targetBtn").style.display = 'none';
}
</script>
</head>
<body>
<input id="targetBtn" type="button" value="Button to Hide/Show" />
<input type="button" onclick="show_button()" value="Show Button" />
<input type="button" onclick="hide_button()" value="Hide Button" />
<input type="button" onclick="remove_button()" value="Remove Button" />
</body>
</html>
如果您运行此示例,请单击显示和隐藏按钮。您会注意到他们如何在页面上保留它们。单击“删除”按钮,它们将全部移至左侧。