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

207
Visualizações
Is it possible to add an eventListener in a for loop, if so, how would you implement it?

For me For Loops and ForEach Loops are two of the best ways to handle and display large data. The issue is I want to add an eventListener to a loop and you immediately run into issues. Here is my code, it loops through an API Provided Array and creates HTML Divs perfectly. Near the bottom of the code you can see me attempting to add an EventListener and log any click that occurs. When I click I receive this in the console:

[object HTMLDivElement] Has Been Clicked

Which means it isn't pulling information from the clicked div.

for (i = 0; i < filtered.length-1; i++) {
   //Loop through games of Leagues

   for (x=0; x<filtered[i].length;x++){
    //Create Parent Div For Data
let parent = document.createElement("div")
parent.className = 'parentDiv'

//League Duplication not allowed
if (arrLeagues.includes(filtered[i][x].league.id)) {

} else {
arrLeagues.push(filtered[i][x].league.id)

//League Name
let league = document.createElement("div")
league.className = 'league'
league.innerHTML = filtered[i][x].league.name + `<img class='flag' src=${filtered[i][x].league.flag}>`
parent.appendChild(league)
}

//Home Container
let child1 = document.createElement("div")
child1.className = 'childDiv'

//Game Status
let gameStatus = document.createElement("div")
gameStatus.className = 'status'
gameStatus.innerHTML = filtered[i][x].fixture.status.short
parent.appendChild(gameStatus)

//Home Name
let homeTeamName = document.createElement("div")
homeTeamName.className = 'team1'
homeTeamName.innerHTML = filtered[i][x].teams.home.name
parent.appendChild(homeTeamName)

//Home Score
let homeTeamScore = document.createElement("div")
homeTeamScore.className = 'score1'


parent.appendChild(homeTeamScore)

//Away Container
let child2 = document.createElement("div")
child2.className = 'childDiv'

//Away Name
let awayTeamName = document.createElement("div")
awayTeamName.className = 'team2'
awayTeamName.innerHTML = filtered[i][x].teams.away.name
parent.appendChild(awayTeamName)

//Away Score
let awayTeamScore = document.createElement("div")
awayTeamScore.className = 'score2'

parent.appendChild(awayTeamScore)

//My Attempt to add Event Listener

parent.addEventListener("click", function(){
    console.log(`${awayTeamName} Has Been Clicked`)
})

//Push all Data to DOM
document.querySelector('.parentContainer').appendChild(parent);

I have tried looking for other pages or information on this and there does not seem to be a whole lot. If you could link me to information on this or explain how to add eventListeners to loop-created elements that would be nice. Of course I do not even know if this is possible or practical, if it is impossible or impractical don't be afraid to tell me.

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

0

It is possible, though you have to be careful with scopes. let and const mostly solve these problems for for loops though.


In your case, it appears you which to output the content of the div, not the object itself, which you can do with awayTeamName.innerHTML (HTML) or awayTeamName.innerText (text content).

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