传单标记都具有相同的价值

Leaflet Markers All Have Same Value

本文关键字:单标记      更新时间:2023-09-26

我正在使用Mapbox和Javascript在Leaflet中工作。我知道我问题的根源在于循环内的javascript闭包。我看过所有其他例子,似乎找不到与我相似的例子。

我有一个 for 循环循环遍历我添加的点,但它们最终都是相同的值。

这是添加传单标记,其中包含应该是附加属性的要素

marker.bindPopup(<button class = "trigger" onclick = buttonClick(geojsonFeature) </button> )

这是onclick函数,调用时应显示当时发生的计数,但它显示循环中的最后一个计数

function buttonClick(object){
    alert(object.properties.Count)
}

我尝试过类似的东西:

for (var i = 1; i <= 5; i++) {
    function clickHandler(num) {
        $("#div" + i).click(
            function() {
                alert(num)
            }
        )
    }
    clickHandler(i);

但无济于事。任何帮助将不胜感激!

点击按钮时,geojson功能不是你想象的那样......

因此,您必须将其存储在某个地方,并提供一种在单击按钮时检索它的方法。

像...

//your creation loop
jsonString = JSON.stringify(geojsonFeature); 
marker.bindPopup(<button class = "trigger" data-json = jsonString onclick = buttonClick(this) </button> )
// Note the this operator that will give context when the button is clicked
// end of your creation loop
function buttonClick(object){
    // retrieve button attribute called data-json and make it an object
    feature = JSON.parse(object.getAttribute("data-json"));
    alert(feature.properties.Count)
}