jQuery Сохранить переменную данных от предыдущего клика - PullRequest
0 голосов
/ 29 марта 2020

У меня есть функция щелчка, которая появляется, когда пользователь нажимает «игрока» в моей игре. Я пытаюсь закодировать замену между двумя игроками. Функция сначала проверяет, был ли выбран другой игрок, если это так, она проверяет, находятся ли они на скамейке или нет. Если они на скамейке запасных, то в них хранится информация о данных второго игрока.

Проблема заключается в хранении информации о первых игроках. Когда я предупреждаю «pid», он появляется как неопределенный. Есть ли способ сохранить pid, чтобы в следующий раз, когда пользователь нажимает на другого игрока, информация, сохраненная в 'pid', оставалась? Я понимаю, что pid объявляется внутри функции, я пытался сначала объявить его вне функции, но это все еще не работает.

var pid;

  $('.player').click(function() {

    event.preventDefault();

    var start = $(this).data("start");

    if ($(".show2")[0]){
      // Player has already been selected

      if ($(this).children('.show2').length) {
        // User has selected same player, toggle off select image and return

        $(this).children('.player-select').toggleClass('show2');
        return;
      }

      if(start == 'FirstEleven'){
        $(".message-alert").css("display", "block");
        $(".message").html('You must substitute a player from the bench');
        $(".overlay2").css("opacity", "0.5");
        $(".overlay2").css("display", "block");
        $(".container2").css("pointer-events", "all");
      }

      if(start == "Bench"){
        var pid2 = $(this).data("id");
        var element2 = $(this).data("element");

        alert(pid);
        alert(pid2);
      }

    } else {
      // First player to be selected

      if(start == 'Bench'){
        // If player selected is on the bench
        $(".message-alert").css("display", "block");
        $(".message").html('You must select a player from the starting lineup first');
        $(".overlay2").css("opacity", "0.5");
        $(".overlay2").css("display", "block");
        $(".container2").css("pointer-events", "all");
        return;
      }

      $(this).children('.player-select').toggleClass('show2');

      var pid = $(this).data("id");
      var element = $(this).data("element");

    }

  });

1 Ответ

1 голос
/ 29 марта 2020

Вы можете использовать sessionStorage для этого вида использования. Это будет чистым однажды windows близко. Или вы можете очистить programmatically.

sessionStorage.setItem("players1", "deepak")

console.log(sessionStorage.getItem("players1"))
...