在Leaflet弹出窗口中为按钮添加onclick事件

时间:2019-05-08 13:07:38

标签: javascript events button popup leaflet

我目前正在尝试使用Leaflet在弹出窗口中添加按钮。 很好我也想在该按钮上添加一个onclick事件。但这似乎部分起作用。当我将str替换为ID时,该参数会正确发送到load_now()。但是,当我将str设置为参数时,load_now()函数将不会执行。

这是代码中最重要的部分:

function draw(markers, category) {
//alert(category);
  var mymap = ...
  var jArray = markers;
  for(o in jArray){
    //alert(jArray[o].id);
    var trottinette = jArray[o];
    var lat = trottinette.lat;
    var lng = trottinette.lng;
    var id = trottinette.id;
    var plt = trottinette.plt;
    var chg = trottinette.chg;
    var marker = L.marker([lat, lng]).addTo(mymap);
    var str = id + "x" + lat + "x" + lng + "x" + chg;
    if(category=='user'){
      marker.bindPopup("<b>id:" + id + "</b><br>plaintes: "+
        plt + "<br> niveau: " + chg + "/4 ").openPopup();
    }else if(category=='rechargeur'){
      //TODO modifier la DB
      marker.bindPopup("<b>id:" + id + "</b><br>plaintes: "+
        plt + "<br> niveau: " + chg +
        "/4 <br/><input type='submit' value='Load Now' onclick='load_now("+ id +");'/>");
    }
  }
  alert(str);
}
function load_now(str){
//this part doesn't get executed
  alert(str);
  var id = str.split("x");
  var r = confirm("Start load process for scooter " + id[0] + "?");
  if (r == true) {
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.open("GET", "load_scooter_action.php?q=" + str, true);
    xmlhttp.send();
  }
}

您知道我做错了什么吗? 预先感谢

1 个答案:

答案 0 :(得分:0)

str周围缺少双引号,如以下输出所示:

<b>id:595</b><br>plaintes: 0<br> niveau: 4/4 <br/><input type='submit' value='Load Now' onclick='load_now(595x50.8352x4.3669x4);'/>

替换行

  

var str = id + "x" + lat + "x" + lng + "x" + chg;

  

var str = "\"" + id + "x" + lat + "x" + lng + "x" + chg +"\"";

解决了问题。