【问题标题】:Values from Array Only Change Upon First Run of a Function数组中的值仅在函数第一次运行时改变
【发布时间】:2022-10-18 08:05:23
【问题描述】:

我是一个在琐事应用程序上工作的初学者,我有一段时间让问题正确迭代。我已经尝试了多种不同的方式。这是我目前的配置。

这些问题由pullQuestions() 函数迭代。此函数从名为question 的数组中提取。

当单击startbutton 和单击submitA 按钮时,将运行pullQuestions() 函数。这些按钮分别运行startGame()submitA()

请注意,我还没有实现分数跟踪,所以提交按钮的期望目前仅限于拉下一个问题。

问题 HTML

        <div id="gameArea" class="questionbox" style="display: none;">
        
            <div class="questionarea">
            
                <h2 id="headerQ">Question Number</h2>
                <p id="content">Question Text</p>
            
            </div>
            
            <div class="answerarea">
                <!-- This can be ignored. This is where my options are but I'm not using them in my code yet -->
        
            </div>
            
            <button id="submitA" class="submitA" onClick="submitA()">Submit</button>
                        
        </div>

开始游戏() JavaScript(这按预期工作)

function startGame(){
    
    document.getElementById("startArea").style.display = "none";
    document.getElementById("gameArea").style.display = "block";

    question.id = 0;

    pullQuestions();

    console.log("startgame() Executed", question.id);
    console.log(question[0], question[1]);
}

问题数组*(设置为全局变量)

function select1() {
    
        if (op1.className == "selectionFalse") {
        document.getElementById("op1").className = "selectionTrue";
        document.getElementById("op2").className = "selectionFalse";
        document.getElementById("op3").className = "selectionFalse";
        document.getElementById("op4").className = "selectionFalse";
    
        console.log("selected1()", "If Condition", op1.className);
        }
    
        else {
        document.getElementById("op1").className = "selectionFalse";
        }   
    }

提交A() JavaScript(不遍历数组但确实增加了id 属性)

function submitA() {
    question.id++;
    console.log("submitA() Run)", "Question ID: ", question.id, headerQ, content);
}

*拉问题() JavaScript(这是在运行上述两个函数时运行的,但我只在它作为startGame() 函数的一部分运行时才能看到结果。

function pullQuestions() {

if (question.id == 0) {
    document.getElementById("headerQ").innerHTML = question[0].headerQ;
    document.getElementById("content").innerHTML = question[0].content;

    console.log("pullQuestions() Executed");
    console.log("Variables: ", "headerQ = ", headerQ, "content = ", content); 
    }


if (question.id == 1) {
    document.getElementById("headerQ").innerHTML = question[1].headerQ;
    document.getElementById("content").innerHTML = question[1].content;

    console.log("pullQuestions() Executed");
    console.log("Variables: ", "headerQ = ", headerQ, "content = ", content);
    }

if (question.id == 2) {
    document.getElementById("headerQ").innerHTML = question[2].headerQ;
    document.getElementById("content").innerHTML = question[2].content;
    
    console.log("pullQuestions() Executed");
    console.log("Variables: ", "headerQ = ", headerQ, "content = ", content);
        }

}

我觉得我错过了一些小东西,但由于我是新手,我可能在处理这一切时都错了。任何建议或方向表示赞赏。

【问题讨论】:

    标签: javascript


    【解决方案1】:

    submitA 按钮对您不起作用,因为您忘记激活对其中的调用 pullQuestions

    另一方面,在startGame 中,您在更改id 后确实激活了pullQuestions,所以它适用于您

    这就是函数的样子

    function submitA() {
        question.id++;
        pullQuestions();
        console.log("submitA() Run)", "Question ID: ", question.id, headerQ, content);
    }
    

    【讨论】:

    • 谢谢!我想我的印象是question.id++ 会迭代值并且一切都会自动发生。数字很​​简单。考虑到这可能是一个非常明显的错误,我感谢您的回复和您的交付。再次感谢!
    【解决方案2】:

    我能够让它工作。我添加了一个变量来确定选择是否为“真”。我还添加了一个按钮来移动到下一个问题,以便提交按钮/功能是分开的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-22
      • 2020-09-11
      • 1970-01-01
      • 2014-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多