Dengan javascript vanilla saya ingin mengulang dropdown saya, dan mengubah yang dipilih, dan kemudian mengubah teks yang ditampilkan. Saya sudah memilihnya, tetapi saya tidak mendapatkan nama objek yang benar untuk mengubah optionText? dari barang tersebut.

var textToFind = 'LdapUsers';

var dd = document.getElementById('membershipProvider');
for (var i = 0; i < dd.options.length; i++) {
    if (dd.options[i].text === textToFind) {
        dd.selectedIndex = i;
        i.options.text = "Edgewood Login";  //This is WRONG
        break;
    }
}

Bimbingan dihargai.

0
John Graham 23 Desember 2020, 23:41

3 jawaban

Jawaban Terbaik

Anda dapat menggunakan querySelector dan pemilih untuk mengaksesnya tanpa loop.

v = "222";

selProvider = document.querySelector("#membershipProvider option[value='" + v + "']");

if (selProvider) {
  selProvider.text = "CHANGED!";
  selProvider.selected = true;
}
<select id="membershipProvider">
  <option value='111'>AAA</option>
  <option value='222'>BBB</option>
</select>
1
imvain2 23 Desember 2020, 20:58

Anda perlu mengubah opsi di index. Saat ini Anda sedang mencoba untuk mengubah indeks itu sendiri.

Seharusnya:

dd.options[i].text

Tidak

i.options.text
var textToFind = 'LdapUsers';

var dd = document.getElementById('membershipProvider');
for (var i = 0; i < dd.options.length; i++) {
    if (dd.options[i].text === textToFind) {
        dd.selectedIndex = i;
        dd.options[i].text = "Edgewood Login";  //This is WRONG
        break;
    }
}
<select id="membershipProvider">
  <option value="cifs">CIFS</option>
  <option value="LdapUsers">LdapUsers</option>
  <option value="nfs">NFS</option>
  <option value="test">Test</option>
</select>
0
basic 23 Desember 2020, 20:46

Kamu harus menggunakan

dd.options[i].text = "Edgewood Login";

Seperti ketika memeriksa nilainya

0
Gabriele Petrioli 23 Desember 2020, 20:46