简体   繁体   English

为什么我的输入值不存储在数组中?

[英]Why my input values not storing in array?

I want to store my input values into an array. 我想将输入值存储到数组中。

When i click enter i get the input value and push into vals array. 当我单击Enter时,我得到输入值并推入vals数组。

Then i console log but whenever i click enter, it only push last input value. 然后我控制台日志,但是每当我单击Enter时,它只会推送最后一个输入值。

Why? 为什么?

JSFIDDLE 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);

the reason why your code is only displaying the last value is because your array is local to the function hence it only exists while that function is in scope. 您的代码仅显示最后一个值的原因是因为您的数组位于函数的本地,因此仅当该函数在作用域内时才存在。 Rather make it global, that way you can push more than one element into the array and later access it. 而是将其设置为全局,这样您就可以将多个元素推入数组,然后再访问它。

 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);

You need to initialize your array only once 您只需要初始化一次数组

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);

Declare the vals array outside of the event listener 在事件侦听器外部声明vals数组

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);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM