如何根据eventlistener动态更改JavaScript文件的索引

时间:2014-08-08 11:15:16

标签: javascript jquery html arrays json

我使用以下代码来获取json文件的答案和问题:

$(document).ready(function () {
    $.getJSON("data.json", function (json) {
        var anserFor1st = json.questions[0].answers;
        var anserFor2nd = json.questions[1].answers; //If it's more than two use a loop
        document.getElementById("content").innerHTML = JSON.stringify(anserFor1st) + "<br/>" + JSON.stringify(anserFor2nd);
        var aString = "";
        Object.keys(anserFor1st).forEach(function (k) {
            aString += anserFor1st[k] + "<br/>";
        });
        Object.keys(anserFor2nd).forEach(function (k) {
            aString += anserFor2nd[k] + "<br/>";
        });
        document.getElementById("content").innerHTML = aString;
    });
});

相反,我想动态更改答案和问题的索引,又写下以下内容:

var anser = json.questions[i].answers;

我必须根据事件监听器将索引更改为单击html文件中的下一个和前进按钮。

如何动态更改索引?

1 个答案:

答案 0 :(得分:0)

我认为你的意思是你想要这个:

$(document).ready(function () {
    $.getJSON("data.json", function (json) {
        var answers = [];
        var aString = "";
        for (var i = 0; i < json.questions.length; i++)
        {
            answers[i] = json.questions[i].answers;
            document.getElementById("content").innerHTML += JSON.stringify(answers[i]) + "<br/>";
            for (var j = 0; j < answers[i].length; j++)
            {
                aString += answers[i][j] + "<br/>";
            }
        }
        document.getElementById("content").innerHTML = aString;
    });
});

这段代码完全与你的代码完全相同,但有一些东西没有任何意义(例如首先将json.questions[i].answers加载到内容元素中,然后稍后用内容替换它几行of aString。)你也可以在将JSON放入DOM之前对其进行字符串化,但是我希望你做相反的事情(解析它,因为你已经把它作为JSON检索出来了,所以应该再次对其进行字符串化)做任何事情。)

基本上,我不完全确定你的问题是什么意思,所以如果我误解了请澄清你的问题。

编辑:如果您的问题只是记住您正在使用哪个问题,请创建一个变量来保存当前问题的编号(例如var currentQuestion = 1;),然后根据点击的按钮进行更改。

例如:

$("#buttonPrevious").on("click", function (e)
{
    currentQuestion--;
});
$("#buttonNext").on("click", function (e)
{
    currentQuestion++;
});

当然,您可以检查最小/最大问题编号(例如,您的最大问题数可以等于上面循环中i的最后一个值)。