首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

还是javascript传参有关问题

2013-01-11 
还是javascript传参问题JS代码:function ShowOrHideControl(ControlClientID) {var Control document.ge

还是javascript传参问题
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传过去,应该怎么写呢? 帮顶!
[解决办法]
何必要一定要家runat=server  
[解决办法]
你用母版页了么?
[解决办法]
你可以在page_load(或者、其实更好地是在Page_prerender)中写:

    btn.Attribute["onclick"]=string.Format("ShowOrHideControl('{0}');", dvLeft.ClientID);
[解决办法]
如果有母版页 用户控件中使用
那么需要传递给前台ClientId才会被js正确引用(针对runat="server"的服务器控件)
[解决办法]
< input type="button" id=btn runat=server />
<script>
document.getElementById("<%=btn.ClientID %>").onclick=function(e){
ShowOrHideControl('<%= dvLeft.ClientID %>')
};
</script>
[解决办法]
还是javascript传参有关问题
[解决办法]
http://www.cnblogs.com/volnet/archive/2008/01/08/1029699.html

加上runat后就把<自动转码为&lt;,认不出里面的code了,既然你一定要改成html控件加runat这种变态模式,就只能去cs文件中处理了,服务器控件本来也应该是这么操作的
[解决办法]

Quote: 引用:

< 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));

热点排行