2017-02-21 141 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); 
相關問題