前台有个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设置的属性后台取不出来,该怎么解决!!!
               

解决方案 »

  1.   

    有可能的话贴一下code吧,前台和后台的。
    如果你用的是纯html标签的<img>的话,在后台怎么能取到?如果用的是ASP.NET中的image控件,后台固然能取到了,前台又是怎么设的?
    所以,最后把code贴出来,这样大家可以更好的帮你分析。
      

  2.   

    试试这样<script language="JavaScript">
    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>
      

  3.   

    前台html
    <img runat="server" id="n0" style="position: absolute; z-index: 0;"/>
    前台js
    document.getElementById("n0").style.visibility="hidden";
    后台代码
    string s = n0.Style["visibility"];
      

  4.   

    后台取出的s不是js设置的hidden
      

  5.   

    如果是加了runat=server的控件,他的id已经被封装成clientID了,是不能用id直接找到的。
    所以问题出在了该值没有被设对。默认值是visible,所以你一直取的就是visible了。这样来设:
    document.getElementById("<%=this.n0.ClientID%>").style.visibility = "hidden";这样就可以了。试试。
      

  6.   

    id直接用n0就行的,因为执行完js以后,n0已经不显示了。
      

  7.   

    理论上直接写n0会报错的,Object required。因为在页面上该控件会被render成类似这样:
    <img id="ctl00_ContentPlaceHolder1_n0" style="position: absolute; z-index: 0;" />,你可以右键->view source(查看源代码)找找看。
    所以这个时候document.getElementById("n0")应该是null,是取不到相关属性的,会报错。至于img不显示,不一定是hidden生效了。你可以试试我说的写法,应该是好用的。
      

  8.   

    额,那就不知道怎么个情况了。
    有时间的话,看看asp.net render的机制以及ID,ClientID,UniqueID相关的资料吧,可能会有帮助。对不起,只能帮这么多了
      

  9.   


    //JS控制隐藏:
    img.style.display="none";//后台控制显示:
    img.Attributes.Add(style,display:block);//如果怕刷新就用ajax调用C#方法
      

  10.   

    style样式是不传递到服务器端的,服务器端无法得到,要得到,你需要放在<input type=hidden隐藏表单里面传回去
      

  11.   

    你要搞清楚,不是所有的东西都是发送到服务器端的,只有表单数据、Cookie等才提交,。
    css,style,innerHTML这些都是不提交的