Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

197
Views
¿Es posible agregar un eventListener en un bucle for? De ser así, ¿cómo lo implementaría?

Para mí, For Loops y ForEach Loops son dos de las mejores formas de manejar y mostrar datos de gran tamaño. El problema es que quiero agregar un eventListener a un bucle e inmediatamente te encuentras con problemas. Aquí está mi código, recorre una matriz proporcionada por API y crea divisiones HTML perfectamente. Cerca de la parte inferior del código, puede verme intentando agregar un EventListener y registrar cualquier clic que ocurra. Cuando hago clic recibo esto en la consola:

 [object HTMLDivElement] Has Been Clicked

Lo que significa que no está extrayendo información del div en el que se hizo clic.

 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);

He intentado buscar otras páginas o información sobre esto y no parece haber mucho. Si pudiera vincularme a información sobre esto o explicar cómo agregar eventListeners a elementos creados en bucle, sería bueno. Por supuesto, ni siquiera sé si esto es posible o práctico, si es imposible o poco práctico, no tengas miedo de decírmelo.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Es posible, aunque hay que tener cuidado con los visores. Sin embargo, let y const resuelven principalmente estos problemas for bucles.


En su caso, parece que debe generar el contenido del div, no el objeto en sí, lo que puede hacer con awayTeamName.innerHTML (HTML) o awayTeamName.innerText (contenido de texto).

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!