我启动脚本的方式有问题吗?尝试让数组为每个答案输出不同的响应



好的,所以我认为我的代码的问题是有关实际的html页面,我正在激活的代码,但我不能确定。我要做的是通过数组问两个问题。我希望第二题显示的是"gerp"而不是" correct ",如果第二题你答错了,它就会提示你答错了。

这是我在页面上使用的"谜语"的开头:

  <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"。

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

...  else if(name == myArray[1].a) { ...

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

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);
}

最新更新