2013-01-14 64 views
1

我想知道是否有人可以幫助我。問題是JavaScript沒有存儲任何變量,並正在採取行動。JavaScript沒有存儲變量。每個變量「undefined」

<script type="text/javascript" language="javascript"> 

var name = document.getElementById('text_field').value; 

var test = "foobar"; 


function test_function(){ 
alert("hello"+test);  
} 

alert('test '+test); 

</script> 

第二警報犯規發生在所有的,而當我點擊按鈕來觸發test_function()它提醒了「helloundefined」。 我只是不知道該怎麼做,它工作正常,然後突然停止。我應該提到,這是在一個PHP頁面上,但這不應該有所作爲。

+2

是你的腳本在身體部分的最底部?我敢打賭這會解決你的問題。 – Sanchit

回答

5

如果沒有ID爲text_field的元素,則其餘代碼將不會運行。

+3

要清楚的是,如果腳本拋出異常,其餘的將不會運行,並且缺少ID爲text_field的元素將引發異常 –

4

嘗試改變:

var name = document.getElementById('text_field').value; 

var name = document.getElementById('text_field').value || "some default value; 

OR

var name; 
if(document.getElementById('text_field')) { 
    name = document.getElementById('text_field').value 
} else { 
    name = "some value" 
} 
4

在沒有看到代碼的其餘部分,最有可能的罪魁禍首是這一行:

var name = document.getElementById('text_field').value; 

如果腳本塊在'text_field'存在之前運行,則會出現錯誤,並且其餘的javascript不會執行。結果是您看不到警報,並且測試變量從未設置。您需要在DOM存在後調用代碼,或者通過在onload中運行它(或者在jQuery中使用ready函數),或者將腳本塊放在頁面的末尾。

2

將該腳本塊移到頁面底部。 text_field尚不存在。如果您在瀏覽器中進行調試,請使用Chrome或Firefox,並使用開發工具欄中的「控制檯」窗口。它會告訴你這樣的事情...