簡體   English   中英

為什么 Vanilla JS 不運行我的 if 語句?

[英]Why is Vanilla JS not running my if statement?

所以我正在制作一個互換游戲。

我希望玩家輸入一個答案,我的 if 語句將根據我設置的數組檢查該答案是否正確。 它會隨機化,所以我將使用隨機化的變量來做這樣的事情:

function getRandomImage(){
    var num = Math.floor(Math.random() * 10);
    var img = imageArray[num];
    document.getElementById("question-image").innerHTML = ('<img src="' + img + '"width=450px; height=550px; margin-left: auto; margin-right: auto;">');
    console.log("random image!");
    console.log(answers[num]);
    const textarea = document.getElementById("answer-textarea").value;

    if (document.getElementById("answer-textarea").value == answers[num].toString() && skipCounter > 3){
        console.log(answers[num]);
        score++;
        document.getElementById("score-txt").innerHTML = ("<b>Score: </b>" + "<b>" + score + "</b>");
    }

    else if (document.getElementById("answer-textarea").value != answers[num].toString() && skipCounter > 3){
        console.log(answers[num]);
        score--;
        document.getElementById("score-txt").innerHTML = ("<b>Score: </b>" + "<b>" + score + "</b>");
    }
}

HTML:

<textarea class="answer-textarea" id="answer-textarea"></textarea>

當我運行它並根據我的數組輸入正確的答案時,它什么也不做。 1

大批:

answers = new Array();
answers[0] = "Turbine Interchange";
answers[1] = "Complex Roundabout";
answers[2] = "Cloverleaf Interchange";
answers[3] = "High Five";
answers[4] = "Mixing Bowl Interchange";
answers[5] = "Light Horse Interchange";
answers[6] = "T Interchange";
answers[7] = "Trumpet Interchange";
answers[8] = "Vaanplein Junction";
answers[9] = "Ya'an East Road Interchange";

我的代碼有問題嗎?

編輯 1:我現在更新了我的代碼,我正在檢查我的 texrarea 值、答案、跳過計數器和當前分數。

console.log(textarea + "\n" + answers[num] + "\n" + skipCounter + "\n" + score);

編輯 2:是的 if 函數甚至不起作用。 我在 ifs 的底部添加了一條新語句:

else {
    console.log("Did nothing!")
}

這一切都只是說“什么也沒做”。

問題是您實際上並沒有將答案添加到數組中。

您需要使用數組push方法。

answers = new Array();
answers.push("Turbine Interchange");
answers.push("Complex Roundabout");
answers.push("Cloverleaf Interchange");
// etc

一旦您進行了更改,它將按預期工作。

我推薦的另一種方法是在創建數組時對其進行初始化。

var answers = [
  “Answer one”,
  “Answer two”,
  “Answer three”,
  // etc
];

我已經修復了程序。

供將來參考和其他人參考,這就是我的做法。

  1. 我將num var 設為全局

    變量編號;

    getRandImg(){//bla bla bla}

  2. 分開 get randImg() 和 checkAns()

  3. 做了一個Boolean來檢查是否是第一次laoding,所以我沒有像@Barmar所說的那樣檢查下一個答案。

在用戶已經回答之后,您似乎正在隨機化問題。 這是它應該做的嗎? – 巴爾馬爾

感謝您對 stackoverflow 人員的所有幫助,我還為該項目制作了一個 repo。 如果你想看完整的代碼。 https://github.com/elfryt/whats-the-interchange

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM