2017-02-21 108 views
1

我想将我的输入值存储到数组中。为什么我的输入值没有存储在数组中?

当我点击输入我得到输入值,并推入vals数组。

然后我控制台日志但每当我点击输入,它只推动最后输入值。

为什么?

JSFIDDLE

var input = document.getElementById("input"); 

input.addEventListener("keyup", function(e) { 
    var val = e.target.value; 
    var vals = []; 

    if (e.which == 13) { 

    vals.push(val); 
    input.value = " "; 
    console.log(vals); 

    } 

}, false); 
+2

以外因为你重新声明'vals'每次执行'keyup'侦听器。将其移出该侦听器。 – str

回答

2

为什么你的代码只显示最后一个值,是因为你的数组是函数的局部因此原因它只存在于该函数在范围内。而是使其成为全局的,这样你可以将多个元素推入数组中,并稍后访问它。

var vals = []; //make this global 

var input = document.getElementById("input"); 

input.addEventListener("keyup", function(e) { 
    var val = e.target.value; 
    if (e.which == 13) { 

    vals.push(val); 
    input.value = " "; 
    console.log(vals); 

    } 

}, false); 
1

需要初始化您的数组只有一次

var input = document.getElementById("input"); 
var vals = []; 
input.addEventListener("keyup", function(e) { 
    var val = e.target.value; 


    if (e.which == 13) { 

    vals.push(val); 
    input.value = " "; 
    console.log(vals); 

    } 

}, false); 
1

声明瓦尔斯阵列的事件侦听

var input = document.getElementById("input"); 
var vals = []; 

input.addEventListener("keyup", function(e) { 
    var val = e.target.value; 

    if (e.which == 13) { 

     vals.push(val); 
     input.value = " "; 
     console.log(vals); 

    } 

}, false); 
相关问题