2012-12-22 10 views
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」,以顯示當第二個問題回答正確。

回答

2

這是因爲在第一個中,如果你做的是i=i+1,但是在第二個中,如果對於gerp,你正在檢查i + 1,這將是第二個元素2。除非你需要它是動態的,只要使用相應的索引:

... else if(name == myArray[1].a) { ... 
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); 
}