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

188
Vistas
Cómo dejar de funcionar una función con EventListner iniciada por el atributo HTML 'onclick' en una cuadrícula cuando hace clic en cualquier celda de Grid creada usando div

Estoy haciendo Etch un proyecto de boceto con métodos JavaScript y DOM. Esto es lo que hice 👇

  1. creó una cuadrícula.
  2. Se llama a la función ChangeColour() usando el atributo onclick . (La función incluye EventListener (Evento: mouseover) para dar color de fondo para cada celda).

Quiero dejar de colorear celdas cuando hago clic en cualquier celda .

Intenté volver; y la función removeEventListner(). Ambos no funcionaron.

HTML:

 <section id="container"></section>

JavaScript:

 <script> let i = 0; container.innerHTML = `<section class="row">${'<div class="cell" onclick="changeColour()"></div>'.repeat(n)}</section>` .repeat(n) function changeColour(){ const cells = document.querySelectorAll('div'); cells.forEach((div) => { div.addEventListener('mouseover', () => { div.setAttribute('style', 'background: black;'); }) }) } </script>
about 4 years ago · Santiago Gelvez
1 Respuestas
Responde la pregunta

0

No puede eliminar el controlador de eventos creado a partir del atributo onclick porque no tiene una referencia a él; fue creado por el analizador HTML .

Si agrega el detector de eventos en JavaScript en lugar de HTML, utilizando changeColor como controlador, debería poder eliminarlo fácilmente. No estoy seguro de que esto sea exactamente lo que quieres lograr, pero en la línea de:

 "use strict"; const n=3; // testing container.innerHTML = `<section class="row">${'<div class="cell"></div>'.repeat(n)}</section>` .repeat(n) const changeColor = event => {event.currentTarget.style.background="black"} const clickHandler = event => { document.querySelectorAll('.cell').forEach( cell=> { cell.removeEventListener( "click", clickHandler); cell.removeEventListener("mouseover", changeColor); }); } document.querySelectorAll('.cell').forEach(div=> { div.addEventListener("click",clickHandler); div.addEventListener("mouseover", changeColor); });
 .cell { display: inline-block; border: thin solid blue; width: 2rem; height: 2rem; }
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js" crossorigin></script> <!-- body-html --> <section id="container"></section>

about 4 years ago · Santiago Gelvez 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