访问json将变量名称作为字符串传递

时间:2015-04-17 15:34:26

标签: javascript json

我在页面中包含了一些json文件,如下所示:

<script type="text/javascript" language="javascript" src="json/divaniModerni.json"></script>
<script type="text/javascript" language="javascript" src="json/divaniClassici.json"></script>

所有这些都具有相同的结构,包含不同的元素:

var divaniModerni = {
"modelli": [
    {
        "nome": "California",
        "num": "5", 
    },
    {
        "nome": "Terra",
        "num": "6", 
    },
    {
        "nome": "Laura",
        "num": "7", 
    },
    {
        "nome": "Nonstop",
        "num": "11",    
    },
    {
        "nome": "Venere",
        "num": "8", 
    },
    {
        "nome": "Comfort",
        "num": "5", 
    },
    {
        "nome": "Infinity",
        "num": "8", 
    },
]

}

我现在能够像这样解析文件:

$(divaniModerni.modelli).each(function(index, element){ (...) }

但是可以通过动态更改文件来解析将名称传递给函数,就像这样吗?

function show(category)
{
    $(category.modelli).each(function(index, element){ (...) }
}

show(divaniModerni);

我试过了:

$(window[category].modelli).each(function(index, element){ (...) }

但它不起作用......

修改

在每个I&#39; m中根据所选的json元素在桌面上创建一行:

$(divaniModerni.modelli).each(function(index, element){
            if (i == 1)
                riga += "<tr>";
            riga += "<td><figure><a class='anteprime' rel='prettyPhoto[gallery" + i + "]' href='images/divani/" + element.nome + ".jpg'><img src='images/anteprima/divani/" + element.nome + ".jpg' alt='" + element.nome + "'></a><div class='descrizione'>" + element.nome;
            if (element.num > 0)
            {
                for (j = 2; j <= element.num; j++) 
                {
                    riga += "<a style='display:none;' class='anteprime' rel='prettyPhoto[gallery" + i + "]' href='images/divani/" + element.nome + j +  ".jpg'><img src='images/anteprima/divani/" + element.nome + j + ".jpg' alt='" + element.nome + "'></a>";
                }
            }
            riga += "</div></figure></td>"; 
            if (i == categoria.modelli.length)
            {
                riga += "</tr>";
                $('#mostra').append(riga);
            }
            else if (i % 4 == 0)
            {
                riga += "</tr>";
                $('#mostra').append(riga);  
                riga = "<tr>";  
            }   
            i++
        })

1 个答案:

答案 0 :(得分:1)

直接将对象引用传递给每个语句,只对其进行迭代。

http://jsfiddle.net/b3zdahc0/

var divaniModerni = {
"modelli": [
    {
        "nome": "California",
        "num": "5", 
    },
    {
        "nome": "Terra",
        "num": "6", 
    },
    {
        "nome": "Laura",
        "num": "7", 
    },
    {
        "nome": "Nonstop",
        "num": "11",    
    },
    {
        "nome": "Venere",
        "num": "8", 
    },
    {
        "nome": "Comfort",
        "num": "5", 
    },
    {
        "nome": "Infinity",
        "num": "8", 
    }
    ]
};

function show(category)
{
    $.each(category.modelli, function(index, element) {
               alert(index)
    });

}

$("button").on("click", function(e) { 
    show(divaniModerni);
});