2014-04-16 2 views
1
var answers = ["hello", "my name is", "how are you?", "what is your name?", "how much does   it cost?"]; 

var answers2 = ["hi", "my name is", "are you well?", "what's your name?", "how much is  it?"]; 

$("#submmit").click(function() { 
    var totalYes=0; 
    function checkAnswers() { 
    for(var i=0; i<answers.length; i++) { 
     var userAnswer = document.getElementById("b"+i).value; 
     if(userAnswer===(answers[i] || answers2[i])) { 
      totalYes++; 
      $("#correcto").show(); 
     } else { 
      $("#incorrecto").show(); 
     } 
    } 
    } 
    checkAnswers(); 
}); 

Answer 배열이 아닌 정답을 입력하면 프로그램이 작동합니다. answers2에서 답을 입력하면 "틀린"것으로 표시됩니다. 도와주세요.자바 스크립트 또는 비교 배열이 작동하지 않습니까?

답변

5

(answers[i] || answers2[i]) 

이 표현이 먼저 answers[i]을 평가하기 때문에 그것은 answers2 배열을 확인하지 않습니다, 그리고 반환되도록 즉, Truthy (비 빈 문자열)입니다. ||의 단락 이후 answers2[i]은 절대로 평가되지 않습니다. 이를 확인하기 위해

올바른 방법이 하나를 시도이

if (answers.indexOf(userAnswer) !== -1 || answers2.indexOf(userAnswer) !== -1) { 
    totalYes++; 
    $("#correcto").show(); 
} else { 
    $("#incorrecto").show(); 
} 
+0

감사합니다! 그것은 작동합니다 :) – andryuu87

-1

처럼 Array.prototype.indexOf을 사용하는 것입니다. 이 문제가 해결 되었기를 바랍니다.

if(userAnswer == answers[i] || userAnswer == answers2[i]) 

이 줄을 바꾸어보십시오.

JSFiddle

관련 문제