隐身DIV不适用于JavaScript

时间:2013-05-21 10:09:21

标签: javascript asp.net

我确定我的问题的答案在某处,但我找不到。如果我有重复,我道歉。

我有一个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移到页面底部。相同的结果。

4 个答案:

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