Оператор If Else прерывается, потому что переменная не всегда существует - PullRequest
0 голосов
/ 09 июля 2020

Я создаю пользовательскую переменную javascript в Диспетчере тегов Google, которая ДОЛЖНА регистрировать определенные c нажатия кнопок и передавать другое поле / текст заголовка в качестве переменной.

Проблема с кодом, который я ниже я обнаружил, что переменная mapButtonText не всегда существует (вы должны щелкнуть значок карты, чтобы она существовала) до тех пор, пока я go не перейду на консоль разработчиков в chrome и ищу mapButtonText все, что я возвращаю это:

Uncaught TypeError: Cannot read property 'innerText' of null at <anonymous>:1:124

Кроме того, когда оператор else if достигает условия mapButtonText, он полностью прерывает оператор if else (что означает, что даже первый оператор больше не будет возвращать правильное значение) .

function(){
  
  var formButtonText = document.querySelector("#locationSelect > button").innerText;
  var formSelectedLocation = document.querySelector('#locationID option').innerText;
  var mapButtonText = document.querySelector("#map > div > div > div > div > div > div > div > div > div > div > div > div > div.infoWindow > a").innerText;
  var mapSelectedLocation = document.querySelector('.infoWindow:hover h3').innerText;
  var clickLocationName;
  var clickElementText = {{Click Text}};

  if (clickElementText === formButtonText){
    clickLocationName = formSelectedLocation;
  }
  else if (clickElementText === mapButtonText){
    clickLocationName = mapSelectedLocation;
  }
  else {clickLocationName = "No Location Selected";}

  return clickLocationName;

}

Я протестировал исключение строки else if, и код работает нормально (см. Код ниже)

function(){
  
  var formButtonText = document.querySelector("#locationSelect > button").innerText;
  var formSelectedLocation = document.querySelector('#locationID option').innerText;
  var mapButtonText = document.querySelector("#map > div > div > div > div > div > div > div > div > div > div > div > div > div.infoWindow > a").innerText;
  var mapSelectedLocation = document.querySelector('.infoWindow:hover h3').innerText;
  var clickLocationName;
  var clickElementText = {{Click Text}};

  if (clickElementText === formButtonText){
    clickLocationName = formSelectedLocation;
  }
  else {clickLocationName = "No Location Selected";}

  return clickLocationName;

}

Что мне не хватает в операторе else if для создания первого кусок кода работает?

1 Ответ

0 голосов
/ 09 июля 2020

Вы можете просто проверить, существует ли ваш элемент. В этом примере, если он не существует, я установил некоторый текст по умолчанию. По умолчанию также может быть установлено пустое или нулевое значение в зависимости от ваших потребностей c logi.

   element = document.querySelector('your_selector');
   var some_variable = element ? element.innerText : 'some_default_text';
...