0

さて、私のコードの問題は、コードをアクティブ化する実際のhtmlページに関連していると思いますが、確信が持てません。私がやろうとしているのは、配列を介して2つの質問をすることです。2番目の質問で正しいのではなく「gerp」を表示し、質問2で間違っている場合は、間違っていることを通知します。

これは私が「なぞなぞ」を始めるためにページで使用するものです:

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

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

これは、htmlファイルとは別のjsファイルで使用するコードです(ばかげているように聞こえる場合は申し訳ありませんが、具体的にしようとしているだけです)。

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

2番目の質問に正解したときに「Gerp」を表示したいだけです。

4

2 に答える 2

2

これは、最初のifで実行しますがi=i+1、2番目のifで、gerpの場合、i + 1、つまり2、3番目の要素をチェックしているためです。動的にする必要がない限り、対応するインデックスを使用してください。

...  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 に答える