前台有个html控件<img/>,用js设置img.style.visibility="hidden",然后在后台取img.Style["visibility"],结果是空,用断点跟了一下发现img.Style.Value里没有visibility,想可能是在添加标签的时候没有加上这个属性。于是在前台标签里加上style="visibility: visible;"。添加之后,倒是能取出值了,但即使执行了js的img.style.visibility="hidden",后台取出的img.Style["visibility"]的结果仍是visible,而不是当前的hidden。请大家帮忙解释下为什么js设置的属性后台取不出来,该怎么解决!!!
如果你用的是纯html标签的<img>的话,在后台怎么能取到?如果用的是ASP.NET中的image控件,后台固然能取到了,前台又是怎么设的?
所以,最后把code贴出来,这样大家可以更好的帮你分析。
function toggleVisibility(me){
if (me.style.visibility=="hidden"){
me.style.visibility="visible";
}
else {
me.style.visibility="hidden";
}
}
</script>
<div onclick="toggleVisibility(this)" style="position:relative">第一行文本将会触发"hidden"和"visible"属性,注意第二行的变化。</div>
<div>因为visibility会保留元素的位置,所以虽然第一行看不见了但位置还在,第二行内容不会上下移动。</div>
<img runat="server" id="n0" style="position: absolute; z-index: 0;"/>
前台js
document.getElementById("n0").style.visibility="hidden";
后台代码
string s = n0.Style["visibility"];
所以问题出在了该值没有被设对。默认值是visible,所以你一直取的就是visible了。这样来设:
document.getElementById("<%=this.n0.ClientID%>").style.visibility = "hidden";这样就可以了。试试。
<img id="ctl00_ContentPlaceHolder1_n0" style="position: absolute; z-index: 0;" />,你可以右键->view source(查看源代码)找找看。
所以这个时候document.getElementById("n0")应该是null,是取不到相关属性的,会报错。至于img不显示,不一定是hidden生效了。你可以试试我说的写法,应该是好用的。
有时间的话,看看asp.net render的机制以及ID,ClientID,UniqueID相关的资料吧,可能会有帮助。对不起,只能帮这么多了
//JS控制隐藏:
img.style.display="none";//后台控制显示:
img.Attributes.Add(style,display:block);//如果怕刷新就用ajax调用C#方法
css,style,innerHTML这些都是不提交的