Saya ingin javascript ini membuat opsi dari 12 hingga 100 dalam pilih dengan id = "mainSelect", karena saya tidak ingin membuat semua tag opsi secara manual. Bisakah Anda memberi saya beberapa petunjuk? Terima kasih
function selectOptionCreate() {
var age = 88;
line = "";
for (var i = 0; i < 90; i++) {
line += "<option>";
line += age + i;
line += "</option>";
}
return line;
}
javascript
html
jacktheripper
sumber
sumber
mySelect.options[mySelect.options.length] = new Option('Text 1', 'Value1');
Jawaban:
Anda bisa mencapainya dengan
for
loop sederhana :Demo JS Fiddle .
Perbandingan JS Perf dari jawaban saya dan Sime Vidas , berjalan karena saya pikir dia tampak sedikit lebih dimengerti / intuitif daripada milik saya dan saya bertanya-tanya bagaimana itu akan diterjemahkan ke dalam implementasi. Menurut saya, Chromium 14 / Ubuntu 11.04 lebih cepat, browser / platform lain cenderung memiliki hasil yang berbeda.
Diedit dalam menanggapi komentar dari OP:
Demo JS Fiddle .
Dan, akhirnya (setelah cukup lama ...), sebuah pendekatan yang memperluas prototipe
HTMLSelectElement
untuk rantaipopulate()
fungsi, sebagai metode, ke simpul DOM:Demo JS Fiddle .
Referensi:
node.appendChild()
.document.getElementById()
.element.innerHTML
.sumber
innerText
daripadainnerHTML
untuk menghindari kerentanan skrip lintas situs. Bagaimana menurut Anda @DavidThomas?Ini dia:
Demo langsung: http://jsfiddle.net/mwPb5/
Pembaruan: Karena Anda ingin menggunakan kembali kode ini, inilah fungsinya:
Pemakaian:
Demo langsung: http://jsfiddle.net/mwPb5/1/
sumber
Cara yang paling ringkas dan intuitif adalah:
Anda juga dapat membedakan nama dan nilai atau menambahkan item di awal daftar dengan parameter tambahan untuk fungsi yang digunakan:
HTMLSelect Element .add (item [, sebelum]);
Opsi baru (teks, nilai, default Dipilih, dipilih);
sumber
Saya tidak merekomendasikan melakukan manipulasi DOM dalam satu loop - yang bisa mahal dalam dataset besar. Sebaliknya, saya akan melakukan sesuatu seperti ini:
Anda dapat membaca lebih lanjut tentang DocumentFragment di MDN , tetapi inilah intinya:
sumber
Satu hal yang saya hindari adalah melakukan operasi DOM dalam satu lingkaran untuk menghindari pengulangan ulang halaman.
Sunting: menghapus fungsi untuk menunjukkan bagaimana Anda bisa menetapkan html yang telah Anda buat ke elemen pilih lainnya - sehingga menghindari perulangan yang tidak perlu dengan mengulangi panggilan fungsi.
sumber
Lihat: Apa cara terbaik untuk menambahkan opsi ke pilih dari array dengan jQuery?
sumber
Saat Anda membuat
Option
objek baru , ada dua parameter yang harus dilewati: Yang pertama adalah teks yang ingin Anda tampilkan dalam daftar, dan yang kedua nilai yang akan diberikan ke opsi.Anda kemudian cukup menetapkan
Option
objek ini ke elemen array kosong, misalnya:sumber
Tidak ada solusi di atas yang berfungsi untuk saya. Tambahkan metode tidak memberikan kesalahan ketika saya mencoba tetapi tidak menyelesaikan masalah saya. Pada akhirnya saya memecahkan masalah saya dengan properti data select2. Saya menggunakan json dan mendapatkan array dan kemudian memberikannya di select2 elemen initialize. Untuk lebih jelasnya Anda bisa melihat jawaban saya di posting di bawah ini.
https://stackoverflow.com/a/41297283/4928277
sumber
Seringkali Anda memiliki serangkaian catatan terkait, saya merasa mudah dan cukup deklaratif untuk mengisi
select
cara ini:Ini akan menggantikan opsi yang ada.
Anda dapat menggunakannya
selectEl.insertAdjacentHTML('afterbegin', str);
untuk menambahkannya ke atas.Dan
selectEl.insertAdjacentHTML('beforeend', str);
menambahkannya ke bagian bawah daftar.Sintaks yang kompatibel dengan IE11:
sumber