2016-09-29 34 views
0

我正在製作一個日記應用程序,並且每次在我的html表單上提交輸入時都需要創建一個對象實例。是否可以通過循環數組填充一個Object實例?

我想創建一個循環,它將結果中的輸入轉換爲新的對象實例中的值。到目前爲止,我的嘗試給了我一個未定義值的實例。這甚至有可能做到嗎?

results = [] 

function example(a, b){ 
    this.a = a; 
    this.b = b; 
} 

function getElements(){ 
var a = document.getElementById("a").value; 
var b = document.getElementById("b").value; 
results.push(a,b) 
} 

我在一個循環試圖當我CONSOLE.LOG =>例如創建例如

function createNewDay(){ 
    for (i = 0;i<results.length;i++){ 
    var x = new day([i]) 
    } 
} 

的新實例{A:未定義,B:未定義}

+0

當然是。你可能只是做錯了,但我不能告訴給你的問題的代碼......它有點不清楚你試圖用它來完成。您在每次迭代中創建了一個「day」的新實例,但是沒有做任何事情,並且該示例似乎與console.log結果沒有任何關係.. –

+0

我並不完全關注您,但是您意味着做'results.push(新的例子(a,b))'和'新的一天(結果[i])'? –

+0

基本上我正在嘗試這樣做,每次在HTML表單上單擊「提交」按鈕時都會創建一個新的日記條目。該日記條目將是一個新的Object實例。我是編程新手,所以這可能不是最好的方法,但我的推理是將值推到結果上,然後遍歷結果並使每個結果成爲新對象實例的單獨屬性。因此,如果結果= [1,2],那麼我希望Object實例看起來像這樣=> object {a:1,b:2} – Alonishka

回答

1
<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width"> 
    <title>JS Bin</title> 
</head> 
<body> 
    <input id="a" type="text"> 
    <input id="b" type="text"> 
    <button type="submit" id="submit">Submit</button> 
    <button type="button" id="view">View results in console</button> 
</body> 
<script type="text/javascript"> 
var results = []; 

function Example(a, b) {a 
    this.a = a; 
    this.b = b; 
} 

function getElements() { 
var a = document.getElementById('a').value; 
var b = document.getElementById('b').value; 
results.push(new Example(a, b)); 
} 

function loopResults() { 
    for (var i = 0; i < results.length; i++) { 
    console.log(results[i]); 
    } 
} 

document.getElementById('submit').addEventListener('click', getElements, false); 
document.getElementById('view').addEventListener('click', loopResults, false); 
</script> 
</html> 

演示:http://jsbin.com/jehupayomu/1/

+0

謝謝!這很簡單,我踢自己沒有想到它。 – Alonishka

0

所以..你可以使用jQuery爲:

var formDataObject = $("refer_to_form_by_id_or_name").serializeObject(); 

也喜歡在這裏提到:Serialize form data to JSON

+0

這個問題不包括'jQuery'標記,因此預計會有純粹的JavaScript解決方案。也許是 – vlaz

+0

。也許作者不知道有些圖書館可能對此有所幫助。並沒有明確指出香草js解決方案是通緝的。如果作者會說清楚,我可以刪除答案。 –

0

您可以使用FormData這個 - 這使得它更通用的解決方案:

var form = document.querySelector('form'); 
 

 
form.onsubmit = function() { 
 
    var formdata = new FormData(this); 
 
    var results = {}; 
 
    for ([key, value] of formdata) { 
 
     results[key] = value; 
 
    } 
 
    console.log(results); 
 
    return false; // cancel submission 
 
};
<form method="post" action=""> 
 
    a: <input name="a" value=""><br> 
 
    b: <input name="b" value=""><br> 
 
    <input type="submit"> 
 
</form>

相關問題