Saya mencoba mengisi kotak pilihan HTML dari array JavaScript, namun ketika saya menjalankan halaman saya, konsol saya mengeluarkan yang berikut:
Uncaught TypeError: Cannot read property 'appendChild' of null at hello.html:113
Namun karena dibuat oleh JavaScript innerHTML
saya tidak dapat memilihnya. Apakah ada cara lain untuk memilih ini?
var police_api_dates = ["&date=2017-03",];
var info = L.control();
info.onAdd = function (mymap) {
this._div = L.DomUtil.create('div', 'info');
this.update();
return this._div;
};
info.update = function (properties) {
this._div.innerHTML = '<select id="parent"></select><h4>Highlighted Postcode</h4>' + (properties ?
'<b> Postcode: ' + properties.Name
: 'Hover over a state');
};
var parent = document.getElementById("parent");
for ( var pos = 0; pos < police_api_dates.length; pos++)
{
//create an <option> to add the <select>
var child = document.createElement("option");
//assign values to the <option>
child.textContent = police_api_dates[pos]
child.value = pos;
//attach the mew <option> to the <selection>
parent.appendChild(child);
}
info.addTo(mymap);
var parent = document.getElementById("parent");
hanya dievaluasi sekali ketika JS mengeksekusi baris ini. Nanti diinfo.update()
, Anda mengganti elemen ini dengan elemen baru (walaupun idnya sama, elemennya berbeda). - person connexo   schedule 21.01.2018var parent = document.getElementById("parent");
dan Anda siap melakukannya. Ini mengembalikan perilaku browser default yang membuat elemen id dapat diakses oleh idnya tanpa harus mendeklarasikan variabel dan menggunakan document.getElementById. - person connexo   schedule 21.01.2018parent.appendChild(child);
tidak boleh dihapus. - person connexo   schedule 21.01.2018parent.appendChild(child);
dijalankan, DOM memiliki elemen denganid=parent
. - person connexo   schedule 21.01.2018parent
dibuat dalam fungsi yang hanya dipanggil setelah mereferensikannya, tetapi fungsi tersebut juga menghancurkan setiap anak yang ditambahkan ke induk... daftarnya terlalu panjang. Saya (sejujurnya!) akan menyarankan Anda memulai dari awal. - person trincot   schedule 21.01.2018parent
dan loop for berikutnya diproses,<select>
belum ada. Saya menyarankan untuk membungkus bagian kode itu dalam fungsi yang dipanggil segera setelah halaman dimuat sepenuhnya. Anda dapat melakukannya misalnya dengandocument.addEventListener
. - person rolfv1   schedule 21.01.2018