一个用户控件里的按钮单击事件如下
<asp:ImageButton ID="IbS" runat="server" ImageUrl="~/images/s.gif" OnClientClick="return JGLindex();" />在页面里引用如下,直接写在“<%@ Control Language="C#" AutoEventWireup="true" CodeFile="........ %>”下面,没有“<head>”
<script language="javascript" type="text/javascript">
function JGindex(){......}
function JGLindex(){......}
</script>
这样的语法应该没问题吧,可就是无法执行这两个函数。有可能是函数本身的问题吗?如何对JS函数查错?

解决方案 »

  1.   

    1。语法没有问题2。有报错吗?应该贴出来,3。在IE中调试 JS 脚本
       a. IE工具》Internet选项》高级》钩掉 禁用脚本调试 
       b. 在JS加入 debugger,有点像VS的断点味道,如
           function JGindex(){
               debugger;
               //..
           }
       c. 调用 JGindex() 的时候,会提示你是否调试,当然选择 是 了Good Luck!
      

  2.   

    在逻辑页面如下
    protected void Page_Load(object sender, EventArgs e)
        {        if (!IsPostBack) { Cs(); }
            DataClass dc = new DataClass();
            this.IbS.Attributes.Add("onclick", "javascript:JGL()");//调用“搜索房源”函数
            this.RBL_gz.Attributes.Add("onclick", "javascript:JGLindex())");//调用
               
        }
      

  3.   

    如果是放在一般页面里没有错误,则一般是因为脚本里调用了服务器控件,没有使用服务器控件的ClientID在客户端得到对象造成的。

    <asp:TextBox id="t1"在客户端要使用
    document.getElementById("<%=t1.ClientID%>")得到
      

  4.   

    在用户控件里?不考虑程序逻辑问题,你对用户控件都应该这样测试:在测试页面上放置2个或者使用绑定控件放置几十个用户控件,并且再在页面上放置一个button,然后看看其中任何一个提交回发操作时其它所有控件是正确保持状态。你应该考虑到你的jsvascript中的变量定义是否会重复、函数是否会重复,是否不同控件之间会不小心重复,等等问题。这些最基本的简单测试不难,但是往往被经验特别不足程序员随随便便地漠视掉。
      

  5.   

    如何对JS函数查错?
    ——————————————————————————————————————————
    当你对javascript差错的时候,应该忘记asp.net。你应该在html源代码上差错,甚至你应该把浏览器上的页面“另存为”一个单一html文档,然后使用vs调试这个htm文件。尽管完全可以,其实我从来不敢定义客户端页面上的全局变量和全局函数。同一个ascx在页面放置多个我无法处理。尽管完全可以处理,但是我懒得那样去设计。
      

  6.   

    在用户控件或者自定义控件设计中,不能乱输出javascript函数和全局变量。