Javascript 带有按钮提示输入的For循环

Javascript 带有按钮提示输入的For循环,javascript,for-loop,leaflet,Javascript,For Loop,Leaflet,我有一个带有按钮的地图,当点击按钮时,它会提示用户输入测量单位。根据用户输入的内容,弹出窗口应显示基于该测量单位(例如英里、公里、公顷)的人口密度 我让它作为一个函数工作,但现在我需要将它转换为for循环(根据家庭作业要求),它不能正常工作。首先,在点击按钮之前,标记就已经显示在地图上了,而最初我是这样做的 “人口密度:“+density[i]”在var弹出窗口下,它正在工作,但仅显示公顷人口密度(来自else语句) var cities=[‘韦恩堡’、‘印第安纳波利斯’、‘南本德’]; var

我有一个带有按钮的地图,当点击按钮时,它会提示用户输入测量单位。根据用户输入的内容,弹出窗口应显示基于该测量单位(例如英里、公里、公顷)的人口密度

我让它作为一个函数工作,但现在我需要将它转换为for循环(根据家庭作业要求),它不能正常工作。首先,在点击按钮之前,标记就已经显示在地图上了,而最初我是这样做的 “人口密度:“+density[i]”在var弹出窗口下,它正在工作,但仅显示公顷人口密度(来自
else
语句)

var cities=[‘韦恩堡’、‘印第安纳波利斯’、‘南本德’];
var coord=[[41.0793,-85.1394],[39.7684,-86.1581],[41.6764,-86.2520];
var pop=[2659048726801245];
var areaMi=[110.62368.2,41.46];
var areaKm=[286.5954107.38];
var areaHa=[287009635010830];
风险值密度=[];
变量pleaseWork=[];
变量选项={
中间:[40.4864,-86.1336],
缩放:7.4
}
var map=L.map('map',选项);
var tiles=L.tileLayer('http://{s}.tiles.wmflabs.org/bw mapnik/{z}/{x}/{y}.png'{
maxZoom:18,
属性:“©;”
});
地图。添加图层(瓷砖);
var button=document.getElementById(“地图城市”);
addEventListener(“单击”,函数(){
做{
var单位=提示(“输入计算密度的单位”,“输入“英里”、“公里”或“公顷”);
}而(单位=英里和单位=公里和单位=公顷);
请工作。推(单位);
});
对于(变量i=0;i弹出+=”它会在前面显示,因为您并没有真正等待它。您的循环在代码的底部是无事件的。
城市
会被预先填充,即使
请工作
没有。将
i
替换为
i
。我尝试了这个方法,但我的所有标记都消失了,即使在尝试按钮和输入后,它们不会重新出现。嗯,你必须在点击事件结束时调用循环。对不起,你能详细说明一下吗?事实上,我想我已经解决了。谢谢你的帮助
var cities = ['Fort Wayne', 'Indianapolis', 'South Bend'];
var coord = [[41.0793, -85.1394], [39.7684, -86.1581], [41.6764, -86.2520]];
var pop = [265904, 872680, 102245];
var areaMi = [110.62, 368.2, 41.46];
var areaKm = [286.5, 954, 107.38];
var areaHa = [28700, 96350, 10830];
var density = [];
var pleaseWork = [];

var options = {
        center: [40.4864, -86.1336],
        zoom: 7.4
}

var map = L.map('map', options);

var tiles = L.tileLayer('http://{s}.tiles.wmflabs.org/bw-mapnik/{z}/{x}/{y}.png', {
    maxZoom: 18,
    attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
});
map.addLayer(tiles);

var button = document.getElementById("map-cities"); 

button.addEventListener("click", function() {

    do {
        var units = prompt('Enter the units for calculating density', 'Enter "mile", "km" or "hectare".');
    } while (units != "mile" && units != "km" && units != "hectare");

    pleaseWork.push(units);
});

for(var i = 0; i < cities.length; i++) {

    if (pleaseWork[i] === "km") { 
        popup += "<Population density</b>: "+density.push(pop[i]/areaKm[i])}
    else if (pleaseWork[i] === "mile") { 
        popup += "<Population density</b>: "+density.push(pop[i]/areaMi[i])}
    else {popup += "<Population density</b>: "+density.push(pop[i]/areaHa[i])};

    var popup = "<b>"+cities[i]+"</b><br>"
            +"<b>population</b>: "+pop[i].toLocaleString();


    L.marker([coord[i][0],coord[i][1]])
            .addTo(map)   
            .bindPopup(popup);

}