передать параметр во встроенный href = 'javascript: function ("+ param +"); - PullRequest
0 голосов
/ 31 марта 2019

Я пытаюсь встроить вызов функции javascript во всплывающее окно листовки.

Я привязываю функцию showPopup () к каждой функции, добавленной на карту. Идея заключается в том, что когда пользователь нажимает на эту функцию, появляется ссылка с пометкой «Подробнее ...», которая должна открывать боковую панель.

Я пытаюсь передать код функций во встроенный javascript: getInfoPanelData (код функции здесь, например, PIPE ), чтобы узнать, с какой функцией я работаю. Однако выполнение этого кода в отладчике Chrome дает

Uncaught ReferenceError: PIPE не определен в: 1: 18.

Я также пытался добавить одинарные кавычки вокруг параметра, но это приводит к SyntaxError:

Неожиданный конец ввода (getInfoPanelData («красный 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 голосов
/ 31 марта 2019

во фрагменте кода:

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

Вы делаете хотите процитировать feature.properties.Code.Тем не менее, вы не можете просто вставить в него одинарные кавычки, так как вы используете одинарные кавычки для свойства href.Вы также не можете просто поставить двойные кавычки, потому что вы используете двойные кавычки для своей строки.Вам необходимо уйти от кавычек, например:

<a href='javascript:getInfoPanelData(\"" + feature.properties.Code + "\");'>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...