javascript - 如何循环播放单选问题后退按钮 Javascript

标签 javascript arrays loops

我正在尝试使用“后退”和“下一步”按钮遍历一组对象。由于某种原因,它不能正确循环。当按下“下一步”按钮时,“后退”按钮应减少按下下一个按钮的次数。

这是访问后退按钮以返回单选问题集的功能。要查看完整代码,请访问我的 JS Fiddle .谢谢!

     var questions = {

    allQuestions: [


        {
            topQuestion: [" 1a) Click on which music producer, produced Justins Timberlake 4th Album?", "2a)Click on which famous celebrity did Justin Timberlake date in 1999? ", "3a)Click on which social media movie did Justin Timberlake starred in?", "4a)Click on what famous disney kids show did first Justin Timberlake made his first appearance?", "5a)Click on which famous singer did Justin Timberlake accidently tear clothes off during a performance?", "6a)What magazine named Justin Timberlake the Most Stylish Man In America?"],
            question: "1a)What popular site did Justin Timberlake invest 2.2 Million Dollars in? ",
            choices: ["Linkedin", "Facebook", "Myspace", "Youtube"],

        }, {
            question: "2b)Select which movie did Justin Timberlake film score in 2008?",
            choices: ["The Incredibles", "Shark Tank", "Finding Memo", "Star Wars"],
            correctAnswer: 1
        }, {

            question: "3b)What city was Justin Timberlake born in?",
            choices: ["Chicago", "Detroit", "Tenessee", "New York"],
            correctAnswer: 2
        }, {


]
};

      var newQues = Object.create(questions);

         var k = 0;
         var chngeRadio = 0;


         for (var i = 0; i < 4; i++) {


    container = document.getElementById("container");
    list = document.getElementById("list");
    var li = document.createElement("input");
    li.type = 'radio';
    li.name = 'radio_group';
    li.id = 'id1';
    li.value = newQues.allQuestions[i].correctAnswer;
    list.style.textAlign = "center";

    document.body.appendChild(li);
    div = document.createElement("div");
    text = document.createTextNode(newQues.allQuestions[0].choices[i]);
    list.appendChild(div);
    div.appendChild(li);
    div.appendChild(text);

}


     btn1.onclick = function (event) {
        event = EventUtil.getEvent(event);


        k++;

        while (list.firstChild) {
            list.removeChild(list.firstChild);
        };

         for (var m = 0; m < 4; m++) {


            container = document.getElementById("container");
            list = document.getElementById("list");
            var li = document.createElement("input");
            li.type = 'radio';
            li.name = 'radio_group';
            li.id = 'id1';
            li.value = newQues.allQuestions[m].correctAnswer;
            list.style.textAlign = "center";
            div = document.createElement("div");
            text = document.createTextNode(newQues.allQuestions[k].choices[m])
            //alert(k);
            list.appendChild(div);
            div.appendChild(li);
            div.appendChild(text);

        };



          // Assigns a event object to back button, this is where I would like
          // to go back and loop the radio questions but for some reason it only decrements 1 time
    if ( k >= 1) {

        btn2.onclick = function(event){
            event = EventUtil.getEvent(event);

            chngeRadio++;




              function replaceNode() {

             function replaceNode() {

             if (k === 1) {
                 //assigns count to 0
                 chngeRadio -= 1;

             };


             if (k === 2) {
                 //assigns count to 1
                 chngeRadio = 2;
                 chngeRadio -= 1;
             };


         };


         replaceNode()

             while (list.firstChild) {
                list.removeChild(list.firstChild);
            };



            for (var d = 0; d < 4; d++) {


                container = document.getElementById("container");
                list = document.getElementById("list");
                var li2 = document.createElement("input");
                li2.type = 'radio';
                li2.name = 'radio_group';
                li2.id = 'id2';
                li2.value = newQues.allQuestions[d].correctAnswer;
                li2.style.textAlign = "center";
                div2 = document.createElement("div");
                text2 = document.createTextNode(newQues.allQuestions[chngeRadio].choices[d])
                //alert(k);
                list.appendChild(div2);
                div2.appendChild(li2);
                div2.appendChild(text2);

            };

        };

    };


    };

最佳答案

我建议不要使用 chngeRadioreplaceNode() 函数,将其替换为 k--。此外,将 if 条件通过 Back btn.click 更改为 k>1

if ( k > 1) {
    btn2.onclick = function (event) {
        event = EventUtil.getEvent(event);
        k--;

        while (list.firstChild) {
            list.removeChild(list.firstChild);
        };

        for (var d = 0; d < 4; d++) {
            container = document.getElementById("container");
            list = document.getElementById("list");

...

        text2 = document.createTextNode(newQues.allQuestions[k].choices[d]);
        //alert(k);
        list.appendChild(div2);
        div2.appendChild(li2);
        div2.appendChild(text2);
    };
};

关于javascript - 如何循环播放单选问题后退按钮 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16549185/

相关文章:

Jquery Loop 附加图像元素仅附加一次

javascript - Memoize 函数传递函数并返回函数 JavaScript

c - printf 命令导致段错误?

php - 字符串到数组返回参数中的数组

c - 在 C 中查找 N 个整数中最大整数的数量

c++ - vector 循环未到达所有元素

javascript - 如何在 for 循环中对具有精确索引的元素重复迭代?

javascript - 如何捕获零滚动?

javascript - 无法在函数中访问jquery。 "Variable Scope"问题?

JavaScript继承、接口(interface)