Meu código funciona no IE, mas quebra no Safari, Firefox e Opera. (grande surpresa)
document.getElementById("DropList").options.length=0;
Depois de pesquisar, aprendi que é o length=0
que não gosta.
Eu tentei ...options=null
e var clear=0; ...length=clear
com o mesmo resultado.
Estou fazendo isso com vários objetos ao mesmo tempo, por isso estou procurando algum código JS leve.
javascript
html-select
Kirt
fonte
fonte
<option selected>
? (o Google nos colocou aqui, mas não está aqui) ... Consulte a solução real document.getElementById ("form1"). reset () .Respostas:
Você pode usar o seguinte para limpar todos os elementos.
fonte
empty()
, então você faria$("DropList").empty();
Para remover as opções de um elemento HTML de
select
, você pode utilizar oremove()
método:É importante remover o
options
contrário; como oremove()
método reorganiza aoptions
coleção. Dessa forma, é garantido que o elemento a ser removido ainda exista!fonte
Se você deseja ter um script leve, vá para o jQuery. No jQuery, a solução para remover todas as opções será:
fonte
for (a in select.options) { select.options.remove(0); }
o trabalho é bom.$("#droplist").empty();
código de tipo em comparação com milhares de linhas de JS vanilla faz valer a pena a adição do jQuery. Se estamos falando de marcação / cosméticos para uma página da web simples, você está 100% correto.Provavelmente, não é a solução mais limpa, mas é definitivamente mais simples do que remover um por um:
fonte
Esta é a melhor maneira:
fonte
while (comboBox.options.length) comboBox.remove(0);
Esta é uma maneira curta:
Uma linha, sem, sem JQuery, simples.
fonte
fonte
Gostaria de salientar que o problema na pergunta original não é mais relevante hoje. E há uma versão ainda mais curta dessa solução:
Testei que ambas as versões funcionam no Firefox 52, Chrome 49, Opera 36, Safari 5.1, IE 11, Edge 18, versões mais recentes do Chrome, Firefox, Samsung Internet e UC Browser no Android, Safari no iPhone 6S, Android 4.2. 2 navegador de ações. Eu acho que é seguro concluir que é absolutamente compatível com qualquer dispositivo existente no momento, por isso recomendo essa abordagem.
fonte
Este é um pouco de JavaScript moderno e puro
document.querySelectorAll('#selectId option').forEach(option => option.remove())
fonte
com PrototypeJS :
fonte
Se você estiver usando JQuery e seu controle de seleção tiver o ID "DropList", você poderá remover suas opções da seguinte maneira:
Na verdade, ele funciona para mim com qualquer lista de opções, como datalist.
Espero que ajude.
fonte
Observe que um select pode ter as duas
coleções - optgroup &
- options
como seus filhos.
Assim,
Método 1
Método # 2
Eu testei, ambos funcionam no Chrome.
Gosto do método mais simples e antiquado nº 1.
fonte
$select.html('')
Experimentar
Ou talvez veja a função removeChild ().
Ou se você usa a estrutura jQuery.
fonte
Usar o JQuery é uma maneira mais bonita, mais curta e inteligente de fazer isso!
fonte
Isso pode ser usado para limpar as opções:
fonte
Vá para trás. A razão é que o tamanho diminui após cada remoção.
fonte
Espero que este código o ajude
fonte
Eu acho que é o melhor sol. é
fonte
As soluções mais simples são as melhores, então você só precisa de:
fonte
Os itens devem ser removidos ao contrário, caso contrário, causará um erro. Além disso, não recomendo simplesmente definir os valores
null
como, pois isso pode causar um comportamento inesperado.Ou, se preferir, você pode torná-lo uma função:
fonte
fonte
O código da resposta acima precisa de uma pequena alteração para remover a lista completa. Verifique este trecho de código.
atualize o comprimento e removerá todos os dados da lista suspensa. Espero que isso ajude alguém.
fonte
fonte
Se você precisar oferecer suporte ao IE e tiver mais de 100 itens em sua lista de seleção, recomendo fortemente que você substitua o select por uma função da seguinte maneira:
O parâmetro select deve ser o elemento de um seletor de jquery ou chamada de document.getElementBy. A única desvantagem disso é que você perde os eventos que você havia ligado até o select, mas pode facilmente anexá-los novamente à medida que ele volta à função. Eu estava trabalhando com um select que tinha ~ 3k itens e levaria 4 segundos no IE9 para limpar o select para que eu pudesse atualizá-lo com o novo conteúdo. Quase instantaneamente fazê-lo dessa maneira.
fonte
$('#selectbox').replaceWith($('#selectbox')[0].cloneNode(false));
Para o Vanilla JavaScript, existe uma maneira simples e elegante de fazer isso:
fonte
Hoje eu estava enfrentando o mesmo problema, fiz como abaixo ao recarregar a caixa de seleção. (Na planície JS)
fonte
fonte