Кнопка, созданная динамически, не может получить доступ

#javascript

#javascript

Вопрос:

Я изучаю javascript, и я пытаюсь получить доступ к кнопке, которая создается динамически внутри функции. Первая функция createHtml просто получает данные, создает элементы и сохраняет их в переменной, которую я добавляю к элементу html и сохраняю их в beerContainer , и это работает. Однако я не могу использовать кнопку, созданную в функции createHtml. Как я могу заставить всплывающее предупреждение появляться при нажатии на saveBeer?

  let btn = document.querySelector('#myBtn');
    let beerContainer = document.querySelector('#beer-data');

            function createHtml(result) {
            
              var html = '';
              for(let i = 0; i < result.data.length; i  ) {
               
              
                html  =  "<h3>"  result.data[i].name  "</h3>"
                html  =  "<p>"  result.data[i].description  "</p>"
                html  = "<button id='save-beer' data-id='"  result.data[i].id "'>Save Beer</button>"
            
              }
              beerContainer.innerHTML = html;
            }
            
            
            btn.addEventListener('click', function(event) { 
              fetchApiData(createHtml);
            });

var saveBeer = document.querySelector('.save-beer');

saveBeer.addEventListener('click', function(event) { 
 alert("Hi");

});
 

Ответ №1:

попробуйте использовать

     var saveBeer = document.querySelector('#save-beer'); // access by id
 

вместо

    var saveBeer = document.querySelector('.save-beer'); // trying to access by class which does not exist
 

Обратите внимание на ‘#’, а не на ‘.’ в аргументе querySelector