5

私がボードで掘り下げたすべての質問は、私が持っている質問に実際に答えているわけではありません. そこで、ここで専門家に質問します。初めまして、長文お読みいただき誠にありがとうございました。Stackoverflow のすべてに本当に感謝しています。メンバーになった今、貢献できることを願っています。

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

最終的に次の JSON 構造にしたいと思います。

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

"desktop" は、このループに含まれていない別の JSON オブジェクトからの値ですが、問題はないと言えます。実際、これは別の JSON オブジェクトに設定した名前の値です。列と呼ばれるオブジェクトの配列をループしていますが、列は調整可能で、プッシュ先の別のフレームからアクセスできるため、すべての幅を含む別のオブジェクトを設定したいのですが、それらの幅を保持したいです。

私はループ内からこれをやろうとしていました:

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

columns[i].width を正常にアラートできます。私が抱えている問題は、これを作成してアクセスすることです。私がしているように見えることはすべて正しいように見えますが、そうではありません。多分それは私か私のセットアップですか?これを適切にコーディングする方法を教えてください。または、これが不可能な場合は、Javascript オブジェクトを作成できます。前もって感謝します!

4

1 に答える 1

3

WordPress へようこそ。表示されたエラー メッセージを何も書いていないので、次のように推測します。

// 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}}
于 2012-04-08T15:05:38.293 に答える