Mój kod działa w IE, ale psuje się w Safari, Firefox i Opera. (Wielka niespodzianka)
document.getElementById("DropList").options.length=0;
Po przeszukaniu dowiedziałem się, length=0
że to tego nie lubi.
Próbowałem ...options=null
iz var clear=0; ...length=clear
takim samym wynikiem.
Robię to na wielu obiektach naraz, więc szukam lekkiego kodu JS.
javascript
html-select
Kirt
źródło
źródło
<option selected>
?? (google umieściło nas tutaj, ale go tu nie ma) ... Zobacz document.getElementById ("form1"). reset () prawdziwe rozwiązanie.Odpowiedzi:
Aby wyczyścić wszystkie elementy, możesz użyć następujących poleceń.
źródło
empty()
, więc byś zrobił$("DropList").empty();
Aby usunąć opcje elementu HTML programu
select
, możesz skorzystać zremove()
metody:Ważne jest, aby usunąć
options
tył; ponieważremove()
metoda przestawiaoptions
kolekcję. W ten sposób gwarantuje się, że element do usunięcia nadal istnieje!źródło
Jeśli chcesz mieć lekki skrypt, wybierz jQuery. W jQuery rozwiązaniem do usunięcia wszystkich opcji będzie:
źródło
for (a in select.options) { select.options.remove(0); }
to działa dobrze.$("#droplist").empty();
kodu typu w porównaniu z tysiącami wierszy zwykłego kodu JS sprawia, że warto dodać jQuery. Jeśli mówimy o znacznikach / kosmetykach dla prostej strony internetowej, masz 100% racji.Prawdopodobnie nie jest to najczystsze rozwiązanie, ale jest zdecydowanie prostsze niż usuwanie pojedynczo:
źródło
To najlepszy sposób:
źródło
while (comboBox.options.length) comboBox.remove(0);
To jest krótka droga:
Jedna linia, nie dla, bez JQuery, prosta.
źródło
źródło
Chciałbym zaznaczyć, że problem w pierwotnym pytaniu nie ma już dziś znaczenia. A jest jeszcze krótsza wersja tego rozwiązania:
Przetestowałem, że obie wersje działają w Firefox 52, Chrome 49, Opera 36, Safari 5.1, IE 11, Edge 18, najnowszych wersjach Chrome, Firefox, Samsung Internet i UC Browser na Androidzie, Safari na iPhone 6S, Android 4.2. 2 przeglądarka zapasowa. Myślę, że można bezpiecznie stwierdzić, że jest on całkowicie kompatybilny z dowolnym urządzeniem, które jest obecnie, więc polecam takie podejście.
źródło
To trochę nowoczesny i czysty JavaScript
document.querySelectorAll('#selectId option').forEach(option => option.remove())
źródło
z PrototypeJS :
źródło
Jeśli używasz JQuery i kontrolka wyboru ma identyfikator „DropList”, możesz usunąć jej opcje w ten sposób:
Właściwie to działa dla mnie z każdą listą opcji, taką jak datalist.
Mam nadzieję, że to pomoże.
źródło
Zauważ, że element select może mieć zarówno
kolekcję - optgroup, jak i
- options
jako swoje dzieci.
Więc,
Metoda nr 1
Metoda nr 2
Testowałem, oba działają na Chrome.
Podoba mi się prostsza, staroświecka metoda nr 1.
źródło
$select.html('')
Próbować
A może zajrzyj do funkcji removeChild ().
Lub jeśli używasz frameworka jQuery.
źródło
Używanie JQuery to ładniejszy, krótszy i sprytniejszy sposób na zrobienie tego!
źródło
Można to wykorzystać do wyczyszczenia opcji:
źródło
Idź wstecz. Przyczyną jest zmniejszenie rozmiaru po każdym usunięciu.
źródło
Mam nadzieję, że ten kod ci pomoże
źródło
Myślę, że to najlepszy sol. jest
źródło
Najprostsze rozwiązania są najlepsze, wystarczy więc:
źródło
Elementy należy usunąć w odwrotnej kolejności, w przeciwnym razie spowoduje to błąd. Nie polecam też prostego ustawiania wartości na
null
, ponieważ może to spowodować nieoczekiwane zachowanie.Lub jeśli wolisz, możesz uczynić z tego funkcję:
źródło
źródło
Powyższy kod odpowiedzi wymaga niewielkiej zmiany, aby całkowicie usunąć listę, sprawdź ten fragment kodu.
odświeżyć długość i usunie wszystkie dane z rozwijanej listy. Mam nadzieję, że to komuś pomoże.
źródło
źródło
Jeśli musisz obsługiwać IE i masz więcej niż 100 pozycji na swojej liście wyboru, zdecydowanie zalecamy rozważenie zastąpienia zaznaczenia taką funkcją:
Parametr select powinien być elementem z selektora jquery lub wywołania document.getElementBy. Jedynym minusem jest to, że tracisz zdarzenia, które podłączyłeś do elementu select, ale możesz je łatwo podłączyć ponownie, ponieważ są one zwracane z funkcji. Pracowałem z wyborem, który miał ~ 3k elementów, a wyczyszczenie zaznaczenia zajęłoby 4 sekundy w IE9, aby móc zaktualizować go o nową zawartość. Niemal natychmiast robi to w ten sposób.
źródło
$('#selectbox').replaceWith($('#selectbox')[0].cloneNode(false));
W przypadku Vanilla JavaScript można to zrobić w prosty i elegancki sposób:
źródło
Dzisiaj miałem ten sam problem, co przy przeładowywaniu zaznaczonego pudełka zrobiłem jak poniżej. (W zwykłym JS)
źródło
źródło