0

好的,所以我认为我的代码的问题与我正在激活代码的实际 html 页面有关,但我不能确定。我想做的是通过数组提出两个问题。我希望第二个问题显示“gerp”而不是正确的,并且如果您错了,它会通知您是否在问题二上错了。

这就是我在页面上用来开始“谜语”的内容:

  <button onclick="myFunction()">Click Me</button>

  <p id="demo"></p>

这是我在 js 文件中使用的与 html 文件分开的代码(对不起,如果我听起来很傻,我只是想具体一点):

 var i = 0;

var myArray = [{
q: "What was her favorite Color?",
a: "purple" }, {
q: "gymhoaccetpptfe",
a: "rev six nine eleven"}];

   function myFunction() {
   var x;
   var name = prompt(myArray[i].q);
  if (name == myArray[i].a) {
    x = document.getElementById("demo").innerHTML + " " + "Correct!" + " " + "Listen!" 
    + " " +
    "http://www.npr.org/2010/02/12/123534818/carl-sagan-and-ann-druyans-ultimate-mix-tape" 
    ;
    i= i + 1 ;
    document.getElementById("demo").innerHTML = x;
} else if ((name == myArray[i + 1].a)) {
    x = document.getElementById("demo").innerHTML + " " + "gerp!";
    document.getElementById("demo").innerHTML = x;
} else {
    x = document.getElementById("demo").innerHTML + name + " " + "is" + " " + "wrong!";
    document.getElementById("demo").innerHTML = x;
}
}

我只想在正确回答第二个问题时显示“ Gerp”。

4

2 回答 2

2

这是因为在第一个 if 中,你做i=i+1,但在第二个 if 中,对于 gerp,你正在检查 i + 1,这将是 2,第三个元素。除非您需要它是动态的,否则只需使用相应的索引:

...  else if(name == myArray[1].a) { ...
于 2012-12-22T02:55:30.053 回答
0

真的应该考虑修复你的格式并清理你的代码。它看起来会更好,并且更容易发现错误:

var questions = [{
    question: 'What was her favorite Color?',
    answer: 'purple',
    message: 'Correct! Listen: http://www.npr.org/2010/02/12/123534818/carl-sagan-and-ann-druyans-ultimate-mix-tape'
}, {
    question: 'gymhoaccetpptfe',
    answer: 'rev six nine eleven',
    message: 'gerp!'
}];

function add_message(text) {
    var element = document.createElement('div');
    var demo = document.getElementById('demo');

    element.innerHTML = text;

    demo.appendChild(element);
}

function ask_questions(questions) {
    for (var i = 0; i < questions.length; ) {
        var question = questions[i];
        var response = prompt(question.question);

        if (response == question.answer) {
            add_message(question.message);
            i++;
        } else {
            add_message('"' + response + '" is wrong!');
        }
    }
}

function start_riddles() {
    ask_questions(questions);
}
于 2012-12-22T03:10:21.770 回答