Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

194
Visualizações
¿Cómo se "restablece" correctamente un elemento <select> que admite múltiples opciones en JS normal?

Quiero poder restablecer las etiquetas <select> por sí mismas en lugar de hacer que se restablezcan con todo el formulario. Esto es lo que tengo hasta ahora:

 <form autocomplete="off"> <select id="s" name="select" multiple> <option disabled>Select a value!</option> <option value="one">1</option> <option value="two">2</option> <option value="three">3</option> </select> <button onclick="resetS()" type="button">Reset</button> </form>

Y el JS:

 function resetS() { const selectedOptions = document.getElementById('s').selectedOptions; for (let i = 0; i < selectedOptions.length; i++) { selectedOptions[i].selected = false; } }

Cuando probé esto por primera vez, parecía funcionar. Sin embargo , solo cuando se selecciona una opción. He notado que cuando hay más de una opción actualmente seleccionada, parece fallar.

Comenzar con tres opciones y hacer clic en el botón Reset da como resultado esto, por alguna razón:

Todas las opciones se deseleccionan excepto una . ¿Por qué pasó esto? Sin embargo, al hacer clic en el botón Reset nuevamente, se anula la selección de la opción aún seleccionada.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Puede establecer el atributo selectedIndex en -1 para indicar que no se ha seleccionado ningún elemento.

 function resetS() { const multipleSelect = document.getElementById('s'); multipleSelect.selectedIndex = -1; }
 <form autocomplete="off"> <select id="s" name="select" multiple> <option disabled>Select a value!</option> <option value="one">1</option> <option value="two">2</option> <option value="three">3</option> </select> <button onclick="resetS()" type="button">Reset</button> </form>

about 4 years ago · Juan Pablo Isaza Relatório

0

La lista de elementos <option> seleccionados es una lista "viva". Cuando cambia la bandera selected en uno de los elementos, la lista cambia; es decir, la <option> que cambió desaparece de la lista, por lo que la longitud se acorta en 1. Por lo tanto, un bucle for indexado omitirá elementos.

La forma de lidiar con eso (bueno, una forma) es usar un ciclo while de la siguiente manera:

 function resetS() { const selectedOptions = document.getElementById('s').selectedOptions; while (selectedOptions.length) { selectedOptions[0].selected = false; } }

editar , o puede usar el método sugerido en la respuesta de Tom, que es más simple.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda