#javascript #jquery #html #leaflet
#javascript #jquery #HTML #брошюра
Вопрос:
Я пытаюсь встроить вызов функции javascript во всплывающую брошюру.
Я привязываю функцию showPopup() к каждому объекту, добавленному на карту. Идея в том, что когда пользователь нажимает на функцию, появляется ссылка href с надписью «Дополнительная информация …», которая должна открыть боковую панель.
Я пытаюсь передать код функций встроенному ‘javascript:getInfoPanelData (код функции здесь, скажем, КАНАЛ в качестве примера), чтобы узнать, с какой функцией я работаю. Однако запуск этого кода в отладчике Chrome приводит к
Неперехваченная ошибка ссылки: КАНАЛ не определен в :1:18.
Я также пытался добавить одинарные кавычки вокруг параметра, но это приводит к ошибке синтаксиса:
Неожиданный конец ввода (getInfoPanelData(«красный крест» в отладчике.
Я не уверен, что действительно могу сделать то, что мне нужно, и надеюсь, что кто-нибудь сможет указать на мою ошибку или возможные альтернативы.
/*** 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:
во фрагменте кода:
<a href='javascript:getInfoPanelData(" feature.properties.Code ");'>
вы действительно хотите процитировать feature.properties.Code
. Однако вы не можете просто поместить туда отдельную кавычку, поскольку вы используете одинарные кавычки для href
свойства. Вы также не можете просто заключить его в двойные кавычки, потому что вы используете двойные кавычки для своей строки. Вам нужно экранировать кавычки, например:
<a href='javascript:getInfoPanelData("" feature.properties.Code "");'>
Комментарии:
1. Это сработало отлично. Я сделал предположение, что, попробовав ‘ в строке, было бы эквивалентно «. С благодарностью.
2. Приношу извинения. Готово! Надеюсь, это поможет и другим!