2016-10-27 2 views
0

나는 간단한 카드 게임을 쓰고 있어요에 반복하지,하지만 몇 가지 이유로 다음이 코드는 매우 이상하게 턴 기능이 처음 theTurn(0)자바 스크립트 배열이 다시 시작

players 사용이라고 ... 동작하는 객체의 배열입니다 어떤 이유 등

function theTurn(playerNumber) { 
    if(play == 1) { 
     $('#player').text(players[playerNumber].Name); 
     $('#submit').click(function() { 
      nextPlayer(playerNumber); 
     }) 
    } 
} 

function nextPlayer(playerNumber) { 
    if(playerNumber == players.length - 1) { 
     theTurn(0); 
    } else { 
     theTurn(playerNumber + 1); 
    } 
} 

선수 이름과 손으로 나는 플레이어 0 다음 한 다음 1을 다시하고 내가 theTurn에서 물건의 일부를 남겨 두었다 0

얻을 ...하지만이 그것의 요지이며 문제가 티에 나타납니다. 단순화 된 버전도있다.

내 오류 로직에 대한 도움을 주시면 감사하겠습니다.

+0

플레이어에는 무엇이 들어 있습니까? – L01c

+0

'play '가 부울로 사용 되었습니까? 아니면 증가합니까? 이것은'theTurn'이 호출되고'play = 1','nextPlay'에서 클릭 핸들러를 제거 할 때마다 새로운 클릭 핸들러를 추가 할 것입니다 – Trey

+0

무한 루프처럼 보입니다 – Mahi

답변

1

실제로 이것은 좀 더 의미가 있습니다. 클릭 처리기를 한 번 추가 한 다음 플레이어 번호를 데이터 속성으로 설정하여 nextPlayer 함수가 인수없이 무엇인지 알 수 있습니다.

$('#player').data('activePlayer', 0); 
$('#submit').click(function() { 
    nextPlayer(); 
}); 

function theTurn(playerNumber) { 
    if(play == 1) { 
     $('#player').text(players[playerNumber].Name); 
     $('#player').data('activePlayer', playerNumber); 

    } 
} 

function nextPlayer() { 
    var playerNumber = $('#player').data('activePlayer'); 

    if(playerNumber == players.length - 1) { 
     theTurn(0); 
    } else { 
     theTurn(playerNumber + 1); 
    } 
} 
+0

Trey ... 트릭을하는 것 같습니다. 나는 당신이 요소에 데이터를 할당 할 수 있다는 것을 결코 알지 못했다. 새로운 트릭. 굉장해. – Funktion

+0

jQuery를 좋아해야한다. 나는 HTML 데이터 속성을 실제로 추가했기 때문에 스타일 지정을위한 선택기로서 이중 목적을 제공 할 수 있기 때문에 가끔'$ (selector) .attr ('data-prop')'를 사용한다. – Trey

관련 문제