Javascript 在OnClick中将标记作为变量传递会返回[Object Object],而不是标记对象
我有一个弹出窗体,当点击传单地图中的某些标记时会出现。表单完成后,我希望将输入的字段以及有关标记的一些详细信息发送到单独的函数。我刚开始只是发送标记以测试它,但我遇到了一个问题 但是,当我将标记传递给函数并通过console.log运行它时,它会返回[Object Object],而不是包含纬度、经度和其他细节的标记Javascript 在OnClick中将标记作为变量传递会返回[Object Object],而不是标记对象,javascript,jquery,leaflet,Javascript,Jquery,Leaflet,我有一个弹出窗体,当点击传单地图中的某些标记时会出现。表单完成后,我希望将输入的字段以及有关标记的一些详细信息发送到单独的函数。我刚开始只是发送标记以测试它,但我遇到了一个问题 但是,当我将标记传递给函数并通过console.log运行它时,它会返回[Object Object],而不是包含纬度、经度和其他细节的标记 var newMarker = new VietMarker (map.getCenter(), { draggable: true }); var popupHTML
var newMarker = new VietMarker (map.getCenter(), {
draggable: true
});
var popupHTML = '<form id="add-marker-form">' +
'<div class="form-group">' +
'<label for="marker-title">Title</label>' +
'<input type="text" class="form-control" id="marker-title" required="true">' +
'</div>' +
'<div class="form-group">' +
'<label for="marker-contributor">Contributor</label>' +
'<input type="text" class="form-control" id="marker-contributor">' +
'</div>' +
'<div class="form-group">' +
'<label for="marker-yt-link">Video link</label>' +
'<input type="text" class="form-control" id="marker-yt-link">' +
'</div>' +
'<div class="form-group">' +
'<label for="marker-description">Description</label>' +
'<textarea class="form-control" rows="3" id="marker-description"></textarea>' +
'</div>' +
'<input type="button" id="marker-submit" class="btn btn-primary btn-block" onClick="testMarker(\'' + newMarker + '\');" value="Add to Map" />' +
'</form>';
newMarker.bindPopup(popupHTML).addTo(map);
返回console.log中的[Object Object],不带子字段,而不是标记对象。生成弹出式HTML时,连接运算符(+)使您将
newMarker
变量作为字符串插入。这是个错误。此时,newMarker
被转换为字符串,插入的值是“[Object Object]”
您需要找到另一种方法将标记传递给单击按钮时调用的函数
您可以有一个标记的哈希表:
markers = {};
markers['new'] = new VietMarker (map.getCenter(), {
draggable: true
});
var popupHTML = '<form>.........'+
'<input type="button" id="marker-submit" class="btn '+
'btn-primary btn-block" onClick="testMarker(\'new\');" '+
'value="Add to Map" />';
markers['new'].bindPopup(popupHTML).addTo(map);
function testMarker (id) {
console.log(markers[id]);
}
markers={};
markers['new']=新的VietMarker(map.getCenter(){
德拉格布尔:是的
});
var popupHTML=“……”+
'';
markers['new'].bindPopup(popupHTML).addTo(map);
函数测试标记(id){
日志(标记[id]);
}
生成弹出式HTML时,串联运算符(+)使您将newMarker
变量作为字符串插入。这是个错误。此时,newMarker
被转换为字符串,插入的值是“[Object Object]”
您需要找到另一种方法将标记传递给单击按钮时调用的函数
您可以有一个标记的哈希表:
markers = {};
markers['new'] = new VietMarker (map.getCenter(), {
draggable: true
});
var popupHTML = '<form>.........'+
'<input type="button" id="marker-submit" class="btn '+
'btn-primary btn-block" onClick="testMarker(\'new\');" '+
'value="Add to Map" />';
markers['new'].bindPopup(popupHTML).addTo(map);
function testMarker (id) {
console.log(markers[id]);
}
markers={};
markers['new']=新的VietMarker(map.getCenter(){
德拉格布尔:是的
});
var popupHTML=“……”+
'';
markers['new'].bindPopup(popupHTML).addTo(map);
函数测试标记(id){
日志(标记[id]);
}
我看不到你在调用testMarker
。那只会安慰你传递给它的任何东西。为什么有这样一个函数呢?我用表单末尾的按钮调用testMarker
。语法非常长,所以可以水平滚动。我之所以拥有这个函数,是因为我想知道它是否被传递到了应该传递的位置——在控制台中,我应该能够看到标记的纬度和经度属性——但它只显示了[Object Object],就是这样。试着运行console.log(“某个字符串…”+newMarker+“…另一个字符串”)代码>,您将开始了解问题的原因:-)我没有看到您调用testMarker
。那只会安慰你传递给它的任何东西。为什么有这样一个函数呢?我用表单末尾的按钮调用testMarker
。语法非常长,所以可以水平滚动。我之所以拥有这个函数,是因为我想知道它是否被传递到了应该传递的位置——在控制台中,我应该能够看到标记的纬度和经度属性——但它只显示了[Object Object],就是这样。试着运行console.log(“某个字符串…”+newMarker+“…另一个字符串”)代码>,您将开始了解导致问题的原因:-)