Как перебрать кнопки те что перебирались после загрузки страницы но еще раз при нажатия на определеный элемент?

Ниже вот такой код. После загрузки у меня сразу перебирает кнопки openPub , и если я на ту кнопку нажимаю, у меня открывается окно, и в нем такая же кнопка есть с классом, и она не попала в перебор потому что после загрузке страницы , такой кнопки еще не было, но она делает такую же функцию что и другие, можно как то сделать что после нажатия кнопки, делался еще раз перебор кнопок openPub через forEach? P.S Надеюсь вы меня поняли)

openPub.forEach(e => {
   e.addEventListener('click', event => {
      event.preventDefault();
      let htmlPubMenu;
      if (e.classList.contains('contact-pup')) {
         htmlPubMenu = `<div class="contact-menu animation">
         <div class="exit">
            <i class="fas fa-times"></i>
         </div>

         <div class="left-side">
            <h3 class="contact-menu__title">LET'S TALK!</h3>
            <h2 class="contact-menu__sup-title">CALL ME OR SEND ME A REQUEST</h2>
            <div class="contact-menu__contact-person">
               <div class="contact-menu__phone-text">
                  <i class="fas fa-phone"></i> +380986404004
               </div>
               <div class="contact-menu__email-text">
                  <i class="fas fa-envelope"></i> [email protected]
               </div>
            </div>
            <form action="POST">
               <label for="email">
                  Adress e-mail
               </label>
               <input class="contact-menu__email" type="email" name="email" id="email" placeholder="Adress e-mail">

               <label for="text">
                  Request
               </label>
               <textarea class="contact-menu__request" name="text" id="text"
                  placeholder="Type your request..."></textarea>

               <div class="contact-menu__wrap-btn">
                  <button class="contact-menu__send" type="submit">SEND</button>
               </div>

            </form>
         </div>
         <div class="rigth-side">
            <div class="contact-menu__wrap-img">
               <img class="contact-menu__img" src="img/request.png" alt="request">
            </div>
         </div>
      </div>`
      } else if (e.classList.contains('resume-pup')) {
         htmlPubMenu = `<div class="resume animation">
         <div class="exit">
            <i class="fas fa-times"></i>
         </div>
         <h3 class="resume__title">
            Resume
         </h3>
         <div class="resume__btns">
            <button class="resume__download btn">DOWNLOAD PDF</button>
            <button class="resume__print btn">PRINT</button>
         </div>
         <div class="resume__content">
            <div class="resume__left-side">
               <div class="resume__descr">
                  <h4 class="resume__title-section resume__title-section-first">COURSES</h4>
                  <div class="resume__wrap-info resume__wrap-info-first">
                     <div class="resume__year">2019</div>
                     <h5 class="resume__info-title"> QA tester</h5>
                     <h6 class="resume__info-sub-title">Software Testing course at QATestLab</h6>
                     <p class="resume__info-text">In the 2019 i bought Software Testing course at QATestLab and passed
                        online course. Then i had been passing trainee week and got basic skills of QA testing.</p>
                  </div>
                  <div class="resume__wrap-info">
                     <div class="resume__year">2020</div>
                     <h5 class="resume__info-title">Angular</h5>
                     <h6 class="resume__info-sub-title">The complete angular master class Udemy</h6>
                     <p class="resume__info-text">In the 2020 i got angular framework and passed a whole course. In the
                        course except front end material included: Angular Material/Redux|Unit testing and HTTP request.
                     </p>
                  </div>
               </div>
            </div>
            <div class="resume__rigth-side">
               <div class="resume__descr">
                  <h4 class="resume__title-section resume__title-section-first">EDUCATION</h4>
                  <div class="resume__wrap-info resume__wrap-info-first">
                     <div class="resume__year">2018 - 2021</div>
                     <h5 class="resume__info-title">Accounting and audit</h5>
                     <h6 class="resume__info-sub-title">National University of Food Technologies, Kyiv</h6>
                  </div>
                  <div class="resume__wrap-info">
                     <div class="resume__year">2014 - 2018</div>
                     <h5 class="resume__info-title">Accounting and audit</h5>
                     <h6 class="resume__info-sub-title">College of Food Technologies, Lviv</h6>
                  </div>
               </div>
               <div class="resume__descr">
                  <h4 class="resume__title-section">SKILLS</h4>
                  <div class="resume__skills">
                     <div class="resume__name-skill resume__name-skills-html">HTML</div>
                     <div class="resume__name-skill resume__name-skills-css">CSS</div>
                     <div class="resume__name-skill resume__name-skills-js">JavaScript</div>
                     <div class="resume__name-skill resume__name-skills-angular">Angular</div>
                     <div class="resume__name-skill resume__name-skills-jq">jQuery</div>
                     <div class="resume__name-skill resume__name-skills-sql">SQL</div>
                  </div>
               </div>
            </div>
         </div>
         <div class="resume__wrap-btn">
            <button class="resume__btn contact-pup open-pub">HIRE ME</button>
         </div>
      </div>`
      }
      pupMenu.innerHTML = htmlPubMenu;
      open()
      document.body.classList.add('modal-hiden');
      let exitMenu = document.querySelector('.exit');
      exit(exitMenu)

   })
})

Ответы (1 шт):

Автор решения: OPTIMUS PRIME

Используйте Делегирование событий, добавив обработчик на родительский элемент, в котором лежат все цели клика.

Код из вопроса можно переписать так:

