2012-11-19 130 views
0

我有,我想,是一个相对简单的外部但本地的JSON文件,我想从中删除数据和保存为HTML中使用的变量。从JSON对象数组和字符串创建列表

将会有字符串以及数字,我希望创建列表的字符串以及我希望用作各种CSS值的数字。

这些对象的索引之间存在关系 - 希望在阅读JSON时可以清楚这一点。

不是说它与这个问题特别相关,但是为了背景的缘故,有多个JSON文件,所有格式都是相同的,以便用户通过导航过滤。

页面和数据使用JQuery加载,特别是JQuery Mobile。

所以例如JSON是如下...

{"glass" :[ 
    {"name" : "Gin and tonic", 
     "ingredients" : { 
     "liquids" : ["Gin", "Tonic"], 
     "amounts" : [60, 40], 
     "colours" : ["f5f5f5", "666666"] 
     } 
    }, 
    {"name" : "Tom Collins", 
     "ingredients" : { 
     "liquids" : ["Gin", "Soda"], 
     "amounts" : [60, 80], 
     "colours" : ["f5f5f5", "373737"] 
     } 
    } 
]} 

所以感谢你们我现在知道如何喝对特定对象的名称相匹配...

function viewRecipe (recipeNamePassed) { 
recipe = (recipeNamePassed); 

//Get the JSON list and search through it for a match to the recipe name 
$.getJSON(url, function(data) { 
cache:false; 
    for (var i=0;i<data.glass.length;i++){ 
    if (data.glass[i].name == recipe){ 
    // do stuff 

...但我还是似乎无法创建剩余对象的列表。

换句话说,一个“液体”和另一个“量”的列表。

我有东西要去上这样的,但它不给我,我需要

var output="<ul>"; 
for (var i in ingredients.liquids) { 
    output+="<li>" + ingredients.liquids[i] + "</li>"; 
} 
output+="</ul>"; 

document.getElementById("ingredientsList").innerHTML=output; 

我想是所有的成分被写到“ingredientsList”的结果,和'金额'和'颜色'被保存为变量,我可以用来改变CSS。你可能会说,我对这一切都很陌生,所以我非常感谢你的耐心。

由于提前, 马特

回答

0

你可能会丢失整个路径itens。

像这样的东西应该做的伎俩。

var output="<ul>"; 
for (var i in data.glass[i].ingredients.liquids) { 
    output+="<li>" + data.glass[i].ingredients.liquids[i] + "</li>"; 
} 
output+="</ul>"; 

document.getElementById("ingredientsList").innerHTML=output; 

,或者你可以将数据复制到一个变量,使其更容易像

for (var i=0;i<data.glass.length;i++){ 
    var glass = data.glass[i] 
    if (glass.name == recipe){ 

    var output="<ul>"; 
    for (var i in glass.ingredients.liquids) { 
     output+="<li>" + glass.ingredients.liquids[i] + "</li>"; 
    } 
    output+="</ul>"; 

    document.getElementById("ingredientsList").innerHTML=output; 
    } 
} 

希望它可以帮助你。

+0

两个辉煌 - 我不能感谢你才好@André-路易斯 - 昆泰诺 –

0

我知道你已经发布只有代码的快照,但你必须先访问列表处理之前...

var ingredients = data.glass[i].ingredients; 
var output="<ul>"; 
for (var i in ingredients.liquids) 
.... 
相关问题