Hello everyone, i’ll get right to the point.
let buttons = document.querySelector('.popupbutton')
let woodsound = 'zapsplat_foley_wood_squeak_creak_001.mp3'
buttons.addEventListener("click", function(){
  alert('hi')
})
the alert is just to test it.
<div class="buttons container-fluid"> 
    <button type="button" id="button1" class="popupbutton btn btn-info navbutton">Info</button>
    <div class="d-none popup"> Hi 1 </div> 
  
    <button type="button" id="button2" class="popupbutton btn btn-info navbutton">Info</button>
    <div class="d-none popup"> Hi 2 </div> 
      
    <button type="button" id="button3" class="popupbutton btn btn-info navbutton">Info</button>
    <div class="d-none popup"> Hi 3 </div> 
      
    <button type="button" id="button4" class="popupbutton btn btn-info navbutton">Info</button>
    <div class="d-none popup"> Hi 4 </div> 
  </div>  
  </div> 
Could someone advise me on how to make all the buttons respond to this event listener?
             
            
              1 Like 
            
                
            
           
          
            
              
                pjonp  
              
                  
                    December 14, 2019, 10:29am
                   
                  2 
               
             
            
              
querySelector will only target the 1st element it finds:
What if you made the EventListener a basic function and gave each <button>  an onclick attribute to call it?
             
            
              
            
           
          
            
            
              I thought of QuerySelectorAll, and when I tried it, it didn’t work at all.
             
            
              
            
           
          
            
              
                snigo  
              
                  
                    December 14, 2019, 10:45am
                   
                  4 
               
             
            
              Try forEach() loop that will add listener to every button in buttons
             
            
              2 Likes 
            
            
           
          
            
              
                pjonp  
              
                  
                    December 14, 2019, 10:49am
                   
                  5 
               
             
            
              Yes, it is the same syntax i.e:
let buttons = document.querySelectorAll('.popupbutton')
But you get an “Array” (NodeList) so:
buttons[0].addEventListener("click", function(){
  alert('hi')
})
Would work for 1st button
             
            
              1 Like 
            
            
           
          
            
            
              So I don’t have a bunch of experience using that array method (you could probably tell)
buttons.forEach(addEventlistener('click', (alert('hi'))))
 
            
              
            
           
          
            
              
                sgedye  
              
                  
                    December 14, 2019, 10:54am
                   
                  7 
               
             
            
              let buttons = document.querySelectorAll('.popupbutton')
buttons.forEach((btn) => {
  btn.addEventListener("click", (event) => {
    alert(event.target);
  });
});
 
            
              1 Like 
            
            
           
          
            
              
                snigo  
              
                  
                    December 14, 2019, 10:55am
                   
                  8 
               
             
            
              addEventListener() is a method of HTML element, button in your case. How would you run method in this case?
             
            
              1 Like 
            
            
           
          
            
            
              I have lots of studying to do. Thank you all for your help.