Javascript数组-全局范围的问题

Javascript数组-全局范围的问题,javascript,Javascript,我不明白为什么这不起作用。项在第一个函数中添加到数组中,但在第二个函数中无法访问(尽管在声明数组时添加的项存在)。我认为这与阵列的全局范围有关,但我可以看到如何使其工作 var theArray=[“苹果”]; 函数addValue(){ var myValue=document.forms[“myAdd”][“myInput”].value; 阵列推送(myValue); 警报(阵列[阵列长度-1]); /*行吗*/ } 函数getValue(){ 警报(阵列[阵列长度-1]); /*返回“

我不明白为什么这不起作用。项在第一个函数中添加到数组中,但在第二个函数中无法访问(尽管在声明数组时添加的项存在)。我认为这与阵列的全局范围有关,但我可以看到如何使其工作

var theArray=[“苹果”];
函数addValue(){
var myValue=document.forms[“myAdd”][“myInput”].value;
阵列推送(myValue);
警报(阵列[阵列长度-1]);
/*行吗*/
}
函数getValue(){
警报(阵列[阵列长度-1]);
/*返回“apple”,而不是数组上最后一个推送的项目*/
}
数组示例
添加到阵列:
从数组中获取


提交表单的默认操作是重新加载页面(如果表单具有
操作=
属性,请将位置更改为该属性)

重新加载页面将导致删除内存中保存的所有值(即变量)。有很多方法可以解决这个问题,比如使用
localStorage
,但我怀疑您并不打算让表单的默认行为占上风

为此,我们在事件对象上有一个方法:

var theArray=[“苹果”];
var addForm=document.getElementById('add-form');
var getForm=document.getElementById('get-form');
addForm.addEventListener(“提交”,addValue);
getForm.addEventListener('submit',getValue);
函数addValue(事件){
event.preventDefault();//停止表单提交
var myValue=document.forms[“myAdd”][“myInput”].value;
阵列推送(myValue);
警报(阵列[阵列长度-1]);
}
函数getValue(事件){
event.preventDefault();
警报(theArray[theArray.length-1]);//现在可以正常工作。
}
数组示例
添加到阵列:
从数组中获取


你好,艾伦,欢迎来到StackOverflow!请编辑您的问题,并使用StackOverflow代码段功能创建可运行的代码段。通过这种方式,人们可以更容易地a)理解发生了什么,b)回答你的问题。欢迎访问网站@AlanJarvis-我已经为你将代码更改为可运行的代码片段。我在函数中添加了
return false
,因此它不会尝试实际提交表单(snippet功能不适用于此)。话虽如此,我似乎无法重现这个问题。是因为您的代码确实提交了,所以页面会重新加载,然后将数组擦除回仅包含“apple”的位置吗?也许Alan没有意识到这样一个事实:重新加载页面(或者使用POST或GET同步提交表单)会完全重设所有JS的状态。@vlaz您不应该添加
return false几乎可以肯定这就是问题所在,通过添加它,您已经从根本上改变了问题的含义。@MadaraUchiha谢谢您的提示。我道歉,以后我会记住的。谢谢!那太好了!我不知道提交会重置JS变量。我在网上找到的所有示例都只使用了一个函数。