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

114
Vistas
¿Pueden varios divs con diferentes ID usar una función de JavaScript para controlarlos por separado?

Estoy tratando de averiguar cómo hacer que una sola función de JavaScript controle múltiples divs .

Tengo varios divs con diferentes ids y escribí funciones de JavaScript idénticas para cada uno de ellos por separado. Sin embargo, las funciones no funcionan o solo una de ellas lo hace.

Creo que lo más probable es que se impidan trabajar entre sí y me pregunto si hay una manera de usar una sola función de JavaScript pero manteniendo las ids únicas en los divs .

Aquí hay un ejemplo muy simple de lo que estoy trabajando:

Nota: se supone que el script cierra una ventana si un usuario hace clic en cualquier lugar fuera de una ventana de "contenedor". Por el momento, solo haciendo clic en el último contenedor amarillo

 var modal = document.getElementById('window-one');

window.onclick = function(event) {
 if (event.target == modal) {
 modal.style.display = "none";
 }
}

var modal = document.getElementById('window-two');

window.onclick = function(event) {
 if (event.target == modal) {
 modal.style.display = "none";
 }
}

var modal = document.getElementById('window-three');

window.onclick = function(event) {
 if (event.target == modal) {
 modal.style.display = "none";
 }
}
 div {
 border: solid 2px black;
 height: 20px;
 background: yellow;
 margin: 5px;
}
 <div id="window-one" class="container-one">1</div>
<div id="window-two" class="container-two">2</div>
<div id="window-three" class="container-three">3</div>

almost 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

El problema es que declaras la misma variable 3 veces con 3 valores diferentes. Su variable se declara globalmente. Por lo tanto, se sobrescribirá cada vez.

Además, la solución sería agregar una propiedad común a todos los modales (por ejemplo, un className). Selecciónalos todos. Vea en cuál se hizo clic y haga cosas con él.

Vea a continuación un ejemplo simplista

 const modals = document.querySelectorAll('.modal')

const doStuffWithModal = (modal) => modal.style.display = 'none'

modals.forEach(modal => modal.addEventListener('click', () => doStuffWithModal(modal)))
 .modal {
width: 100px;
height:100px;
background:red;
margin: 20px
}

.modal.container-two {
 background:blue
}
.modal.container-three {
 background: green
}
 <div id="window-one" class="container-one modal"></div>
<div id="window-two" class="container-two modal "></div>
<div id="window-three" class="container-three modal" ></div>

almost 4 years ago · Santiago Trujillo 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