gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 06:56:40 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com