2014-10-18 92 views
-4

我在html中創建了一個表單,它接收用戶數據。然後我使用javascript將數據保存到數組中。下面是我的代碼:Javascript陣列推送功能

function test(){ 
    var fName = document.getElementById('myName').value; 

     var test = ["dataOne"]; 
     test.push("dataTwo"); 
     test.push("dataThree"); 

     test.push(fName); 
     } 

問題: DataOne,dataTwo和dataThree在下面的索引數組0,1,2舉行。現在,用戶通過表單輸入的數據被保存到一個名爲「fName」的變量中,然後該變量被推入數組中。

當我將變量推入數組中時,它保存在數組中的索引3處。每次用戶輸入一些數據時,數據都保存在索引3中。我希望將下一個數據保存在索引4和索引5中,依此類推。每個用戶提交應該在一個新的索引。目前,如果用戶提交一個形式中,陣列將看起來像這樣:

用戶1:

[dataOne,dataTwo,dataThree,用戶1輸入]

如果第二用戶提交一個表單:

用戶2:

[dataOne,dataTwo,dataThree,用戶2輸入]

用戶1輸入已超過由用戶輸入2寫入。

任何人都可以幫忙。 在此先感謝。

+0

你的頭銜的確與真正的問題無關。 – jfriend00 2014-10-18 23:07:54

+0

你什麼時候打電話測試功能? – 2014-10-18 23:07:55

+0

你已經問過這個問題了......這個版本比第一個提供的「提交表單」的含義更少。 – Quentin 2014-10-18 23:08:36

回答

1

問題是每次調用函數時都要重新聲明/覆蓋數組。嘗試這樣的:

var test = ["dataOne"]; //\ 
test.push("dataTwo"); //>which equals var test = ["dataOne", "dataTwo", "dataThree"] 
test.push("dataThree"); /// 

function func(){ 
    var fName = document.getElementById('myName').value; 
    test.push(fName); 
} 

這樣每個新的函數調用推另一個字符串到數組。

另請注意,我必須更改函數名稱,因爲並非所有東西都可以稱爲test(數組和函數)。