javascript Cannot convert to object

來源:互聯網
上載者:User

    最近在學習javascript的過程中碰到一個這樣的問題。 先貼出代碼

    

 1 <html> 2 <head> 3 <script type='text/javascript'> 4   var txt=document.form1.txt; 5   function btn_onclick(){ 6     txt.value='123'; 7   } 8 </script> 9 </head>10 <body>11 12   <form name='form1' action=''>13     <input type='text' name='txt'/>14     <input type='button' value='button' name='btn' 15     onclick='btn_onclick()'/>16   </form>17 </body>18 </html>

測試用的是Opera瀏覽器。在opera 的控制台會拋出一個這樣的錯誤“Cannot convert 'document.form1' to object”。

但是如果把JS放在body部分就沒有問題了。js放在body和head是不同的前者是對js進行載入和執行,而後者只是進行載入。

解決辦法很簡單:

1、var txt=document.form1.txt; 放到body中。

2、var txt=document.form1.txt;放到function中。

這裡還存在另一個問題,可以給文字框增加一個id='test' 並且用var txt=document.getElementById('test');替代原來的代碼。這樣控制台就不會報錯了。 為什麼 document.form1 不可以而document.getElementByid()可以呢?

待續.....

剛從北京照完工作回來。

從google搜尋了半天,也沒找到答案,後來用IE和Chrome分別測試了一下。用var txt=document.getElementById('test'); 是不可以的。所以盡量不要在head中寫這種全域變數,head中的js只載入而不執行,而body中的就不同了。即載入也執行。

另附,js在 head 和 body  的區別 http://www.irt.org/script/421.htm

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.