我在我服务器端连着注册了如下两个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);
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);
关于报对象错误可以通过查看页面源码把这段javascript得到,然后做一个简单的测试看看是否是正确的,这样很容易就能找出问题所在。
=============================================
这个方法我用过过了,问题就是,明明两个方法都写进去了(my(str)和sAlert(str))可是在调用 sAlert()以后,sAlert()中又调用my(str)就会提示缺少对象的错误,也就是 明明两个方法都写进去了(my(str)和sAlert(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);
}
可是我在 .ascx 文件中这么用就不行~~??怎么办啊??
{
////////////////////在此处注册 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);
}
}
thePage.ClientScript.RegisterClientScriptBlock(this.GetType(), "sAlert", sbAlert.ToString(), true);