JS代码:
function ShowOrHideControl(ControlClientID) {
            var Control = document.getElementById(ControlClientID);
            if (Control.style.display == "block") {
                Control.style.display = "none";
            }
            else Control.style.display = "block";
        }
html代码:
< input type="button" id=btn onclick="ShowOrHideControl('<%= dvLeft.ClientID %>')"/>dvLeft是一个div,有runat="server"标记这样写可以传的参数实际上是dvLeft的服务器控件ID,可以运行。
但是如果html代码换一下,把btn加一个runat="server"标记以后,传的参数就不是dvLeft的服务器控件ID了,
真搞不懂为什么。现在还是想将dvLeft的ClientID传过去,应该怎么写呢?javascriptserver传参ClientID

解决方案 »

  1.   

    何必要一定要家runat=server  
      

  2.   

    你要加ruant=server,那onclick就执行单击事件了,不会调用js方法的啊,除非用OnClientClick执行前台js方法
      

  3.   


    不是啊,执行了JS里面的方法。现在关键是加了runat=server之后参数传的不正确了。
    我是想用户点击文本框时弹出日历让用户选择,用户选择日期后又显示到文本框里面。
    因此前台要把日历的ClientID传到JS里改变日历的display属性,后台日历选择之后再把日期交给文本框的value。感觉貌似很简单,就是个传参问题。
    兄弟可有思路?
      

  4.   

    你可以在page_load(或者、其实更好地是在Page_prerender)中写:    btn.Attribute["onclick"]=string.Format("ShowOrHideControl('{0}');", dvLeft.ClientID);
      

  5.   

    如果有母版页 用户控件中使用
    那么需要传递给前台ClientId才会被js正确引用(针对runat="server"的服务器控件)
      

  6.   

    < input type="button" id=btn runat=server />
    <script>
    document.getElementById("<%=btn.ClientID %>").onclick=function(e){
    ShowOrHideControl('<%= dvLeft.ClientID %>')
    };
    </script>
      

  7.   

    http://www.cnblogs.com/volnet/archive/2008/01/08/1029699.html加上runat后就把<自动转码为&lt;,认不出里面的code了,既然你一定要改成html控件加runat这种变态模式,就只能去cs文件中处理了,服务器控件本来也应该是这么操作的
      

  8.   

    Quote: 引用 楼主 z392587086 的回复:

    < input type="button" id=btn onclick="ShowOrHideControl('<%= dvLeft.ClientID %>')"/>
    既然能运行,为什么btn非要加runat=server呢?
    如果你非要用服务器控件,直接用现成的服务器控件多好?
    在后台用该服务器控件的Attribute属性,把onclick事件加上.如:this.btn.Attribute.add("onclick",string.format("ShowOrHideControl('{0}')",dvLeft.ClientID));
      

  9.   

    1、先把 dvLeft变成静态的id: ClientIDMode="Static" 
    2、这样你就可以直接用 div 的 id 了< input type="button" id=btn onclick="ShowOrHideControl('dvLeft')"/>http://msdn.microsoft.com/en-us/library/system.web.ui.clientidmode.aspx