0

我有,我假设,是一个相对简单的外部但本地 JSON 文件,我想从中剥离数据并保存为变量以在 HTML 中使用。

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

对象的索引之间存在关系——希望当您阅读 JSON 时会清楚这一点。

并不是说它与这个问题特别相关,但出于背景考虑,有多个 JSON 文件,所有格式都相同,用户通过导航“过滤”。

页面和数据使用 JQuery 加载,尤其是 JQuery Mobile。

所以示例 JSON 如下...</p>

{"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"]
      }
    }
]}

多亏了你们,我现在知道如何将饮料的名称与特定的对象匹配……</p>

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 的变量。

您可能会说,我对这一切都很陌生,所以我非常感谢您的耐心。

在此先感谢,马特

4

2 回答 2

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;
  }
}

希望它可以帮助你。

于 2012-11-19T20:19:55.830 回答
0

我知道您只发布了代码的快照,但您必须先访问该列表才能处理它...

var ingredients = data.glass[i].ingredients;
var output="<ul>";
for (var i in ingredients.liquids)
....
于 2012-11-19T20:24:18.083 回答