0

ここに問題があります。描画領域にdivを作成して配置できるjqueryプログラムを構築しています。div、その場所、CSSプロパティ、その他の詳細を追跡する必要があります。したがって、各divのこれらすべてのアイテムの配列を含むオブジェクトを作成しています。

これは、オブジェクトを作成するためのコードフラグメントです。

var divData= {items: [
{ID: "21", Block: "Block_01", posX : "450", posY : "540" },
{ID: "43", Block: "Block_02", posX : "250", posY : "440" },
{ID: "46", Block: "Block_03", posX : "50", posY : "54" },
{ID: "54", Block: "Block_04", posX : "140", posY : "210" },
{ID: "55", Block: "Block_05", posX : "900", posY : "820" },
{ID: "79", Block: "Block_06", posX : "380", posY : "520" }
]};

そして、これは私が配列の内容を表示するために書いたコードです。

alert ('array length is : ' + divData.items.length);

このステートメントは正しい値6を返します。また、このステートメントを使用してデータを配列にプッシュできます。アラートステートメントは7と表示されます。

divData.items.push({ID: "266", Block: "Block_01", posX : "450", posY : "540" });

問題は、次のコードで配列の内容を表示しようとしても、何も起こらないことです。

for (var i=0;i<divData.items.length;i++)
{
document.write(divData.items[i] + "<br>");
}       

画面に出力されるのはこの[オブジェクトオブジェクト]です。

私は何が間違っているのですか?

どんな助けでも大歓迎です。

ありがとう

クリス

4

1 に答える 1

2

配列内の「アイテム」はオブジェクトです。画面にオブジェクトを直接出力することはできません。アクセスしようとしているオブジェクトのプロパティを指定する必要があります。

for (var i = 0;i < divData.items.length; i++)
{
  document.write(divData.items[i].ID + "<br/>"); // access the OBJECT's property!
}   

あなたは次のようなことをしたいかもしれません:

for (var i = 0;i < divData.items.length; i++)
{
  $("#container").append("<div class='positionedDiv' id='" + divData.items[i].ID + "' style='top: " + divData.items[i].posY + "px;left:" + divData.items[i].posX + "px;></div>");
}   

一部のCSS:

.positionedDiv {
  position: absolute; 
}
于 2012-12-24T21:38:57.370 に答える