我有一个javascript全局变量的问题,让我假设我有以下内容
var globalVar;
Run Code Online (Sandbox Code Playgroud)
我有一个文本字段
<input type="text" id="myInput" onkeydown="checkKey(this)" onkeypress="checkKey(this)"/>
Run Code Online (Sandbox Code Playgroud)
在函数checkkey中,我为它分配了一些值:
globalVar=document.forms[0].elements("myInput").value;
Run Code Online (Sandbox Code Playgroud)
我检查了全局变量值是否已更改并发出警报.当我尝试globalVar在另一个函数中使用时,我发现它的值未定义.另一个功能有:
param += globalVar;
Run Code Online (Sandbox Code Playgroud)
实例的elements属性form不是函数,它是一个对象.使用
globalVar=document.forms[0].elements.myInput.value;
Run Code Online (Sandbox Code Playgroud)
...要么
globalVar=document.forms[0].elements["myInput"].value;
Run Code Online (Sandbox Code Playgroud)
...但是更好的是,通过你正在调用的方式checkKey,只需声明一个被调用的参数input或者其他用法
globalVar=input.value;
Run Code Online (Sandbox Code Playgroud)
...因为你正在this进入checkKey.
如果您要按名称访问表单字段,请使用name属性而不是id属性(尽管id也适用于许多浏览器).
如果您var globalVar;处于全局范围(在所有函数之外),那么它是一个全局变量.如果该var语句在函数内部,则它是局部变量.你还没有给我们足够的上下文知道在哪里var的,但如果它是在全局范围内,你成功地将其值设置,以后你选择了它,它就会被设置.