Mon code fonctionne dans IE mais se rompt dans Safari, Firefox et Opera. (grosse surprise)
document.getElementById("DropList").options.length=0;
Après avoir cherché, j'ai appris que c'est length=0
ça qu'il n'aime pas.
J'ai essayé ...options=null
et var clear=0; ...length=clear
avec le même résultat.
Je fais cela à plusieurs objets à la fois, donc je recherche du code JS léger.
<option selected>
?? (google nous a mis ici mais ce n'est pas ici) ... Voir document.getElementById ("form1"). reset () vraie solution.Réponses:
Vous pouvez utiliser ce qui suit pour effacer tous les éléments.
la source
empty()
, alors vous le feriez$("DropList").empty();
Pour supprimer les options d'un élément HTML de
select
, vous pouvez utiliser laremove()
méthode:Il est important de supprimer le
options
dos; car laremove()
méthode réorganise laoptions
collection. De cette façon, il est garanti que l'élément à supprimer existe toujours!la source
Si vous souhaitez avoir un script léger, optez pour jQuery. Dans jQuery, la solution pour supprimer toutes les options sera comme:
la source
for (a in select.options) { select.options.remove(0); }
le travail fonctionne très bien.$("#droplist").empty();
type code par rapport à des milliers de lignes de vanilla JS vaut largement l'ajout de jQuery. Si nous parlons de balisage / cosmétiques pour une simple page Web, vous avez 100% raison.Ce n'est probablement pas la solution la plus propre, mais c'est certainement plus simple que de supprimer un par un:
la source
C'est la meilleur façon :
la source
while (comboBox.options.length) comboBox.remove(0);
C'est un chemin court:
Une ligne, non pour, pas de JQuery, simple.
la source
la source
Je tiens à souligner que le problème de la question initiale n'est plus pertinent aujourd'hui. Et il existe une version encore plus courte de cette solution:
J'ai testé que les deux versions fonctionnent dans Firefox 52, Chrome 49, Opera 36, Safari 5.1, IE 11, Edge 18, les dernières versions de Chrome, Firefox, Samsung Internet et UC Browser sur Android, Safari sur iPhone 6S, Android 4.2. 2 navigateur de stock. Je pense qu'il est prudent de conclure qu'il est absolument compatible avec n'importe quel appareil existant actuellement, je recommande donc cette approche.
la source
C'est un JavaScript un peu moderne et pur
document.querySelectorAll('#selectId option').forEach(option => option.remove())
la source
avec PrototypeJS :
la source
Si vous utilisez JQuery et que votre contrôle de sélection a l'ID "DropList", vous pouvez supprimer ses options en procédant de cette façon:
En fait, cela fonctionne pour moi avec n'importe quelle liste d'options, comme datalist.
J'espère que ça aide.
la source
Notez qu'une sélection peut avoir à la fois la collection
- optgroup &
- options
comme enfants.
Alors,
Méthode n ° 1
Méthode n ° 2
J'ai testé, les deux fonctionnent sur Chrome.
J'aime la méthode n ° 1 la plus simple et à l'ancienne.
la source
$select.html('')
Essayer
Ou peut-être regardez dans la fonction removeChild ().
Ou si vous utilisez le framework jQuery.
la source
Utiliser JQuery est un moyen plus joli, plus court et plus intelligent de le faire!
la source
Cela peut être utilisé pour effacer les options:
la source
Faites marche arrière. La raison est que la taille diminue après chaque suppression.
la source
J'espère que ce code vous aidera
la source
Je pense que c'est le meilleur sol. est
la source
Les solutions les plus simples sont les meilleures, il vous suffit donc de:
la source
Les éléments doivent être supprimés à l'envers, sinon cela provoquera une erreur. En outre, je ne recommande pas simplement de définir les valeurs sur
null
, car cela peut provoquer un comportement inattendu.Ou si vous préférez, vous pouvez en faire une fonction:
la source
la source
Le code de la réponse ci-dessus nécessite une légère modification pour supprimer la liste complète, veuillez vérifier ce morceau de code.
actualiser la longueur et il supprimera toutes les données de la liste déroulante. J'espère que cela aidera quelqu'un.
la source
la source
Si vous devez prendre en charge IE et que vous avez plus de 100 éléments dans votre liste de sélection, je vous recommande fortement d'envisager de remplacer la sélection par une fonction comme celle-ci:
Le paramètre select doit être l'élément issu d'un appel jquery selector ou document.getElementBy. Le seul inconvénient est que vous perdez les événements que vous aviez câblés à la sélection, mais vous pouvez facilement les rattacher lorsqu'ils sont renvoyés hors de la fonction. Je travaillais avec une sélection qui avait ~ 3k éléments et il faudrait 4 secondes sur IE9 pour effacer la sélection afin que je puisse la mettre à jour avec le nouveau contenu. Presque instantanément le faire de cette façon.
la source
$('#selectbox').replaceWith($('#selectbox')[0].cloneNode(false));
Pour Vanilla JavaScript, il existe un moyen simple et élégant de le faire:
la source
Aujourd'hui, je faisais face au même problème, j'ai fait comme ci-dessous en rechargeant la boîte de sélection. (En clair JS)
la source
la source