【问题标题】:How to change dynamically the index of JavaScript file according to eventlistener如何根据事件监听器动态改变 JavaScript 文件的索引
【发布时间】:2014-08-08 20:02:58
【问题描述】:

我正在使用以下代码获取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 文件中的下一步和前进按钮。

如何动态更改索引?

【问题讨论】:

    标签: javascript jquery html arrays json


    【解决方案1】:

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

    $(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加载到内容元素中,然后在几行之后用@的内容替换它987654324@。)您还可以在将 JSON 放入 DOM 之前对其进行字符串化,但我希望您会做相反的事情(解析它,因为您已经将它作为 JSON 检索,所以再次对其进行字符串化不应该做任何事情) .

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

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

    例如:

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

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

    【讨论】:

    • 我必须把按钮的脚本放在哪里?
    • @Sara 任何你想要的地方,只要在你的脚本执行时按钮已经被加载到 DOM 中。我将制作一个 JSFiddle 来演示。你能发布一个示例 JSON 字符串吗?
    • @Sara 抱歉花了一段时间,首先我犯了一个愚蠢的错误,我必须追查(错误地编写了我的手动 JSON),然后整个互联网连接中断。但这是有效的 JSFiddle:jsfiddle.net/WBison/g5ms6nve/4
    • 该示例与我的要求不符。问题的内容应该改变。例如,首先显示 question1。只有在我按下 Next question 2 后才会显示。
    • 这里是 json 的示例: { "questions": [ { "question#1": "How much is 3+1", "正确答案": 1, "answers": { "ans #1": "5", "ans#2": "4", "ans#3": "3" } }, { "question#5": "2+4 是多少", "正确答案" :0,“答案”:{“ans#1”:“6”,“ans#2”:“4”,“ans#3”:“7”,“ans#4”:“5”}}] }
    猜你喜欢
    • 1970-01-01
    • 2015-12-19
    • 1970-01-01
    • 2012-09-13
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 2021-12-27
    • 2022-08-20
    相关资源
    最近更新 更多