Javascript переменная появляется в консоли, но не определена - PullRequest
0 голосов
/ 28 апреля 2020

мой шаблон на https://gambur.ch не имеет функции обратного вызова, которую я могу вызвать, чтобы получить инвентарь. он добавляет URLSeacrchParam с идентификатором варианта к URL.

Мне удается поймать этот идентификатор варианта и показать его в консоли (см .: https://gambur.ch/collections/reithosen/products/reithose-karen-black-onyx при нажатии на опции) мне нужно используйте тайм-аут, поскольку требуется несколько миллисекунд, пока Param не будет обновлен ...

, но тогда я не могу заставить работать вторую часть скрипта, так как переменная currentVariant может показывать "undefined"

Цель - показать инвентарь данного варианта ...

$(".option-value-input").click(
function() {
    console.log("clicked...reading stock information");

    setTimeout(
        function() {
          var currentVariant = new URLSearchParams(window.location.search);
          console.log(currentVariant.get('variant'));
        },
        500);

      $(".variantStock").each(function(){
    var variantsIDs = $(this).data("id");
  if(currentVariant === variantsIDs ){
    $(this).removeClass("is-hidden");
  }else{
    $(this).addClass("is-hidden");
  }
});

});

1 Ответ

1 голос
/ 28 апреля 2020

Это классическая c ошибка асинхронного кодирования. Ваш код выполняется до того, как переменная получит присвоение, поскольку она не ожидает 500 миллисекунд.

$(".option-value-input").click(
function() {
    console.log("clicked...reading stock information");

    setTimeout(
        function() {
          var currentVariant = new URLSearchParams(window.location.search);
          console.log(currentVariant.get('variant'));
          $(".variantStock").each(function(){
            var variantsIDs = $(this).data("id");
            if(currentVariant === variantsIDs ){
              $(this).removeClass("is-hidden");
            }else{
              $(this).addClass("is-hidden");
            }
          });
        },
        500); 
});

Я добавил полный код в setTimeout, чтобы он запускался, когда вы ожидаете, что он запустится.

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