2012-04-08 110 views
5

我在董事會中挖掘的所有問題都沒有真正回答我的問題。所以我會問這裏的專家。首先,非常感謝您的閱讀。我非常感謝Stackoverflow的全部內容,希望我現在可以貢獻自己的成員。從jQuery每個循環創建JSON

我想動態地創建一個JSON對象基於從另一個JSON對象從每個jQuery每個循環設置的變量。我認爲我的語法和可能我對這個東西的知識有點偏離。

我想結束與以下JSON結構:

{ 
    desktop:{ 
    title:300, 
    rev:200 
    } 
} 

其中,「桌面」是從另一個JSON對象不是在這個循環的值,我可以調用沒有問題,實際上它是實際上是我在其他JSON對象上設置的名稱值。我正在遍歷一個名爲列的對象中的數組,但想要設置一個包含所有寬度的單獨對象,因爲這些列可以通過另一個框架調整和訪問,我將它們推送到該框架,我希望保留這些寬度。

我試圖從循環中做到這一點:

var colWidths = {}; 
$.each(columns, function(i) { 
    colWidths.desktop.title = columns[i].width; 
}); 

我可以提醒列[I] .WIDTH成功。我遇到的問題是創建和訪問這個。我似乎在做的一切似乎都是正確的,但事實並非如此。也許它是我或我的設置?你能告訴我如何正確編碼嗎?或者我可以創建一個Javascript對象,如果這是不可能的。提前致謝!

+0

你實際上是試圖創建JSON文本?它看起來像我剛剛創建一個JavaScript對象。 – 2012-04-08 15:06:16

回答

3

歡迎來到Stackoverflow。你沒有寫出任何錯誤信息,所以我假設如下。

// prepare the object correctly first 
var colWidths = { 
    desktop: { 
     title: 0 
    } 
}; 
// then ADDING each value with += instead of = 
// (because in your code you will just have the last value) 
$.each(columns, function(i) { 
    colWidths.desktop.title += columns[i].width; 
}); 

編輯

var grid = { 
    "name": "desktop", 
    "columns": [ 
     { 
     "id": "icons", 
     "width": 50}, 
    { 
     "id": "title", 
     "width": 200}, 
    { 
     "id": "name", 
     "width": 300}, 
    { 
     "id": "revision", 
     "width": 400} 
    ] 
}; 

var columns = grid.columns; 
var gridName = grid.name; 

var colWidths = {}; 

// CHANGE HERE 
colWidths[gridName] = {}; 

$.each(columns, function(c) { 

    var col = columns[c]; 
    var colname = col.id; 
    var colwidth = col.width; 

    // CHANGE HERE 
    var thisGrid = colWidths[gridName]; 
    if(!thisGrid[colname]) thisGrid[colname] = 0; 

    thisGrid[colname] += colwidth; 

}); 

//alert(colWidths.desktop.title);​ 
document.write(JSON.stringify(colWidths)); 

// RESULT: 
// {"desktop":{"icons":50,"title":200,"name":300,"revision":400}} 
+0

好吧,我仍然沒有得到正確設置。當你準備對象時,我需要讓「桌面」變成動態的,「標題」變成動態的。這個對象可能會不時有所不同。 – Paul 2012-04-08 19:11:44

+0

繼承人我的小提琴我可能仍然做錯了http://jsfiddle.net/LW7FJ/ – Paul 2012-04-08 19:26:19

+0

對不起,這裏更好的小提琴,我刪除了一些微不足道的信息。 http://jsfiddle.net/LW7FJ/6/,你可以看到這不是正確設置對象。我想返回它像警報(colWidths.desktop.title)等... – Paul 2012-04-08 20:26:33