2014-12-11 7 views
0

저는 아직 JS에서 초보자입니다. 도움과 모든 종류의 설명에 감사드립니다. 그래서 여기에 나는 간다. 두 선수 중 한 명이 원하는대로 클릭 할 때마다 다음 코드가 "X"와 "O"사이를 전환하지 않는 이유는 조금도 없습니다. 한 가지는 if 문의 논리에 문제가 있는지 확인하는 것입니다. 다음과 같이Javascript tic tac toe 게임에서 플레이어간에 전환하는 방법

내 HTML은 다음과 같습니다

<!DOCTYPE html> 
<html> 
<head> 
    <title>Tic Tac Toe</title> 
    <script text="javascript" src="tic.js"></script> 
    <link rel="stylesheet" type="text/css" href="style.css"> 
</head> 
<center> 
<body> 
    <h1 style="font-family:arial;">Tic-Tac-Toe</h1> 
    <table> 
    <tr> 
     <td id = "case1" onclick="display_input('case1')"></td> 
     <td id = "case2" onclick="display_input('case2')"></td> 
     <td id = "case3" onclick="display_input('case3')"></td> 
    </tr> 
    <tr> 
     <td id = "case4" onclick="display_input('case4')"></td> 
     <td id = "case5" onclick="display_input('case5')"></td> 
     <td id = "case6" onclick="display_input('case6')"></td> 
    </tr> 
    <tr> 
     <td id = "case7" onclick="display_input('case7')"></td> 
     <td id = "case8" onclick="display_input('case8')"></td> 
     <td id = "case9" onclick="display_input('case9')"></td> 
    </tr> 
</table> 
<footer> 
    <p>Copyright&copy; 2014</p> 
</footer> 
</body> 
</center> 
</html> 

자바 스크립트 : display_input의 모든 호출에

function display_input(square){ 

var player_one = 1; 
if (player_one == 1){ 
    document.getElementById(square).innerHTML = "X"; 
    player_one = 0; 

} else { 
    document.getElementById(square).innerHTML = "O";  
    player_one = 1; 
} 

} 
+0

: 후속 호출 실제로 (하나의) 높은 범위 변수가 토글되도록 함수 외부 선언 이동 노동 조합 지부. 그 말은'td'를 클릭 할 때마다'player_one'은'1'과 같을 것입니다. 이 문제를 해결하려면 함수 앞에 (코드 상단에) 'var player_one = 1;'을 넣으십시오. JavaScript 변수 범위 – ziGi

+0

에 대해 읽으십시오. 제게 다소 수치 스럽습니다. 도움 친절 각하 주셔서 감사합니다! 그래도 좀 더 자세히 설명해 주시겠습니까? –

+0

몇 마디로 말하면, 자바 스크립트가로드되고 함수 밖의 변수를 가질 경우, 함수는 한 번만 실행됩니다. 이것은 다소 초기화 된 것입니다. 그 후에 버튼을 누를 때마다 함수 만 실행됩니다 (그리고 초기화 될 때 현재 값을 확인합니다). 이 기사에서는 JS에서 어떤 범위가 의미하는지 분명히해야합니다. http://stackoverflow.com/questions/500431/what-is-the-scope-of-variables-in-javascript – ziGi

답변

2

, 같은 값을 가진 새로운player_one 변수를 intialise : 1은. `그 의미 display_input` 함수 '안에 상기'VAR의 player_one = 1이므로

var player_one = 1; 
function display_input(square){ 
    if (player_one == 1){ 
     document.getElementById(square).innerHTML = "X"; 
     player_one = 0; 
    } else { 
     document.getElementById(square).innerHTML = "O";  
     player_one = 1; 
    } 
} 
+0

@Bergi wow, 저는 당신이 어떻게 113k를 만들 었는지보십시오, 당신의 뻔뻔 스러움을 고려하십시오. – ziGi

+0

@Bergi, 농담 일뿐입니다. 많은 사람들이 받아들이지 않고 대답하지 않으며 때로는 조금 자극적입니다. – ziGi

+0

죄송합니다. 당신은 이제 성공적으로 받아 들여집니다 :) –