Построить объект из формы, представленной в javascript / jquery - PullRequest
0 голосов
/ 25 октября 2018

Я работаю над проектом, в котором мне нужно прочитать форму, а затем создать объекты из формы, которые затем можно использовать для отслеживания игроков в игре и их счета.

Этоэто конструктор:

function Player(x) {
  this.playerName = x;
  this.playerScore = 0;
}

Вот форма:

    <form id="PlayerName">
      <label for="playerName1"><h3>Player 1, please input your name:</h3></label>
      <input type="text" id="playerName1"></input><br>
      <button type="submit" name="playerName">Submit Name</button>
    </form>

Вот JS / jQuery:

  $("form#PlayerName").submit(function(event){
    event.preventDefault();
    var inputName1 = $("input#playerName1").val();
    var player1 = new Player(inputName1);
  });

Когда я запускаю отладчик, он находитобъект и выглядит так, как будто он его создает, с именем в правильном месте, а затем, когда я пытаюсь запустить следующую функцию для этого объекта, он говорит, что он не найден, и я совершенно озадачен:

  $("form#HoldDice").submit(function(event) {
    event.preventDefault();
        HoldTheDice();
        if (currentPlayer !== 1) {
          $("span#PlayerOneScore").text(player1.playerScore);
          $("span#DiceRoll").text("Player One, you've chosen to hold the dice, you added " + addscore + " to your score.")
          addscore = 0; 
}... 

currentPlayer - это переменная, используемая для отслеживания того, какие игроки поворачивают ее, хотя я не думаю, что она имеет отношение к этому вопросу.

Справка?

1 Ответ

0 голосов
/ 25 октября 2018

your player1 - это локальная переменная функции, которую вы объявляете в функции submit.Время жизни только в пределах функции.Вам нужно либо вставить его в глобальный объект, чтобы другой пользователь мог использовать его, либо объявить внешнюю функцию отправки, чтобы назначить ее при отправке пользователем.Повторно используйте его, когда хотите.

$("form#PlayerName").submit(function(event){
  event.preventDefault();
  var inputName1 = $("input#playerName1").val();
  var player1 = new Player(inputName1); // function local variable
});

Попробуйте этот

Player1 player1 = new Player();
$("form#PlayerName").submit(function(event){
  event.preventDefault();
  var inputName1 = $("input#playerName1").val();
  player1 = new Player(inputName1); // function local variable
});

$("form#HoldDice").submit(function(event) {
  event.preventDefault();
      HoldTheDice();
      if (currentPlayer !== 1) { // assuming this is assgined too, else check undefined
        $("span#PlayerOneScore").text(player1.playerScore);
        $("span#DiceRoll").text("Player One, you've chosen to hold the dice,   you added " + addscore + " to your score.")
        addscore = 0; 
 }... 

класс и массив класса

Посмотрите, как создать класс.https://developer.mozilla.org/my/docs/Web/JavaScript/Reference/Classes

как создать массив пользовательских объектов. Создание массива в JavaScript пользовательских объектов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...