2017-09-22 57 views
0

我有一個問題,我無法解決,也許你們可以幫助我!無法獲取對象

我收到了一些複選框。我需要單擊按鈕時選中的值。這工作到目前爲止。現在我需要用這些信息來構建某種對象/數組。

到底該構建看起來是這樣的:

[{"ID-Number":"1","ID-Data":"ABCD1234"},{"ID-Number":"2","ID-Data":"DEFG5678"}] 

的「ABCD1234」和「DEFG5678」是選中的複選框的值。對於每個選中的複選框條目,從「1」開始,「ID-Number」應計爲1。

我想我可能必須先構建一個數組,然後再爲每個「條目」添加一個數組,然後將這些數組添加到主陣列?

我的代碼看起來是這樣的:

listToSubmit = []; 

i = "0"; 

$("input[name=mycheckboxgroup]:checked").each(function() { 

    newEntry = []; 

    newEntry['ID-Number'] = i++; 
    newEntry['ID-Data'] = $(this).val(); 

    listToSumbit.push(newEntry); 

}); 

console.log(listToSubmit) 

謝謝你把這個工作任何幫助!

回答

0

要獲得正確的索引,你可以循環所有的複選框:

listToSubmit = [] 
 
elements = document.querySelectorAll("input[name=mycheckboxgroup]") 
 

 
for (i = 0; i < elements.length; i++) 
 
    if (elements[i].checked) 
 
    listToSubmit.push({ 'ID-Number' : i + 1 + '', 'ID-Data' : elements[i].value }) 
 

 
console.log(JSON.stringify(listToSubmit))
<input type='checkbox' name='mycheckboxgroup' value='ABCD1234' checked \> 
 
<input type='checkbox' name='mycheckboxgroup' value='DEFG5678' checked \> 
 
<input type='checkbox' name='mycheckboxgroup' value='XYZ90' \>

+0

Genious!像魅力一樣工作,thx非常! – sparks

2

夫婦與你的代碼的問題:

  • 你做listToSumbit.push(newEntry),這應該是listToSubmit.push(newEntry)
  • 開始i = "0"是有點怪異,可能會引起問題 - 嘗試i = 0代替。

有了這個錯字,我強烈建議在你的IDE中使用一個好的linter - eslint非常棒。這將有助於糾正這些錯誤。

+0

非常感謝您指出那些錯別字。現在,我得到了它:)最後一件事是我怎樣才能得到所需的輸出現在?爲什麼它會在控制檯輸出兩次console.log(有兩個條目)?我需要這個「串化」,就像在最後的例子中一樣...... – sparks

+0

嘗試'JSON.stringify(listToSubmit)'得到一個字符串版本。 –