1

我想知道是否有人可以帮助我。问题是 javascript 没有存储任何变量并且正在运行。

<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 页面上,但这不应该有所作为。

4

4 回答 4

5

如果没有 ID 为 text_field 的元素,则其余代码将不会运行。

于 2013-01-14T03:34:52.403 回答
4

尝试改变:

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

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

或者

var name;
if(document.getElementById('text_field')) { 
  name = document.getElementById('text_field').value 
} else { 
  name = "some value" 
}
于 2013-01-14T03:35:34.367 回答
4

在没有看到其余代码的情况下,罪魁祸首很可能是这一行:

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

如果脚本块在 'text_field' 存在之前运行,你会得到一个错误并且 javascript 的其余部分不会执行。结果是您看不到警报,并且永远不会设置测试变量。您需要在 DOM 存在后调用代码,方法是在 onload(或 jQuery 中的就绪函数)中运行它,或者将脚本块放在页面末尾。

于 2013-01-14T03:35:52.843 回答
2

将该脚本块移动到页面底部。text_field 尚不存在。如果您在浏览器中调试,请使用 Chrome 或 Firefox,并使用开发工具栏中的“控制台”窗口。它会告诉你这样的事情......

于 2013-01-14T03:38:00.313 回答