2012-07-09 87 views
2

我想動態地創建一個JSON數組。在該網站中,有一個動態編號爲<的div id =「#selected」>,我需要獲取所有值並創建一個JSON數組。動態創建JSON數組與.each()

我遇到了.push()的功能,但我一直無法弄清楚。的

<!-- there could be a million of these, or only one... each value is unique though --> 
<div id="selected" value="5|3"></div> 
<div id="selected" value="3|65"></div> 


function json_array_selected() { 

var JSon = {}; 
$('div#selected').each(function() { 
     // let's first split the given values 
     var Split = $(this).attr('value'); 
     Split = Split.split('|'); 
     var Type = Split[0]; 
     Value = Split[1]; 

     // now let's set up our Json array... using the value = type way, there should never be 
     // any repeating 
     JSon.Value = Type; 

}); 
return JSon; 
} 
+2

ID應該是唯一的,以便'$( 'DIV#選擇' )'只會給你一個元素 – Musa 2012-07-09 22:33:44

+0

,即使我用.each()做循環? – 2012-07-09 22:39:14

+0

其實它工作http://jsfiddle.net/Ldm7U/,但ID應仍然是唯一的 – Musa 2012-07-09 22:43:49

回答

6

代替

JSon.Value = Type; 

嘗試

JSon[Value] = Type; 

,或者你總是會覆蓋已命名的 「值」

0

首先的關鍵,你不能有兩個節點具有相同ID的HTML。你將不得不爲這些div標籤分配一些類。例如 -

&lt;div class="selected" value="5|3">&lt;/div> 
&lt;div class="selected" value="3|65">&lt;/div> 

我試圖上jsfiddle.net下面的代碼段

function json_array_selected() { 
    var JSon = {}; 
    $('div.selected').each(function() { 
    // let's first split the given values 
    var Split = $(this).attr('value'); 
    Split = Split.split('|'); 
    var Type = Split[0]; 
    Value = Split[1]; 
    JSon[Value] = Type; 
    }); 
    return JSon; 
} 
var res = json_array_selected(); 
alert(JSON.stringify(res)); 
alert(res["3"]); 

所得JSON陣列是

{"3":"5","65":"3"} 
+0

如果您有多個相同的Value對象並且不希望它們被覆蓋,您將如何編寫代碼?例如,如果你有「3 | 65」和「3 | 75」,你會覆蓋前者。 – 2017-12-29 19:30:21