javascript - 为什么我的 JavaScript 变量不能跨函数持久存在?

标签 javascript forms variables document element

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

相关文章:

php - 无法在 php 中获取单选值

PHP - 从变量到常量的值

c++ - Arduino/C++ 交叉函数变量

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

html - 在表单中包含额外的 HTTPS 请求 header 信息

javascript - 查找数组中的第一个对象

javascript - 如何取消setTimeout?

javascript - 如何更改 CircularProgress 条的颜色

javascript - 如何在数组中插入带有数组的不同对象

javascript - jquery序列化动态表单