ฉันกำลังพยายามเติมช่องการเลือก HTML จากอาร์เรย์ JavaScript แต่เมื่อฉันรันเพจ คอนโซลของฉันแสดงผลดังต่อไปนี้:
Uncaught TypeError: Cannot read property 'appendChild' of null at hello.html:113
อย่างไรก็ตาม เนื่องจากสร้างโดย JavaScript innerHTML
ฉันจึงไม่สามารถเลือกได้ มีวิธีอื่นในการเลือกสิ่งนี้หรือไม่?
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");
ได้รับการประเมินเพียง หนึ่งครั้ง เมื่อ JS ดำเนินการบรรทัดนี้ ต่อมาในinfo.update()
คุณแทนที่องค์ประกอบนี้ด้วยองค์ประกอบใหม่ (แม้ว่าจะมีรหัสเดียวกัน แต่เป็นองค์ประกอบอื่น) - person connexo   schedule 21.01.2018var parent = document.getElementById("parent");
เท่านี้คุณก็พร้อมแล้ว วิธีนี้จะคืนค่าพฤติกรรมเริ่มต้นของเบราว์เซอร์ในการทำให้องค์ประกอบ id เข้าถึงได้โดย id โดยไม่ต้องประกาศตัวแปรและใช้ document.getElementById - person connexo   schedule 21.01.2018parent.appendChild(child);
จะต้องไม่ถูกลบ - person connexo   schedule 21.01.2018parent.appendChild(child);
นั้น DOM มีองค์ประกอบที่มีid=parent
- person connexo   schedule 21.01.2018parent
ถูกสร้างขึ้นในฟังก์ชันที่ถูกเรียกหลังจากอ้างอิงเท่านั้น แต่ฟังก์ชันยังทำลายรายการลูกๆ ที่เพิ่มในพาเรนต์ด้วย... รายการยาวเกินไป ฉันจะ (โดยสุจริต!) แนะนำให้คุณเริ่มต้นจากศูนย์ - person trincot   schedule 21.01.2018parent
และ for loop ลำดับต่อมา<select>
ก็ยังไม่มีอยู่ ฉันขอแนะนำให้ห่อโค้ดส่วนนั้นไว้ในฟังก์ชันที่เรียกใช้ทันทีที่โหลดหน้าเว็บจนเต็ม คุณสามารถทำเช่นนั้นได้ด้วยdocument.addEventListener
- person rolfv1   schedule 21.01.2018