我有一个隐藏的div元素。
<div class= "CTL" id="CTL" runat="server" style="display:none">
<p class ="divider">
CTL
</p>
<asp:Button ID="CTL_button" runat="server" Text="View CTL"
onclick="CTL_button_Click" />
</div>
我试图根据页面上返回的SQL值显示div元素或保持隐藏: -
window.onload= function show_CTL() {
if("<%=_CurrentUser.IsCTL%>" == "True"){
document.getElementById('CTL').style.display ="block";
}
else{
// document.getElementById('CTL').style.display ="none";
}
但无论返回的值是什么,div元素仍会显示...
似乎只有循环的真实部分才会被执行......
答案 0 :(得分:3)
使用display:none将div隐藏在第一位
<div class= "CTL" id="CTL" style="display:none" runat="server">
<p class ="divider">
CTL
</p>
<asp:Button ID="CTL_button" runat="server" Text="View CTL"
onclick="CTL_button_Click" />
</div>
然后你可以用
显示它 document.getElementById('CTL').style.display ="block";
答案 1 :(得分:1)
ASP.NET正在更改ID,这就是你必须获取元素的clientID的原因。
document.getElementById("<%= CTL.ClientID %>").style.display = "block";
答案 2 :(得分:1)
visible
和display
是2种不同的css属性,
您先设置visible
,但稍后更改display
,
你应该改变可见,而不是显示,
因为你可以在第一时间使用显示而不是可见。
答案 3 :(得分:1)
将条件转换为JavaScript中的Boolean
,您可以这样做:
window.onload = function show_CTL() {
var el = document.getElementById('CTL');
if(Boolean("<%=_CurrentUser.IsCTL%>") && el){
el.style.display = "block";
}
else{
el.style.display = "none";
}
}
如果Boolean对象没有初始值,或者传递的值是以下值之一:
0
-0
null
""
false
undefined
NaN
该对象设置为false。对于任何其他值,它设置为true(即使使用字符串&#34; false&#34;)!
现在我想知道,为什么不简单地在visible
属性中添加条件?
<div class="CTL" id="CTL" runat="server" visible=<%=_CurrentUser.IsCTL%>></div>
这种方式不需要JavaScript。