2016-10-27 4 views
0

Я пишу простую карточную игру, но по какой-то причине этого код ниже ведет себя очень странно ... Функция поворота сначала вызывается с помощью theTurn(0)массива Javascript не зацикливание назад к началу

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, то 1, а затем снова 0.

Я оставил некоторые из материала в theTurn ... но это суть его, и проблема проявляется в и упрощенная версия.

Любая помощь с моей ошибочной логикой была бы весьма признательна.

+0

Что содержат игроки? – L01c

+0

Используется ли 'play' в качестве логического значения или он увеличивается? Это добавит новый обработчик кликов каждый раз, когда 'TTON' вызывается и' 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

Спасибо Трей ... это похоже на трюк. Я никогда не знал, что вы можете назначить данные элементу ... новый трюк. Потрясающие. – Funktion

+0

Gotta love jQuery .. Я иногда использую '$ (selector) .attr ('data-prop')' вместо этого, потому что он может служить двойной целью как селектор для стилизации, поскольку он фактически добавляет атрибут данных HTML – Trey

Смежные вопросы