Kode saya berfungsi di IE tetapi terputus di Safari, Firefox, dan Opera. (kejutan besar)
document.getElementById("DropList").options.length=0;
Setelah mencari, saya belajar bahwa itu length=0
yang tidak disukainya.
Saya sudah mencoba ...options=null
dan var clear=0; ...length=clear
dengan hasil yang sama.
Saya melakukan ini ke beberapa objek sekaligus, jadi saya mencari beberapa kode JS ringan.
javascript
html-select
Kirt
sumber
sumber
<option selected>
?? (google taruh kami di sini tetapi tidak ada di sini) ... Lihat document.getElementById ("form1"). reset () solusi nyata.Jawaban:
Anda dapat menggunakan yang berikut ini untuk menghapus semua elemen.
sumber
empty()
, jadi Anda akan melakukannya$("DropList").empty();
Untuk menghapus opsi elemen HTML
select
, Anda dapat menggunakanremove()
metode ini:Penting untuk menghapus
options
mundur; sebagairemove()
metode menata ulangoptions
koleksi. Dengan cara ini, dijamin bahwa elemen yang akan dihapus masih ada!sumber
Jika Anda ingin memiliki skrip yang ringan, gunakan jQuery. Di jQuery, solusi untuk menghapus semua opsi akan seperti:
sumber
for (a in select.options) { select.options.remove(0); }
bekerja dengan baik.$("#droplist").empty();
kode jenis dibandingkan dengan ribuan baris vanilla JS menjadikannya sepadan dengan penambahan jQuery. Jika kita berbicara tentang markup / kosmetik untuk laman web sederhana, Anda 100% benar.Mungkin, bukan solusi terbersih, tetapi jelas lebih sederhana daripada menghapus satu-per-satu:
sumber
Ini cara terbaik:
sumber
while (comboBox.options.length) comboBox.remove(0);
Ini cara yang singkat:
Satu baris, tidak untuk, tanpa JQuery, sederhana.
sumber
sumber
Saya ingin menunjukkan bahwa masalah dalam pertanyaan awal tidak relevan lagi hari ini. Dan bahkan ada versi yang lebih pendek dari solusi itu:
Saya telah menguji bahwa kedua versi berfungsi di Firefox 52, Chrome 49, Opera 36, Safari 5.1, IE 11, Edge 18, versi terbaru Chrome, Firefox, Samsung Internet dan UC Browser di Android, Safari di iPhone 6S, Android 4.2. 2 browser saham. Saya pikir aman untuk menyimpulkan bahwa itu benar-benar kompatibel dengan perangkat apa pun yang ada saat ini, jadi saya merekomendasikan pendekatan ini.
sumber
Ini sedikit modern dan murni JavaScript
document.querySelectorAll('#selectId option').forEach(option => option.remove())
sumber
dengan PrototypeJS :
sumber
Jika Anda menggunakan JQuery dan kontrol pilih Anda memiliki ID "DropList", Anda dapat menghapus opsinya dengan cara ini:
Sebenarnya itu bekerja untuk saya dengan daftar opsi apa saja, seperti datalist.
Semoga ini bisa membantu.
sumber
Perhatikan bahwa pilih dapat memiliki keduanya
- grup pilihan &
- koleksi pilihan
sebagai anak-anaknya.
Begitu,
Metode # 1
Metode # 2
Saya diuji, keduanya bekerja di Chrome.
Saya suka yang sederhana, kuno, metode # 1.
sumber
$select.html('')
Mencoba
Atau mungkin lihat fungsi removeChild ().
Atau jika Anda menggunakan kerangka jQuery.
sumber
Menggunakan JQuery adalah cara yang lebih cantik, lebih pendek & lebih cerdas untuk melakukannya!
sumber
Ini dapat digunakan untuk menghapus opsi:
sumber
Mundur. Alasannya adalah ukuran berkurang setelah setiap penghapusan.
sumber
Semoga kode ini akan membantu Anda
sumber
Saya pikir itu sol terbaik. adalah
sumber
Solusi paling sederhana adalah yang terbaik, jadi Anda hanya perlu:
sumber
Item harus dihapus secara terbalik, jika tidak maka akan menyebabkan kesalahan. Juga, saya tidak merekomendasikan pengaturan nilai
null
, karena hal itu dapat menyebabkan perilaku yang tidak terduga.Atau jika Anda mau, Anda bisa membuatnya berfungsi:
sumber
sumber
Di atas kode jawaban perlu sedikit perubahan untuk menghapus daftar lengkap, silakan periksa bagian kode ini.
menyegarkan panjang dan itu akan menghapus semua data dari daftar drop down. Semoga ini bisa membantu seseorang.
sumber
sumber
Jika Anda harus mendukung IE dan Anda memiliki lebih dari 100 item dalam daftar pilih Anda, saya sangat menyarankan Anda mempertimbangkan untuk mengganti pilih dengan fungsi seperti:
Parameter yang dipilih harus elemen baik dari pemilih jquery atau document.getElementBy panggilan. Satu-satunya downside ke ini adalah bahwa Anda kehilangan acara yang telah ditransfer ke pilih, tetapi Anda dapat dengan mudah memasang kembali mereka karena dikembalikan kembali dari fungsi. Saya sedang bekerja dengan pilih yang memiliki ~ 3rb item dan itu akan memakan waktu 4 detik pada IE9 untuk menghapus pilih sehingga saya dapat memperbaruinya dengan konten baru. Hampir instan melakukannya dengan cara ini.
sumber
$('#selectbox').replaceWith($('#selectbox')[0].cloneNode(false));
Untuk Vanilla JavaScript ada cara sederhana dan elegan untuk melakukan ini:
sumber
Hari ini saya menghadapi masalah yang sama, saya lakukan seperti di bawah ini saat memuat ulang kotak pilih. (Dalam Plain JS)
sumber
sumber