我在我服务器端连着注册了如下两个javascript 脚本            //第一个 my(str) 
            StringBuilder sb = new StringBuilder();            sb.Append("function my(str)\n");
            sb.Append("{\n");
            sb.Append("     alert('xxxxxxx');");
            sb.Append("}\n");            if (!thePage.ClientScript.IsClientScriptBlockRegistered("my"))
            {
                thePage.ClientScript.RegisterClientScriptBlock(typeof(string), "my", sb.ToString(), true);            }
            
           //第二个 sAlert(str)
            StringBuilder sbAlert = new StringBuilder()            sbAlert.Append("function sAlert(str)\n");
            sbAlert.Append("{\n");
           //在后来调用的时候老是在这抱错:缺少对象,(也就是好像找不 my(str)这个方法)
            sbAlert.Append("my(str);\n");
            sbAlert.Append("}\n");
            if (!thePage.ClientScript.IsClientScriptBlockRegistered("sAlert"))
            {
                thePage.ClientScript.RegisterClientScriptBlock(typeof(string), "sAlert", sbAlert.ToString(), true);
                
            }//我是在 ascx 文件中注册这两个 javascript 脚步的,并且也是在此 ascx 文件中调用此 javascrip 方法,调用方法如下
                string scriptString = "<script  language=\"javascript\" type=\"text/javascript\" defer=\"defer\"> sAlert('<br/><br/>'+'必有一项不能为空'+'<br/><br/><br/>');";
           
                scriptString += "<";
                scriptString += "/";
                scriptString += "script>";
              
                Page.ClientScript.RegisterStartupScript(typeof(string),"sAlert",scriptString);

解决方案 »

  1.   

    javascript 老是抱缺少对象的错误??怎么办 
      

  2.   

    这么简单的脚本建议还是直接在页面里写,那样代码清楚还易于维护。
    关于报对象错误可以通过查看页面源码把这段javascript得到,然后做一个简单的测试看看是否是正确的,这样很容易就能找出问题所在。
      

  3.   

    关于报对象错误可以通过查看页面源码把这段javascript得到,然后做一个简单的测试看看是否是正确的,这样很容易就能找出问题所在。 
    =============================================
    这个方法我用过过了,问题就是,明明两个方法都写进去了(my(str)和sAlert(str))可是在调用 sAlert()以后,sAlert()中又调用my(str)就会提示缺少对象的错误,也就是 明明两个方法都写进去了(my(str)和sAlert(str))怎么他还会找不到,会抱错呢???我想解决这个原因??
      

  4.   

    注册的javascript脚本要放到<script language='javascript'></script>中例://第一个 my(str)  
    StringBuilder sb = new StringBuilder(); sb.Append("<script language='javascript'>");
    sb.Append("function my(str)\n"); 
    sb.Append("{\n"); 
    sb.Append("     alert('xxxxxxx');"); 
    sb.Append("}\n"); 
    sb.Append("</script>");if (!thePage.ClientScript.IsClientScriptBlockRegistered("my")) 

      thePage.ClientScript.RegisterClientScriptBlock(typeof(string), "my", sb.ToString(), true); 
    }
      

  5.   

    代码写的是没有问题的~~~~只是在 .aspx 文件中就正常运行没问题~~!!
    可是我在 .ascx 文件中这么用就不行~~??怎么办啊??
      

  6.   

    我在调用 sAlert(str)的时候复得值 
      

  7.   

    我写完整的代码如下,大家帮我想象办法protected void Page_Load(object sender, EventArgs e)
        {
            ////////////////////在此处注册 javascript 脚本////////////////////////////////////
             //第一个 my(str)  
                StringBuilder sb = new StringBuilder();             sb.Append("function my(str)\n"); 
                sb.Append("{\n"); 
                sb.Append("     alert(str);"); 
                sb.Append("}\n");             if (!Page.ClientScript.IsClientScriptBlockRegistered("my")) 
                { 
                    Page.ClientScript.RegisterClientScriptBlock(typeof(string), "my", sb.ToString(), true);             } 
                 
               //第二个 sAlert(str) 
                StringBuilder sbAlert = new StringBuilder();            sbAlert.Append("function sAlert(str)\n"); 
                sbAlert.Append("{\n"); 
               //在后来调用的时候老是在这抱错:缺少对象,(也就是好像找不 my(str)这个方法) 
                sbAlert.Append("my(str);\n"); 
                sbAlert.Append("}\n"); 
                if (!Page.ClientScript.IsClientScriptBlockRegistered("sAlert")) 
                { 
                    Page.ClientScript.RegisterClientScriptBlock(typeof(string), "sAlert", sbAlert.ToString(), true); 
                     
                } 
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            //////////////////////在此处调用//////////////////////////
            if (!this.IsClientScriptBlockRegistered(""))
            {
                string scriptString2 = "<script  language=\"javascript\" type=\"text/javascript\" defer=\"defer\"> sAlert('弹出成功!!');";
                scriptString2 += "<";
                scriptString2 += "/";
                scriptString2 += "script>";
                this.RegisterStartupScript("",scriptString2);
            }
        }
      

  8.   

    有可能是注册的键值有重复的了,你把最后一句改成Page.ClientScript.RegisterStartupScript(typeof(string),this.CientID+"sAlert",scriptString); 试一下!
      

  9.   

    thePage.ClientScript.RegisterClientScriptBlock(thi.GetType(), "my", sb.ToString(), true);          
                    thePage.ClientScript.RegisterClientScriptBlock(this.GetType(), "sAlert", sbAlert.ToString(), true);