我有一个初始不可见的文本框和复选框OnClick JS方法,我希望按钮可见,
最初复选框似乎不可见但是当我点击复选框时,JS方法会给我错误,找不到对象。如果我从文本框代码中删除Visible =“false”工作正常。
<asp:Textbox id="day" runat="server" Visible="false" />
<asp:CheckBox ID="parts" runat="server" onClick="Click();" />
<script type="text/javascript">
function Click(){
document.getElementById("day").style.visibility = "visible";
//ERROR **0x800a01a8 - Microsoft JScript runtime error: Object required**
}
</script>
// ERROR 0x800a01a8 - Microsoft JScript运行时错误:需要对象
答案 0 :(得分:1)
使用静态ID模式,使用自动生成的id
:
e.g。
<asp:Textbox id="day" ClientIDMode="Static" runat="server" Visible="false" />
同样,当你将其标记为jQuery时,更简单的jQuery可能看起来像这样(如果代码遵循页面上的元素):
$('#day').click(function(){
$(this).show();
});
或者如果代码在元素之前,则将其包装在DOM就绪处理程序中:
$(function(){
$('#day').click(function(){
$(this).show();
});
});
$(function(){...});
只是$(document).ready(function(){...});
答案 1 :(得分:1)
当你使用visible=false
时,它永远不会在页面上呈现,暗示,你不能document.getEle..
,它总是会给你null
值,因此会抛出错误。
如果此属性为false,则不呈现服务器控件。 - MSDN
如何解决此问题
所以它使它工作,你需要使用javascript隐藏它,然后使用javascript使其可见。
<asp:TextBox ID="day" runat="server" style="display:none;" />
<asp:CheckBox ID="parts" runat="server" onClick="Click();" />
<script type="text/javascript">
function Click() {
document.getElementById("day").style.display = "block"; // use "none" to hide
}
</script>