0

定義リストを作成するために、機能する json-object 構造を作成しようとしています。私がここでやろうとしていることを見てください: jsfiddle

var x =
[{
    "dl":
    {
        "dt":"head 1"
        {
            "dd":
            [
                "listitem 1",
                "listitem 1",
                "listitem 1",
                "listitem 1",
                "listitem 1"
            ]
        },
       "dt":"head 2"
        {
            "dd":
            [
                "listitem 2",
                "listitem 2"
            ]
        }
    }      
}]
;

この JS のスニペットを実行して、JSON オブジェクトからマークアップを作成しようとします。

$.each(x["dl"], function(i,v){
    console.log(this.dt, this.dd);
});

変数 x を使用して、次のマークアップを作成しようとしています。

<dl>
    <dt>head 1</dt>
    <dd>listitem 1</dd>
    <dd>listitem 1</dd>
    <dd>listitem 1</dd>
    <dd>listitem 1</dd>
    <dd>listitem 1</dd>

    <dt>head 2</dt>
    <dd>listitem 2</dd>
    <dd>listitem 2</dd>   
</dl>

<dl>
    <dt>head 1</dt>
    <dd>listitem 1</dd>
    <dd>listitem 1</dd>
    <dd>listitem 1</dd>
    <dd>listitem 1</dd>
    <dd>listitem 1</dd>

    <dt>head 2</dt>
    <dd>listitem 2</dd>
    <dd>listitem 2</dd>   
</dl>

マークアップは私が作成する必要があるものです。JSON 構造で何が間違っていますか?

4

1 に答える 1

3

まず、これはJSONではありません。これは単なるJavaScriptオブジェクトです。JSONは、JavaScriptオブジェクトの文字列表現です。

第二に、あなたのオブジェクトは正しくありません。複数のプロパティを持つことはできませんdt。その配列を作成することをお勧めします。 "dt":"head 1" {は無効です。また、x(オブジェクトの)配列ではなく、オブジェクトである必要があります。

次のようにオブジェクトを作成することをお勧めします。

var x = {
    "dl": [{
        "dt": "head 1",
        "dd": ["listitem 1", "listitem 1", "listitem 1", "listitem 1", "listitem 1"]
    }, {
        "dt": "head 2",
        "dd": ["listitem 2", "listitem 2"]
    }]
};

xdlプロパティ を含むオブジェクトです。x.dlオブジェクトを含む配列です。これらのオブジェクトにはdtddプロパティが含まれています。

これで、スニペットが正しく機能します。

$.each(x["dl"], function(i,v){ // you can also use "x.dl"
    console.log(this.dt, this.dd);
});

このオブジェクトから、必要なHTMLを簡単に作成できます。

于 2012-04-19T20:08:19.130 に答える