Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

156
Vistas
Access elements from a function

I wanted to to know is there a way that I can access an element that was created from a function. I am trying to set a click event for every element created but I cant get it to work. Thanks in Advance

function createDuck() {
  let newDuck = document.createElement("div");
  newDuck.classList.add("duck");
  randomPosition(newDuck);
  body.appendChild(newDuck);
  return newDuck;
};

const ducks = document.querySelectorAll("duck");
 
ducks.forEach(function (item) {  
  item.addEventListener("click", () => {
    item.classList.add("shot");
  });
 });

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

The following solution adds an event listener to the dynamically created <div> element with the class style .duck applied.

let body = document.getElementsByTagName("body")[0];
let button = document.getElementById('create');
let ducks = document.querySelectorAll("duck");
let counter = 0;

/* This function is used to create a new item. */
function createDuck() {
  let newDuck = document.createElement("div");
  newDuck.innerHTML = counter++;
  newDuck.classList.add("duck");
  body.appendChild(newDuck);
  return newDuck;
};

/* This method checks if the element applies a class style. */
function hasClass(elem, className) {
  return elem.className.split(' ').indexOf(className) > -1;
}

/* This event listener triggers new item creation. */
button.addEventListener('click', function() {
  createDuck();
});

/* The following item adds an event listener to the dynamically created item. */
document.addEventListener('click', function (e) {
  if(hasClass(e.target, 'duck')) {
    e.target.classList.add('shot');
  }
}, false);
.duck {
  color: red;
  border: 1px solid blue;
  margin-top: 10px;
  cursor: pointer;
}

.shot {
  background-color: yellow;
}
<body>
  <button id="create">Create</button>  
</body>


1 - Event binding on dynamically created elements?

about 4 years ago · Juan Pablo Isaza Denunciar

0

You call "createDuck()" nowhere. After calling it, element Will be available.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda