json和javascript新手,帮助?

json和javascript新手,帮助?,javascript,json,Javascript,Json,我有一个json文件,其中包含这样的问题和答案 { "Questions": [ { "Q": "I enjoy playing video games" }, { "Q": "I enjoy reading" }, { "Q": "I enjoy watching tv" } ], "Answers": [ { "a": "Strongly Agree",

我有一个json文件,其中包含这样的问题和答案

{
    "Questions": [
        { "Q": "I enjoy playing video games" },
        { "Q": "I enjoy reading" },
        { "Q": "I enjoy watching tv" }
    ],

    "Answers": [
        {
            "a": "Strongly Agree",
            "b": "Agree",
            "c": "Neutral",
            "d": "Disagree",
            "e": "Strongly Disagree"
        }
    ]
}
每个问题的答案总是一样的。我试图用javascript做一个循环,以显示每个问题及其下面的答案,类似这样

1.I enjoy video games
RadioButton:Strongly agree   RadioButton:Agree  etc...

2. I enjoy reading
RadioButton:Strongly agree   RadioButton:Agree  etc...
现在我有这个,但它不起作用

$.getJSON("questions.json",function(data)
{
    $.each(data, function(i,data)
    {
        var div = document.createElement("div");
        div.setAttribute("id", i);
        document.createElement("div").setAttribute("id", i);

        var div_data = "<div class='questions'><h2>" + data.Questions.Q +"</h2><br />"+

        "<input type='radio' name='q" + i + "' id='q" + i + 1+"' value='"+data.Answers.a+"'/>" +
        "<label for='q" + i + 1+"'>" + data.Answers.a + "</label>"+

        "<input type='radio' name='q" + i + "' id='q" + i + 2+"' value='"+data.Answers.b+"'/>" +
        "<label for='q" + i + 2+"'>" + data.Answers.b + "</label>" +

        "<input type='radio' name='q" + i + "' id='q" + i + 3+"' value='"+data.Answers.c+"'/>" +
        "<label for='q" + i + 3+"'>" + data.Answers.c + "</label>" +

        "<input type='radio' name='q" + i + "' id='q" + i + 4+"' value='"+data.Answers.d+"'/>" +
        "<label for='q" + i + 4+"'>" + data.Answers.d + "</label>" +

        "<input type='radio' name='q" + i + "' id='q" + i + 5+"' value='"+data.Answers.e+"'/>" +
        "<label for='q" + i + 5+"'>" + data.Answers.e + "</label>"

        +"</div>" ;

        document.getElementById("box").appendChild(div);
        div.innerHTML = div_data;

    });
});
$.getJSON(“questions.json”),函数(数据)
{
$。每个(数据,函数(i,数据)
{
var div=document.createElement(“div”);
div.setAttribute(“id”,i);
document.createElement(“div”).setAttribute(“id”,i);
var div_data=”“+data.Questions.Q+“
”+ "" + “”+数据。答案。a+“”+ "" + “”+数据。答案。b+“”+ "" + “”+data.Answers.c+“”+ "" + “”+data.Answers.d+“”+ "" + “”+data.Answers.e+“” +"" ; 文件.getElementById(“框”).appendChild(div); div.innerHTML=div_数据; }); });
您必须循环查看
数据。问题
。请参阅下面的代码。我还优化了您的代码,以便立即追加HTML,而不是单独为每个元素追加

另一个注意事项:您应该将
i+1、1+2、1+3等部分更改为更合适的部分。目前,只是添加了它,因为它位于字符串上下文中。即使添加括号,逻辑仍然有缺陷:对于
i=1,i+2=3
。对于
i=2,i+1也等于3

我用
I+“\u 1”
替换了
I+1+”
,让您了解正确的方法

$.getJSON("questions.json",function(data)
{
    var html = "";
    $.each(data.Questions, function(i, question)
    {

        html += "<div id=" + i + ">" +
        "<div class='questions'><h2>" + question.Q +"</h2><br />"+

        "<input type='radio' name='q" + i + "' id='q" + i + "_1' value='"+data.Answers.a+"'/>" +
        "<label for='q" + (i + "_1'>" + data.Answers.a + "</label>"+

        "<input type='radio' name='q" + i + "' id='q" + i + "_2' value='"+data.Answers.b+"'/>" +
        "<label for='q" + i + "_2'>" + data.Answers.b + "</label>" +

        "<input type='radio' name='q" + i + "' id='q" + i + "_3' value='"+data.Answers.c+"'/>" +
        "<label for='q" + i + "_3'>" + data.Answers.c + "</label>" +

        "<input type='radio' name='q" + i + "' id='q" + i + "_4' value='"+data.Answers.d+"'/>" +
        "<label for='q" + i + "_4'>" + data.Answers.d + "</label>" +

        "<input type='radio' name='q" + i + "' id='q" + i + "_5' value='"+data.Answers.e+"'/>" +
        "<label for='q" + i + "_5'>" + data.Answers.e + "</label>"

        + "</div></div>" ;
    });
    $("#box").append(html);
});
$.getJSON(“questions.json”),函数(数据)
{
var html=“”;
$.each(数据、问题、函数(i、问题)
{
html+=“”+
“+question.Q+”
”+ "" + “”+数据。答案。a+“”+ "" + “”+数据。答案。b+“”+ "" + “”+data.Answers.c+“”+ "" + “”+data.Answers.d+“”+ "" + “”+data.Answers.e+“” + "" ; }); $(“#框”).append(html); });
您没有正确访问JSON<代码>数据.问题.Q
数据.答案.a
不正确

数据。问题和
数据。答案都是数组。您必须循环遍历这些数组,并像访问
数据一样访问它们。问题[i].Q


或者更改JSON以匹配您希望代码能够迭代它们的方式。您可以修复其中一个,但两者必须匹配。在我看来,您希望修复问题的代码和答案的JSON,但这是您可以做出的设计决策。

这听起来像是一个完美的用例。酷,我会检查它。但是现在,还有其他建议吗?使用Firefox的Firebug或Chrome开发者工具,在你的.each块中放置一个断点,看看i的值是多少。您还可以查看数据的价值,以确保它是您所期望的。我希望您需要循环查看数据。但是问题。为什么
Questions
不只是一个列表?例如:
[“我喜欢玩电子游戏”,“我喜欢阅读”,“我喜欢看电视”]
我更喜欢你的代码,但我得到的问题不是在线问题。请再次尝试,使用小写的
q
。另外,请看一下我对你的函数逻辑的评论,以及编辑后的代码,这提供了一个更好的方法。哦,不,这是我的错误,所有的答案看起来都很好,但是我的答案没有用单选按钮定义,除此之外,你复制了我的全部代码吗?您收到的错误表明未定义
数据.问题。所以,您的JSON可能看起来不像预期的那样。我将两者都使用,但我理解您的意思。我无法从数据中获取答案。问题