我使用以下代码来获取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文件中的下一个和前进按钮。
如何动态更改索引?
答案 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
的最后一个值)。