const html = {
  // Большие строки прямо внутри if / else засоряют код, поэтому убрал их сюда.
  // +В современных редакторах можно свернуть такие блоки в 1 строчку.

  contact: (`
    <div class="contact-menu animation">
      <div class="exit">
        <i class="fas fa-times"></i>
      </div>

      <div class="left-side">
        <h3 class="contact-menu__title">LET'S TALK!</h3>
        <h2 class="contact-menu__sup-title">CALL ME OR SEND ME A REQUEST</h2>
        <div class="contact-menu__contact-person">
          <div class="contact-menu__phone-text">
            <i class="fas fa-phone"></i> +380986404004
          </div>
          <div class="contact-menu__email-text">
            <i class="fas fa-envelope"></i> [email protected]
          </div>
        </div>

        <form action="POST">
          <label for="email">
            Adress e-mail
          </label>
          <input class="contact-menu__email" type="email" name="email" id="email" placeholder="Adress e-mail">

          <label for="text">
            Request
          </label>
          <textarea class="contact-menu__request" name="text" id="text"
            placeholder="Type your request..."></textarea>

          <div class="contact-menu__wrap-btn">
            <button class="contact-menu__send" type="submit">SEND</button>
          </div>
        </form>
      </div>

      <div class="rigth-side">
        <div class="contact-menu__wrap-img">
          <img class="contact-menu__img" src="img/request.png" alt="request">
        </div>
      </div>

    </div>
  `),

  resume: (`
    <div class="resume animation">
      <div class="exit">
        <i class="fas fa-times"></i>
      </div>

      <h3 class="resume__title">Resume</h3>
      <div class="resume__btns">
        <button class="resume__download btn">DOWNLOAD PDF</button>
        <button class="resume__print btn">PRINT</button>
      </div>

      <div class="resume__content">
        <div class="resume__left-side">
          <div class="resume__descr">

            <h4 class="resume__title-section resume__title-section-first">COURSES</h4>
            <div class="resume__wrap-info resume__wrap-info-first">
              <div class="resume__year">2019</div>
              <h5 class="resume__info-title"> QA tester</h5>
              <h6 class="resume__info-sub-title">Software Testing course at QATestLab</h6>
              <p class="resume__info-text">In the 2019 i bought Software Testing course at QATestLab and passed
                online course. Then i had been passing trainee week and got basic skills of QA testing.</p>
            </div>

            <div class="resume__wrap-info">
              <div class="resume__year">2020</div>
              <h5 class="resume__info-title">Angular</h5>
              <h6 class="resume__info-sub-title">The complete angular master class Udemy</h6>
              <p class="resume__info-text">In the 2020 i got angular framework and passed a whole course. In the
                course except front end material included: Angular Material/Redux|Unit testing and HTTP request.
              </p>
            </div>

          </div>
        </div>

        <div class="resume__rigth-side">

          <div class="resume__descr">
            <h4 class="resume__title-section resume__title-section-first">EDUCATION</h4>
            <div class="resume__wrap-info resume__wrap-info-first">
              <div class="resume__year">2018 - 2021</div>
              <h5 class="resume__info-title">Accounting and audit</h5>
              <h6 class="resume__info-sub-title">National University of Food Technologies, Kyiv</h6>
            </div>
            <div class="resume__wrap-info">
              <div class="resume__year">2014 - 2018</div>
              <h5 class="resume__info-title">Accounting and audit</h5>
              <h6 class="resume__info-sub-title">College of Food Technologies, Lviv</h6>
            </div>
          </div>

          <div class="resume__descr">
            <h4 class="resume__title-section">SKILLS</h4>
            <div class="resume__skills">
              <div class="resume__name-skill resume__name-skills-html">HTML</div>
              <div class="resume__name-skill resume__name-skills-css">CSS</div>
              <div class="resume__name-skill resume__name-skills-js">JavaScript</div>
              <div class="resume__name-skill resume__name-skills-angular">Angular</div>
              <div class="resume__name-skill resume__name-skills-jq">jQuery</div>
              <div class="resume__name-skill resume__name-skills-sql">SQL</div>
            </div>
          </div>

        </div>

      </div>

      <div class="resume__wrap-btn">
        <button class="resume__btn contact-pup open-pub">HIRE ME</button>
      </div>

    </div>
  `),

};


document.addEventListener('click', function (e) {
  // Определяет на кого кликнули и запускает функцию-обработчик для этого элемента.
  // При необходимости, функции тоже можно собрать в общий объект.

  let target = e.target;

  switch (true) { //       openPub ↓ какой там у него класс.
    case hasClass(target, "open-pub"): return onclick_open_pub(target, e);
    case hasClass(target, "кнопка-2"): return onclick_button_2(target, e);
    case hasClass(target, "кнопка-3"): return onclick_button_3(target, e);
    // ...
    // return или break обязательны, чтобы выполнялась только одна функция.
  }

});

function onclick_open_pub(elem, event) {
  // Почему переменные в одном месте названы pub, в другом pup - не понятно.

  event.preventDefault();

  if (hasClass(elem, "contact-pup")) {
    pupMenu.innerHTML = html.contact;
  } else if (hasClass(elem, "resume-pup")) {
    pupMenu.innerHTML = html.resume;
  }

  open();

  document.body.classList.add("modal-hiden");

  let exitMenu = document.querySelector(".exit");
  exit(exitMenu);
}

function onclick_button_2(elem, event) { }
function onclick_button_3(elem, event) { }

/***/
function hasClass(el, className) {
  return el.classList.contains(className);
}
→ Ссылка