2014-04-23 4 views
0

바위 종이 가위 지정 작업에서 컴퓨터 또는 인간의 승패에 따라 전역 변수가 증가합니다. 내 함수는 정상적으로 작동하지만 .innerHTML을 사용할 때는 점수 판이 업데이트되지 않습니다. 어떤 제안? .innerHTML은 자바 스크립트에서 HTML을 업데이트하지 않습니다.

document.getElementById("humanScore").innerHTML = humanTotal; 
document.getElementById("computerScore").innerHTML = compTotal; 

http://codepen.io/anon/pen/GvpaJ

답변

1

귀하의 기능이 잘 작동하지 않습니다. innerHTML -part는 이와 같이 작동해야합니다 (증명 : http://codepen.io/anon/pen/qlIsG).

문제는 게임 논리에서 점수 판이 매회 0-0으로 끝나는 일부 오류가 발생했기 때문입니다.

당신의 숙제에 행운을 비네.

1

당신은 몇 가지 실수, innerHTML을 자사없는 문제가있다 : 당신의 compPlay 기능에

1) 컴퓨터

var computerChoice = compPlay(); 

2 재생이을 변경하고 확인 computerChoice를 사용)를이 변경 :

return compOptions[randomChoice]; // you want the play, not the random number 

작업 버전 :

http://codepen.io/juvian/pen/pLqxD

2

몇 가지 문제가 있습니다.

재생 기능에서 computerChoice 변수를 사용하지 않고 compPlay()의 함수 호출 결과 여야합니다. 현재는 var computerChoice = compPlay이며 실제로는 computerChoice을 함수가 아닌 함수에 할당합니다.

둘째 문, 당신은 함수 인, 다시 compPlay 값을 확인하는 경우 테스트에서, 나는 셋째 computerChoice

있어야한다고 생각합니다. compPlay의 반환 값은 인덱스, 그것은 그것은 innerHTML을 함께 할 수 없다, 즉 잘 작동, 그것은

업데이트 된 코드

var humanTotal =0;           
var compTotal=0;          

document.getElementById("rock").onclick = setRock; 
document.getElementById("paper").onclick = setPaper; 
document.getElementById("scissors").onclick = setScissors; 

function setRock(){ 
    play("rock") 
} 

function setPaper(){ 
    play("paper") 
} 

function setScissors(){ 
    play("scissors") 
}  

function play(humanChoice) {  
    var computerChoice = compPlay(); //<-- Change Here 

    //And all the following if statements to check the computer choice 
    if (humanChoice == "rock"){ 
     if (computerChoice =="rock"){ 
     } else if (computerChoice =="scissors"){ 
      humanTotal++; 
     } else if (computerChoice =="paper"){ 
      compTotal++; 
     } 
    } 

    if (humanChoice == "paper"){ 
     if (computerChoice =="paper"){ 
     } else if (computerChoice =="rock"){ 
      humanTotal++; 
     } else if (computerChoice =="scissors"){ 
     compTotal++; 
     } 
    } 

    if (humanChoice == "scissors"){ 
     if (computerChoice =="scissors"){ 
     } else if (computerChoice =="paper"){ 
      humanTotal++; 
     } else if (computerChoice =="rock"){ 
      compTotal++; 
     } 
    } 

    document.getElementById("humanScore").innerHTML = humanTotal; 
    document.getElementById("computerScore").innerHTML = compTotal; 

} 


function compPlay(){ 
    var compOptions = ['rock', 'paper', 'scissors'];  
    var randomChoice = Math.floor(Math.random()*compOptions.length); 
    return compOptions[randomChoice]; //<-- Change Here 

} 

아래 compOptions 배열에서 해당 인덱스 값이었다한다 다만 그 점수는 항상 0이었다. 그 이유는 "rock", "paper"또는 "scissors"를 테스트하는 if 문 중 하나도 "rock", "paper"또는 "scissors"와 컴퓨터 절대로 일치하지 않으므로 사실로 해결되지 않았기 때문입니다. 기능.

관련 문제