2011-10-11 49 views
1

我創建了一個簡單的JS文件,名爲formValueOperator.js,包含此功能:不能通過對象的getElementById外部JS文件在Chrome

function setValue(type, obj, value){ 
if(type == 'text') 
{ 
    obj.value = value; 
} 

,並在調用這個函數的另一個HTML頁面:

<HTML> 
    <HEAD> 
     <title>Simple Test</title> 
     <script type="text/javascript" src="formValueOperator.js"></script> 
     <script type="text/javascript"> 
     function setInitValue(){ 
       var element_order_id = document.getElementById("order_id"); 
       setValue('text', element_order_id, 'aaa'); 
     } 
     </script> 
    </HEAD> 
    <BODY> 
     <FORM name="myform" method="post"> 
       <input type="text" size=20 id="order_id" name="order_id"> 
     </FORM> 
     <script type="text/javascript"> 
       setInitValue(); 
     </script> 
    </BODY> 
</HTML> 

這是一個相當簡單的操作:

運行HTML - >通話功能setInitValue() - >把 'AAA' 的文本框中。

一切工作完美的FireFox(7.0.1)。但是,當我試圖在Chrome(14.0.835.202)上運行此功能時,它完全無法工作。

然後,我通過從formValueOperator.js和在HTML頁粘貼其移動整個的setValue功能測試的代碼。令人驚訝的是,它的工作。

Chrome瀏覽器如何將getElementByID對象傳遞給外部JS文件一定有些蹊蹺。

任何人都可以幫助我在這一個?

回答

0

這是關於何時setInitValue()方法被解僱。

當您將方法移到JS文件之外並進入文檔主體時,您可能會延遲執行該方法幾毫秒,從而使您選擇加載的元素時間。

使用jQueryready事件來執行您的代碼,當一切都完成加載。

$(document).ready(function(){ 
    setInitValue(); 
} 
); 
+0

感謝您快速響應。 但是,經過測試,它仍然沒有在Chrome上工作(但在FireFox上工作)。 – user989096

+0

在你的原始問題中,當你說「它不工作」時,你究竟是什麼意思?你會得到什麼錯誤? –

+0

沒有顯示錯誤,只是一個空白的文本框。 但是當我在FireFox上運行這個頁面時,它在文本框中顯示'aaa'。 – user989096

0

嘗試這種方式,延緩方法執行,直到Web的頁面已經被加載:

<FORM name="myform" method="post"> 
    <input type="text" size=20 id="order_id" name="order_id" /> 
</FORM> 

<script type="text/javascript"> 
    window.onload = function() { 
     setInitValue(); 
    }; 
</script> 
+0

HTML中沒有用於輸入的結束標記,HTML中也不存在自我結束標記。 –

+0

謝謝你的迴應。但它仍然沒有工作。 – user989096

+0

@Jamie Dixon:真的嗎?但是這個怎麼樣? http://www.w3schools.com/tags/tag_input.asp – user278064