asp.net Button事件中调用js问题:document.getElementById(...)为空或不是对象。请大师帮解决下 10
各位大师我遇到一个问题,asp.netButton事件中调用js问题:document.getElementById(...)为空或不是对象。调试过第一次点按钮触发到js...
各位大师我遇到一个问题,asp.net Button事件中调用js问题:document.getElementById(...)为空或不是对象。调试过第一次点按钮触发到js后会提示该错误,获取的对象为null,如果再点就能获取到对象。请各位帮看看
页面代码:
<asp:Button ID="btnDel" runat="server" Text="删除" CssClass="btn" OnClick="btnDel_Click" />
<div class="errInfodis" id="errInfo">
<asp:Label ID="lblmsg" runat="server" Text=""></asp:Label>
</div>
cs代码:
protected void btnDel_Click(object sender, EventArgs e)
{
string intstr = hidID.Value.ToString().Trim();
if (!string.IsNullOrEmpty(intstr))
{
//调用删除方法
}
else
{
string str = "";
str += "<script language='javascript' type='text/javascript' defer=true>";
str += "var titab=document.getElementById('errInfo');";
str += "alert(titab);";
str += "</script>";
Response.Write(str);
//调用提示信息
//showErrinfo("无可删除信息。");
}
} 展开
页面代码:
<asp:Button ID="btnDel" runat="server" Text="删除" CssClass="btn" OnClick="btnDel_Click" />
<div class="errInfodis" id="errInfo">
<asp:Label ID="lblmsg" runat="server" Text=""></asp:Label>
</div>
cs代码:
protected void btnDel_Click(object sender, EventArgs e)
{
string intstr = hidID.Value.ToString().Trim();
if (!string.IsNullOrEmpty(intstr))
{
//调用删除方法
}
else
{
string str = "";
str += "<script language='javascript' type='text/javascript' defer=true>";
str += "var titab=document.getElementById('errInfo');";
str += "alert(titab);";
str += "</script>";
Response.Write(str);
//调用提示信息
//showErrinfo("无可删除信息。");
}
} 展开
4个回答
展开全部
1楼已经说明了为什么事null 因为JS 代码 在 Html 代码前面,所以Html 代码没有加载完成就 来一个
getElementById 肯定为 null 对象。
具体的解决方法,Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script> alert('删除成功'); </script>");
用你的JS代替上面的JS就可以了,后台向客服端(前台)调用一个JS方法
getElementById 肯定为 null 对象。
具体的解决方法,Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script> alert('删除成功'); </script>");
用你的JS代替上面的JS就可以了,后台向客服端(前台)调用一个JS方法
展开全部
根据你写的代码,如果是在IE里面浏览,应该每次都可以获取到DIV,不会为Null的,因为你加了defer=true
如果是在Firefox里面浏览,不管你怎么点按钮,肯定每次都会提示是null的
defer=true这个属性并不可靠,并不是每个浏览器都支持
楼主你应该把按照楼上的建议把
Response.Write(str);改成
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "message", str);
至于楼主说的第一次点是null, 第二次点就是object了,我觉得理论上应该不会出现这种情况,楼主你是不是看错了?
如果是在Firefox里面浏览,不管你怎么点按钮,肯定每次都会提示是null的
defer=true这个属性并不可靠,并不是每个浏览器都支持
楼主你应该把按照楼上的建议把
Response.Write(str);改成
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "message", str);
至于楼主说的第一次点是null, 第二次点就是object了,我觉得理论上应该不会出现这种情况,楼主你是不是看错了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
js代码不能用Response.Write(str);输出因为代码是从上到下执行的而这段输出是把script代码输出在最顶上所以会报document.getElementById(...)为空或不是对象
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个比较简单啦,看看相关的书籍,基本原则上的错误。自己细心找下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询