我的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!
}
如前所述,可以将脚本块放在页面底部,或者使用标签的
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>