我正在尝试在传单弹出窗口中嵌入对javascript函数的调用。
我将showPopup()函数绑定到添加到地图的每个功能。想法是,当用户单击该功能时,将出现一个标签为“更多信息...”的href,它将打开一个侧边栏。
我正尝试将功能代码传递到嵌入式'javascript:getInfoPanelData(功能代码在此处,例如 PIPE 作为示例),以了解我正在使用的功能。但是,在Chrome调试器中运行此代码会产生
未捕获的ReferenceError:PIPE的定义为:1:18。
我还尝试在参数周围添加单引号,但这会产生SyntaxError:
输入意外结束(调试器中的getInfoPanelData(“ red x”。
我不确定我是否真的可以做我想做的事情,希望有人可以指出我的错误或可能的选择。
/*** Code that builds the popup ***/
function showPopup(feature, urlString) {
console.info("onEachFeature: " + feature.properties.Code + " | " + feature.properties.NAME);
var pkVal = parseInt(feature.properties.ParkType, 10);
var parkIcon = "nationalpark-40.png";
var retHtml = "<div id='popup' class='popup'>" +
"<h3 align='center'><img src='icons/" + parkIcon + "'/>" + feature.properties.NAME + "</h3>" +
"<p>State: " + feature.properties.State + " | parkCode: " + feature.properties.Code + " | parkType: " + pkVal + "</p>" +
"<p>Home Page: " + "<a href='" + urlString + "' target='_blank'>" + urlString + "</p>" +
"<p><a href='javascript:getInfoPanelData(" + feature.properties.Code + ");'> More Info...</a></p></div>";
console.info("HTML: " + retHtml);
return retHtml;
}
/*** Code that binds the popup to the feature ***/
/* Create our NPS Layer */
var npsCPs = new L.GeoJSON.AJAX("data/NPS_4326_CPs.json", {
pointToLayer: function(feature, latlng) {
return L.marker(latlng, {
icon: npsIcon
});
},
onEachFeature: function(feature, layer) {
var urlStr = "https://www.nps.gov/" + feature.properties.Code + "/index.htm";
layer.bindPopup(showPopup(feature, urlStr));
}
});
答案 0 :(得分:0)
在代码片段中:
<a href='javascript:getInfoPanelData(" + feature.properties.Code + ");'>
您要做要引用feature.properties.Code
。但是,不能像在href
属性中使用单引号一样在其中插入单引号。您也不能只在其中加上双引号,因为您在字符串中使用了双引号。您需要转义报价,例如:
<a href='javascript:getInfoPanelData(\"" + feature.properties.Code + "\");'>