我的 HTML 页面中有以下 JavaScript 引用页面上的 HTML 表单:
<script type="text/javascript">
<!--
var myForm = document.myForm;
function validateForm() {
if (myForm.myInput == "")
alert("Please input some text.");
return false;
}
myForm.submit();
}
function showFormInput() {
myForm.reset();
document.getElementById('myInput').style.display = 'inline';
}
//-->
</script>
...
<form name="myForm" id="myForm" action="..." method="post">
<input id="myInput" name="myInput" type="text" value="" style="display:none;" />
</form>
当尝试访问变量 myForm
时,这两个函数都抛出异常,提示“myForm 为 null 或不是对象”。为什么会这样?
更新:我想我从中收集到的一件事是全局变量通常应该用于字符串文字 - 而不是 DOM 中的元素。我将继续这样做,并谨慎使用元素变量,并且仅在加载 DOM 之后才使用。
最佳答案
您使用的是什么浏览器?
一般来说,你不应该使用document.*
访问。这是一个 MS-IE 约定。相反,使用
var myForm = document.getElementById( 'myForm' ) ;
var myInput = document.getElementById( 'myInput' ) ;
if( myInput.value == '' )
{
// its empty!
}
如前所述,要么将脚本 block 放在页面底部,要么使用
标记的onload
事件,如下所示
<script>
function go()
{
alert( "The DOM has been assembled and can be accessed.. nOW!!!" ) ;
var myForm = document.getElementById( 'myForm' ) ; // ...
}
</script>
<body onload="go() ;">
</body>
关于javascript - 为什么我的 JavaScript 变量不能跨函数持久存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2758210/