我确定我的问题的答案在某处,但我找不到。如果我有重复,我道歉。
我有一个DIV,我根据我撤回的数据设置了页面加载的可见性。
所以在后面的代码中:
this.divMyDiv.Visible = false
如果用户然后更改下拉值,我会尝试显示DIV
var div = document.getElementById('divMyDiv');
div.style.display = 'block';
如果通过初始页面加载后面的代码将div设置为可见,则一切正常。当我更改下拉值时,DIV将显示和隐藏。但是,当DIV在页面加载时隐藏时,JavaScript中的var div始终为null。我试过了var div = document.getElementById('<%=divMyDiv.ClientID%>');
,但我得到了相同的结果。我也尝试将JS移到页面底部。相同的结果。
答案 0 :(得分:0)
在服务器端将aspx控件设置为Visible = false
意味着控件将不会在Html响应中完全呈现,因此在所有客户端都无法使用javascript。您需要渲染它(Visible=true
),然后使用css隐藏控件,例如style='display:none'
或类似的。另请参阅Question regarding Visible=false and display:none;
答案 1 :(得分:0)
如果此属性为false,则不呈现服务器控件。在组织页面布局时,您应该考虑到这一点。
如果要渲染控件但不可见,则应保留Visble = true并使用脚本或css隐藏控件。
div.style.display = 'none';
请参阅http://msdn.microsoft.com/en-us/library/system.web.ui.control.visible.aspx
答案 2 :(得分:0)
在代码中使用
而不是 this.divMyDiv.Visible = false 用这个 divMyDivAttributes.Add(“display”,“none”);然后它将由javascript呈现,您的其他java脚本函数也将正常运行
答案 3 :(得分:0)
this.divMyDiv.Visible = false
...将阻止div被渲染,Javascript无法找到它。如果您仍想渲染它并使用display:none
来隐藏它,那么您可以这样做;
this.divMyDiv.Style["display"] = "none";