“theform._eventtarget 为空或者不是对象”,解决办法
2008-09-08 12:56
267 查看
当点击按钮(服务器控件按钮)时,没有反应了,点窗口左下角(状态条)的黄叹号,提示
theform._eventtarget 为空或者不是对象
很是奇怪,本来好好的,怎么突然变成这样了。由于之前改了很多东西,也不记是动了哪里成了这样了。
查看网页的源码(从浏览器右键中“查看源代码”,不是aspx的源码),可以看到aspx页面生成的HTML与Javascript代码,如下代码值得关注;
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
_doPostBack方法太熟悉了,这是个曝光率很高的方法,不是在程序中曝光,是在网上,多次被人提到,这是服务器控件(到了客户端后也只是普通HTML控件)调用服务器端方法的javascript指令。
在_doPostBack方法中,用到了theForm变量,这就是在错误提示中提到的“theForm.__EVENTTARGET”,它为空,噢,看看为什么;
thisForm从哪里来的呢?
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
theForm就是表单form1呀,我们知道几乎在每个aspx页面中,都会有一个,且唯一的一个form表单,<form id="form1" runat="server"> 它的id一般是from1;它是服务器控件。我们很少会改动它的。而现在,它找不到了,所以theForm变量才为空。
继续查看
<form name="form1" method="post" action="index.aspx" id="form1">(这是服务器表单控件在客户端的HTML代码)
很显然,form1是存在的呀,可为什么找不到呢,我搜索了一下"form1",结果,查出来两个,呵呵。问题搞清楚了。
那一个form表单是用于搜索的,仅用于搜索框,它并不是报务器控件;但是它的id却也叫form1(默认的,没有改),这当然不行,就把它的id随便改了一个。就OK 。问题解决。
这个问题并没有给我带来太多障碍,只所以还拿出来说说,主要是说说解决思路。另外建议一下,就是除了服务器表单,其它的表单不要与这个form1表单重名;(服务器表单只能一个,而HTML表单却可以有多个,这并不冲突)。
当然了,表单元素是不可以嵌套的,
<form name="form1" method="post" action="index.aspx" id="form1">
<form name="form2">
</form>
</form>
像上面这样,是错误的。
theform._eventtarget 为空或者不是对象
很是奇怪,本来好好的,怎么突然变成这样了。由于之前改了很多东西,也不记是动了哪里成了这样了。
查看网页的源码(从浏览器右键中“查看源代码”,不是aspx的源码),可以看到aspx页面生成的HTML与Javascript代码,如下代码值得关注;
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
_doPostBack方法太熟悉了,这是个曝光率很高的方法,不是在程序中曝光,是在网上,多次被人提到,这是服务器控件(到了客户端后也只是普通HTML控件)调用服务器端方法的javascript指令。
在_doPostBack方法中,用到了theForm变量,这就是在错误提示中提到的“theForm.__EVENTTARGET”,它为空,噢,看看为什么;
thisForm从哪里来的呢?
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
theForm就是表单form1呀,我们知道几乎在每个aspx页面中,都会有一个,且唯一的一个form表单,<form id="form1" runat="server"> 它的id一般是from1;它是服务器控件。我们很少会改动它的。而现在,它找不到了,所以theForm变量才为空。
继续查看
<form name="form1" method="post" action="index.aspx" id="form1">(这是服务器表单控件在客户端的HTML代码)
很显然,form1是存在的呀,可为什么找不到呢,我搜索了一下"form1",结果,查出来两个,呵呵。问题搞清楚了。
那一个form表单是用于搜索的,仅用于搜索框,它并不是报务器控件;但是它的id却也叫form1(默认的,没有改),这当然不行,就把它的id随便改了一个。就OK 。问题解决。
这个问题并没有给我带来太多障碍,只所以还拿出来说说,主要是说说解决思路。另外建议一下,就是除了服务器表单,其它的表单不要与这个form1表单重名;(服务器表单只能一个,而HTML表单却可以有多个,这并不冲突)。
当然了,表单元素是不可以嵌套的,
<form name="form1" method="post" action="index.aspx" id="form1">
<form name="form2">
</form>
</form>
像上面这样,是错误的。
相关文章推荐
- “theform._eventtarget 为空或者不是对象”,解决办法
- theform._eventtarget 为空或者不是对象
- 问题: theform._eventtarget 为空或者不是对象,原因解析
- 设置了MaintainScrollPositionOnPostBack后“theForm._ScrollPositionx”为空或者不是对象的解决方法
- theForm_EVENTTARGET 为空或不是对象
- jqGrid $t.p.colModel[...].name 值为空或不是对象 的解决办法
- 关于 '_EVENTTARGET'为空或不是对象 的奇怪错误
- 'Ext.EventObject' 为空或不是对象的错误原因和解决方法
- eclipse打开一个文件后闪退(注意不是启动就闪退,是启动后打开某些类或者配置文件会闪退)解决办法
- ExtJs中的 'insertAdjacentHTML' 为空或不是对象错误原因及解决办法
- ie6或ie8下,UEditor中出错document.body为空或不是对象解决办法
- 打印证件 “factory.printing 为空或不是对象”解决办法
- 'Ext.EventObject' 为空或不是对象的错误原因和解决方法
- javac,或者wsimport命令提示不是内部命令解决办法
- JS中“null'document.getElementById为空或不是对象” 的解决办法
- 登陆T6软件提示错误“传入的对象不是From 解决办法
- __EVENTTARGET为空或不是对象
- Base64 报错 的解决办法 (Base-64 字符数组或字符串的长度无效。, 输入的不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、两个以上的填充字符,或者填充字符间包含非法字符。)
- JavaEE项目导入eclipse后出现红叉或者Target runtime Apache Tomcat v7.0 is not defined.等的解决办法
- JS中“null'document.getElementById为空或不是对象” 的解决办法