|
|
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已! |
|
恭喜您是本站第 1704350
位訪客!
登入 | 註冊
|
|
|
|
發表者 |
討論內容 |
冷日 (冷日) |
發表時間:2011/7/16 7:16 |
- Webmaster
- 註冊日: 2008/2/19
- 來自:
- 發表數: 15771
|
- [分享]document.forms[0].submit() 物件不支援此屬性或方法
- 冷日本周因為某案件,發生了一件很詭異(後面發現是很蠢)的事情!
故事從頭說來: 冷日再寫一個新功能,姑且叫他 N 程式! N 程式的內容和過去寫過的一隻程式非常相像,所以冷日先 copy 過去寫過的那隻程式,現在叫他 O 程式! 把 O 程式另存成 N 程式後,冷日就開始專心於 N 程式和 O 程式不一樣的地方(就是客戶要得新功能啦)! 經過一段時間的努力, N 程式大致功能完成,即將記入測試階段,所以冷日先測試操作介面。 操作介面測試 OK 以後,當然就要進行正式的功能測試,此時發現『送出按鈕無法使用』!? 瀏覽器告知的JavaScript錯誤是:
而錯誤行的內容是:
f.target="_self";f.submit();
也就是說, Form 沒有辦法 Submit !? 這怎麼可能!?讓我們來看一下整段程式碼:
function batchSubmit() {
var f=document.forms[0];
f.target="_self";f.submit();
}
就這麼簡單的一段程式碼,怎麼可能不會動!?
此時冷日就檢查一下其他需要 Submit 的 Function,也都不會動! 所以這時就回頭檢查原本的 O 程式,那邊一切正常勒!? 花了幾天慢慢檢視原始碼對照兩邊,實在是找不出來錯誤!
就在今天(2011-07-16)拿以下關鍵字去拜了 Google 大神: document.forms[0].submit() 物件不支援此屬性或方法 找到了這篇: 糊塗程式設計師… | Arthur's Blog 他寫到了: 引言: 一個奇怪的JavaScript 神奇事件…. 我在Perl 裡面用了 $q->submit(); 卻不管我怎麼樣寫 JavaScript 就是不能使用 document.forms[0].submit(); 任我怎麼改, 系統總是錯誤 "此物件不支援此屬性或方法" 想破了頭….找破了文件,奇怪….程式明明沒有錯….. 卻不明白,為何 document.forms[0].submit();卻不能用??? 最後…………………………………. 原來是因為….在整個form裡面已經有一個名為 submit 的 物件… 所以 document.forms[0].submit變成是一個那個按鈕, 真是!@#$%^& 唯一的解法,當然得要 更改submit的名字就好了….. 但是不免令人氣憤….微軟的錯誤提示也未免給的太不精確了吧…….
所以冷日去找了一下,冷日的 N 程式裡,還真的新增了一個按鈕(就是那個送出鈕) Name 叫做 Submit ! 把那個按鈕的名稱改掉以後,其他程式一點都不需要更動,就搞定了啦!.....
結論就是: 以後 Form 裡面不要亂取 Name 阿!要養成把關鍵字避開的好習慣阿!不然真的會找死!
以此做個紀錄,順便感謝『谷哥大神』與『Arthur』!
|
|
|