Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

123
Visualizações
I was not able to get the elements into array by getElementsByClassName
{% block scripts %}
    

    <script>
       console.log('hello world')
       const modalBtns = [...document.getElementsByClassName('btn btn-link modal-button')]
    
        modalBtns.forEach(modalBtn=> modalBtn.addEventListener("click", function(){
          console.log(modalBtn)
        })) 

  </script>
{% endblock %}

{% block content %}

<div class="h1">Quiz List</div>
<hr>
{% for obj in object_list %}
 

     <button 
      class="btn btn-link modal-button"
      data-pk='{{obj.pk}}'
      data-quiz='{{obj.name}}'
      data-questions='{{obj.number_of_questions}}'
      data-difficulty='{{obj.difficulty}}'
      data-time='{{obj.time}}'
      data-pass='{{obj.required_score_to_pass}}'
      data-bs-toggle="modal" 
      data-bs-target="#quizStartModal">{{obj.name}}</button><br>

{% endfor %}
{% endnlock %}

Not able to see the output in the console and the elements which are in the class 'modal-button' are also not inserting into the array of modalBtns

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

While the time of execution the buttons don't exist since they are not rendered, so instead add buttons first then add the JS

{% endblock %}
{% block content %}
    
<div class="h1">Quiz List</div>
<hr>

{% for obj in object_list %}

<button
  class="btn btn-link modal-button"
  data-pk='{{obj.pk}}'
  data-quiz='{{obj.name}}'
  data-questions='{{obj.number_of_questions}}'
  data-difficulty='{{obj.difficulty}}'
  data-time='{{obj.time}}'
  data-pass='{{obj.required_score_to_pass}}'
  data-bs-toggle="modal" 
  data-bs-target="#quizStartModal">
  {{obj.name}}
</button>
<br>


{% endfor %}
{% endnlock %}

{% block scripts %}
    
<script>
  console.log('hello world')
  const modalBtns = [...document.getElementsByClassName('btn btn-link modal-button')]
        
  modalBtns.forEach(modalBtn=> modalBtn.addEventListener("click", function(){
    console.log(modalBtn)
  })) 
    
</script>
about 4 years ago · Juan Pablo Isaza Relatório

0

Looks like the dom isn't rendering the buttons before the script tag invokes your JS.

Try wrapping the script code inside a load event listener.

So your Code in the script tag goes from this:

<script>
 console.log('hello world')
 const modalBtns = [...document.getElementsByClassName('btn btn-link modal-button')]
       
 modalBtns.forEach(modalBtn=> modalBtn.addEventListener("click", function(){
   console.log(modalBtn)
 })) 
   
</script>

To this:

<script>
window.addEventListener('load', (event) => {
  console.log('hello world');

  const modalBtns = [...document.getElementsByClassName('btn btn-link modal-button')];
  modalBtns.forEach(modalBtn=> modalBtn.addEventListener("click", function(){
    console.log(modalBtn);
  }));

});
</script>
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda