日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

“theform._eventtarget 为空或者不是对象”,解决办法

發(fā)布時間:2025/7/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 “theform._eventtarget 为空或者不是对象”,解决办法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

當點擊按鈕(服務器控件按鈕)時,沒有反應了,點窗口左下角(狀態(tài)條)的黃嘆號,提示

theform._eventtarget 為空或者不是對象

很是奇怪,本來好好的,怎么突然變成這樣了。由于之前改了很多東西,也不記是動了哪里成了這樣了。

查看網(wǎng)頁的源碼(從瀏覽器右鍵中“查看源代碼”,不是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方法太熟悉了,這是個曝光率很高的方法,不是在程序中曝光,是在網(wǎng)上,多次被人提到,這是服務器控件(到了客戶端后也只是普通HTML控件)調(diào)用服務器端方法的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;它是服務器控件。我們很少會改動它的。而現(xiàn)在,它找不到了,所以theForm變量才為空。

繼續(xù)查看
<form name="form1" method="post" action="index.aspx" id="form1">(這是服務器表單控件在客戶端的HTML代碼)

很顯然,form1是存在的呀,可為什么找不到呢,我搜索了一下"form1",結(jié)果,查出來兩個,呵呵。問題搞清楚了。

那一個form表單是用于搜索的,僅用于搜索框,它并不是報務器控件;但是它的id卻也叫form1(默認的,沒有改),這當然不行,就把它的id隨便改了一個。就OK 。問題解決。

這個問題并沒有給我?guī)硖嗾系K,只所以還拿出來說說,主要是說說解決思路。另外建議一下,就是除了服務器表單,其它的表單不要與這個form1表單重名;(服務器表單只能一個,而HTML表單卻可以有多個,這并不沖突)。

當然了,表單元素是不可以嵌套的,
<form name="form1" method="post" action="index.aspx" id="form1">
<form name="form2">
</form>
</form>
像上面這樣,是錯誤的。

補充:?引用內(nèi)容 theForm.__EVENTTARGET 為空或不是對象  網(wǎng)站上搜索到很多關于GridView的分頁功能提示錯誤的帖子,他們基本的解決方案是: 引用內(nèi)容 1、GridView.AllowPaging要設置為True;
2、GridView.PageSize設置合適的每頁顯示數(shù);
3、添加GridView.PageIndexChanging事件,為GridView設置新的PageIndex并且重新綁定數(shù)據(jù)?! 〉菄L試過了都依然沒用。最后還是自己找到原因了,原來是Form ID搞的鬼~
  每個ASPX網(wǎng)頁都會加入一個默認ID為"form1"的Form,我想是為了實現(xiàn)PostBack而設置的吧。由于我要給每頁都加同一個導航頭,因此我做了個Header.aspx,為每個ASPX(此處假設為Somepage.aspx)的OnLoad事件都加上: 程序代碼 Server.Execute("Header.aspx");  于是,問題來了~
  Header.aspx內(nèi)的Form ID和Somepage.aspx內(nèi)的Form ID同為"form1",造成了Somepage.aspx內(nèi)的GridView執(zhí)行Javascript:__doPostBack失敗。
  解決方案:很簡單,把Header.aspx的Form ID改掉就好了~

轉(zhuǎn)載于:https://www.cnblogs.com/zhangbinghe/archive/2009/08/11/1543896.html

總結(jié)

以上是生活随笔為你收集整理的“theform._eventtarget 为空或者不是对象”,解决办法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。