我的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>

10-07 19:10
查看更多