将参数传递给嵌入式href ='javascript:function(“ + param +”);

时间:2019-03-31 15:35:16

标签: javascript jquery html leaflet

我正在尝试在传单弹出窗口中嵌入对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));
			}
		});

1 个答案:

答案 0 :(得分:0)

在代码片段中:

<a href='javascript:getInfoPanelData(" + feature.properties.Code + ");'>

要做要引用feature.properties.Code。但是,不能像在href属性中使用单引号一样在其中插入单引号。您也不能只在其中加上双引号,因为您在字符串中使用了双引号。您需要转义报价,例如:

<a href='javascript:getInfoPanelData(\"" + feature.properties.Code + "\");'>