2013-01-14 50 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,并使用开发工具栏中的“控制台”窗口。它会告诉你这样的事情...