0

我确定我的问题的答案就在这里,但我找不到。如果我重复了,我很抱歉。

我有一个 DIV,我根据我拉回的数据设置其在页面加载时的可见性。

所以在后面的代码中:

this.divMyDiv.Visible = false

如果用户然后更改下拉值,我会尝试显示 DIV

var div = document.getElementById('divMyDiv');
div.style.display = 'block';

如果在初始页面加载时后面的代码将 div 设置为可见,那么一切都很好。当我更改下拉值时,DIV 将显示和隐藏。但是,当 DIV 在页面加载时隐藏时,JavaScript 中的 var div 始终为空。我已经尝试过var div = document.getElementById('<%=divMyDiv.ClientID%>');,但我得到了相同的结果。我也尝试将 JS 移到页面底部。结果相同。

4

4 回答 4

0

在服务器端设置一个 aspx 控件Visible = false意味着该控件根本不会在 Html 响应中呈现,因此它在所有客户端都不能供 javascript 使用。您需要渲染它 ( Visible=true),然后使用 css 隐藏控件,例如style='display:none'或类似的。另请参阅有关 Visible=false 和 display:none; 的问题

于 2013-05-21T10:14:07.023 回答
0

如果此属性为 false,则不呈现服务器控件。在组织页面布局时,您应该考虑到这一点。

如果您希望控件呈现但不可见,则应保留 Visble = true 并使用脚本或 css 隐藏控件。

div.style.display = 'none';

请参阅http://msdn.microsoft.com/en-us/library/system.web.ui.control.visible.aspx

于 2013-05-21T10:14:54.993 回答
0

在代码后面使用

而不是 this.divMyDiv.Visible = false 使用这个 divMyDivAttributes.Add("display", "none");

然后它将由 javascript 呈现,您的其他 java 脚本函数也将正常运行

于 2013-05-21T10:18:41.077 回答
0
this.divMyDiv.Visible = false

...将阻止 div 被渲染并且 Javascript 找不到它。如果你仍然想渲染它并display:none用来隐藏它,你会想做的;

this.divMyDiv.Style["display"] = "none";
于 2013-05-21T10:19:07.040 回答