возвращаемое значение функции внутри условного оператора - PullRequest
1 голос
/ 23 марта 2019

У меня есть функция с аргументами, внутри функции у меня есть операторы if.Когда я пытаюсь выполнить функцию.Он работает только тогда, когда оператор if равен true, и не работает, если оператор false.

Все работает хорошо, если я не нахожусь в модных штанах, чтобы использовать функцию.Но я хочу улучшить свой код, чтобы не повторяться 10 раз.

function PopUpWithText(popUp_img, popUp_txt, popUp_icon) {
  var hotspotScale = 1;
  if (hotspotScale === 1) {
    popUp_img.setAttribute("scale", "0");
    popUp_txt.setAttribute("scale", "0");
    popUp_icon.setAttribute("scale", "0");
    hotspotScale = 0;
  } else if (hotspotScale === 0) {
    popUp_img.setAttribute("scale", "1");
    popUp_txt.setAttribute("scale", "1");
    popUp_icon.setAttribute("scale", "1");
    hotspotScale = 1;
  }
}

var popUpWithText1 = document.querySelectorAll("#popUp_icon1, #AButton");
for (var i = 0; i < popUpWithText1.length; i++) {
  popUpWithText1[i].addEventListener("click", function() {
    PopUpWithText(
      document.querySelector("#popUp_img1"),
      document.querySelector("#popUp_txt1"),
      document.querySelector("#popUp_icon1")
    );
  });
}

Во-первых, я знаю, что мне определенно не хватает return.Во-вторых, этот фрагмент кода должен переключать шкалу между значениями 0 и 1. Я могу изменить значение шкалы на 0, но тогда он не переключится обратно на значение 1. Пожалуйста, помогите

Ответы [ 2 ]

1 голос
/ 23 марта 2019

Если вы просто хотите изменить видимость элементов, вы можете использовать атрибут visible:

function PopUpWithText(popUp_img, popUp_txt, popUp_icon) {
  let visible = popUp_img.getAttribute('visible')
  popUp_img.setAttribute("visible", !visible);
  popUp_txt.setAttribute("visible", !visible);
  popUp_icon.setAttribute("visible", !visible);
}

Чтобы упростить задачу, вы можете бросить свои элементы в родительский объект:

<a-entity id="parent">
  <!-- All three elements --!>
</a-entity>

и если вы хотите изменить шкалу, вы можете сделать аналогичный переключатель:

function PopUpWithText(popUp_parent) {
  let scale = popUp_parent.getAttribute('scale')
  scale = scale.x === "1" ? "0" : "1" 
  popUp_parent.setAttribute("scale", scale);
}

Как я это делал в этой скрипке.

1 голос
/ 23 марта 2019

Внутри PopUpWithText вы устанавливаете hotspotScale = 1, поэтому ваш код никогда не займет ветку else if.Вы можете переместить это в глобальную переменную вне области действия функции.

...