2012-04-08 7 views
5

ボードで掘り下げたすべての質問は、私が持っている質問に本当に答えるものではありません。だからここで専門家に尋ねる。まず、読んでいただきありがとうございます。私は本当にStackoverflowがすべてについて約束しています、うまくいけば、私は今メンバーになっています。jQueryの各ループからJSONを作成

jQueryの各ループから別のJSONオブジェクトから設定された変数に基づいてJSONオブジェクトを動的に作成したいとします。私は私の構文と、おそらく私のこの知識についての知識は少し残っていると思う。

私は次のようなJSON構造で終わるしたいと思います:

「デスクトップ」は、別のJSONオブジェクトから値がこのループでは、私は何の問題は、実際にはそれがないことを呼び出すことができない
{ 
    desktop:{ 
    title:300, 
    rev:200 
    } 
} 

実際には他のJSONオブジェクトで設定した名前の値です。私は列と呼ばれるオブジェクトの配列をループしていますが、列が調整可能で、他のフレームを介してアクセスできるので、すべての幅を含む別々のオブジェクトを設定したいと思います。

私は、ループ内からこれを実行しようとしていた。

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

私は成功した列[i]は.widthに警告することができます。私が持っている問題は、これを作成してアクセスすることです。私がやっているようなことはすべて正しいようですが、これは当てはまりません。おそらくその私または私のセットアップ?これを正しくコーディングする方法を教えてください。または、これが不可能な場合はJavascriptオブジェクトを作成することができます。前もって感謝します!

+0

あなたが実際にJSONテキストを作成しようとしていますか? JavaScriptオブジェクトを作成しているように見えます。 –

答えて

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; 
}); 

EDIT

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

+0

Heres私のフィドル私はまだそれが間違っているかもしれない – Paul

+0

申し訳ありませんフィドルより良いここでは、私はいくつかの重要な情報を削除しました。 http://jsfiddle.net/LW7FJ/6/これはオブジェクトを正しく設定していないことがわかります。私は警告(colWidths.desktop.title)などのように返信したいと思います。 – Paul

関連する問題