当单击 map 传单上的标记时,我遇到问题,模式仅显示最后的数据,而不是动态显示。
//Array
var koordinat = [
{id: 1, nama: 'Unesa', lat: -7.313047, lang: 112.727151},
{id: 2, nama: 'Coffe Warsalam', lat: -7.310355, lang: 112.732151},
{id: 3, nama: 'Kejaksaan', lat: -7.313824, lang: 112.733235},
];
//var sikat = [];
for(var i = 0; i < koordinat.length; i++) {
sikat = new L.Marker(new L.latLng(parseFloat([koordinat[i].lat]), parseFloat([koordinat[i].lang]))).addTo(mymap);
sikat.bindPopup(koordinat[i].nama).openPopup();
var namamu= koordinat[i].nama;
sikat.on('click', function() {
//$("#nama").html(koordinat[i].nama);
$('#Modal').modal('show').on('shown.bs.modal', function() {
var modal = $(this)
//Reset Isi Form
$('#info').trigger("reset");
modal.find('#nama').attr("value",namamu);
})
//$("#Modal").modal("show");
});
}
我希望在当前单击的标记上显示数据。谢谢大家...
最佳答案
很可能是一个经典的 JavaScript 作用域问题,即 var
被提升,而开发人员并没有预料到它。
替换var namamu= koordinat[i].nama;
中的var
通过const
:const namamu= koordinat[i].nama;
以便您的 namamu
变量绑定(bind)到内部 for
block 作用域。
关于javascript - Leaflet OnClick 数据不是动态的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60657846/