дождитесь появления элемента на странице, затем активируйте функцию щелчка (чистый JS)

1

Не в jQuery, vanilla JS.

У меня есть код ниже, который я использую, который отлично работает в консоли; проблема заключается в том, что элемент "goCheck" не отображается сразу по умолчанию, после того как пользователь просканирует несколько разделов, затем он выглядит видимым; из-за этого прослушиватель событий немедленно удаляет нуль.

Как я могу заставить это выполнить КОГДА мой элемент goCheck становится видимым на странице?

    var goCheck = document.getElementById('input_52_65_chosen');
    goCheck.addEventListener('click', function (event) {

    var value1 = document.getElementById('input_52_22').value;
    var value2 = document.getElementById('input_52_100').value;
    var value3 = document.getElementById('input_52_95').value;
    // var value4 = document.getElementById('input_52_96').value;

    if (value1 > 0 ) { 
         document.getElementById('rate').style.display = "none";
         document.getElementById('pay-plans').style.display = "none";
         document.getElementById('field_52_116').style.display = "none";

      } else if (value1 === 0 ) { 
        document.getElementById('field_52_116').style.display = "block";
    }
    if (value2 > 0 ) { 
         document.getElementById('rate').style.display = "none";
         document.getElementById('pay-plans').style.display = "none";
         document.getElementById('field_52_116').style.display = "none";

    } else if (value2 === 0 ) { 
        document.getElementById('field_52_116').style.display = "block";
    }
    if (value3 > 0 ) { 
         document.getElementById('rate').style.display = "none";
         document.getElementById('pay-plans').style.display = "none";
         document.getElementById('field_52_116').style.display = "none";

      } else if (value3 === 0 ) { 
        document.getElementById('field_52_116').style.display = "block";
    }
    if (value1 && value2 && value3 == 0 ) { 
        document.getElementById('field_52_116').style.display = "block";
    }   
  }
); 
  • 0
    Элемент goCheck уже находится в HTML и просто скрыт и отображается после того, как пользователь просканировал несколько разделов, как вы говорите, ИЛИ, это элемент, который он сам создал после того, как пользователь просканировал несколько разделов?
Теги:

1 ответ

3
Лучший ответ

Слушайте каждый клик по всему миру, затем проверяйте, был ли нажат элемент, который вы ищете:

document.body.addEventListener("click", function(event){
  const goCheck = document.getElementById('input_52_65_chosen');
  let el = event.target;
  while(el && el !== goCheck) el = el.parentElement;
  if(!el) return;
  //...
});
  • 3
    ака делегация делегаций.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню