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

187
Vistas
¿Por qué mi evento de "cambio" no ha funcionado según lo previsto?

Bien, estoy practicando mi JS y HTML, mi código actual se ve así:

 document.querySelector('input[name="answer"]:checked').checked = false; let Select = document.querySelector('input[name="answer"]'); Select.addEventListener('change', function(event) { alert(event.target.value) })
 <div> <label><input type="radio" name="answer" value="1" checked="checked">1</label> <label><input type="radio" name="answer" value="2">2</label> </div>

Mi objetivo es cancelar el "marcado" de la primera radio, luego agregar un evento que mostrará el valor de cada radio cada vez que lo elija/"marque", pero como puede notar, hasta ahora la alerta solo aparecerá si elijo el primero radio. Entonces, si puedo preguntar, ¿dónde hice mal y cómo puedo solucionarlo?

pd Por el bien de la práctica, el HTML tiene que permanecer igual. Sin agregar Id u otro selector.

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

0

  1. Solo obtienes el primero con querySelector
  2. El querySelector(...:checked) funcionará porque solo puede tener una radio marcada
  3. Me gusta mucho delegar - es recomendable y tiene mucho sentido

 document.querySelector('input[name="answer"]:checked').checked = false; let radDiv = document.getElementById('radioDiv'); radDiv.addEventListener('change', function(event) { const tgt = event.target; if (tgt.matches("[type=radio][name=answer]")) { // check we have the right elements alert(tgt.value) } })
 <div id="radioDiv"> <label><input type="radio" name="answer" value="1" checked="checked">1</label> <label><input type="radio" name="answer" value="2">2</label> </div>

about 4 years ago · Juan Pablo Isaza Denunciar

0

 document.querySelector('input[name="answer"]:checked').checked = false; let Select = document.querySelectorAll('input[name="answer"]'); Select.forEach(el => el.addEventListener('change',function (event) { Select.forEach(e => alert(e.value)); }))
 <div> <label><input type="radio" name="answer" value="1" checked="checked">1</label> <label><input type="radio" name="answer" value="2">2</label> </div>

about 4 years ago · Juan Pablo Isaza Denunciar

0

let Select = document.querySelectorAll('input[name="answer"]'); Select.forEach(function(elem) { elem.addEventListener("change", function(event) { alert(event.target.value) }); });

Use arriba para el selector de elementos en lugar de querySelector que devuelve un solo objeto (primera coincidencia) querySelectorAll devuelve una matriz de elementos.

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