Я пытаюсь динамически создавать ссылки href
внутри всплывающих окон Mapbox. При наведении курсора на место, я вернулся массив, например:Петля для создания hrefs из строк в массиве javascript
"Feature","properties":{"field_1":71,"city":"Gothenburg",
"course1":"EMM-Nano","course2":"EMHRPP","course3"
:"MFAMILY","course4":"NA","course5":"NA","course6":"NA",
"course7":"NA","course8":"NA","course9":"NA","course10":"NA",
"course11":"NA","course12":"NA","course13":"NA","course14":"NA",
"course15":"NA","course16":"NA","lon":11.97456,"lat":57.70887,
"website1":"http://www.emm-nano.org/",
"website2":"http://ws1.roehampton.ac.uk/admissions/erasmusmundus/hrp/index.html",
"website3":"http://www.mfamily.eu/",
"website4":"NA","website5":"NA","website6":"NA",
"website7":"NA","website8":"NA","website9":"NA",
"website10":"NA","website11":"NA","website12":"NA",
"website13":"NA","website14":"NA","website15":"NA",
"website16":"NA","code":"Gothenburg","title":"Gothenburg"
Как вы можете видеть, URLs, которые будут служить в качестве HREF являются строками внутри массива. Каждый course
подключен к website
, так что course1
должен быть связан с website1
, course2
должен быть связан с website2
и т. Д. На данный момент, мои всплывающие окна только дисплей курсы и ссылки отдельно, например:
со следующим кодом, чтобы удалить NA
и другие нежелательные значения:
var feature = features[0];
function htmlFromProps(props) {
var html = "";
var i = 0;
for (p in props) {
if (props[p] && props[p] != "null" && props[p] != "NA") {
html += "<div>" + (i === 0 ? "<strong>" : "");
html += props[p];
html += (i++ === 0 ? "</strong>" : "") + "</div>\n";
}
}
return html;
}
//delete unnecessary elements*
delete feature.properties["field_1"];
delete feature.properties["lon"];
delete feature.properties["lat"];
delete feature.properties["code"];
delete feature.properties["title"];
// Populate the popup and set its coordinates
// based on the feature found.
popup.setLngLat(feature.geometry.coordinates)
.setHTML(htmlFromProps(feature.properties))
.addTo(map);
}
Это работает, но ссылки не привязаны к именам course
. Мне интересно показывать только имена курсов, которые включают href
. Есть ли программный способ обойти это в JS без использования CSS? Я исследовал несколько примеров как this one, но он не применим к структуре, как сейчас. Любые советы о том, как решить эту проблему, будут оценены.
Спасибо, это имеет смысл. Есть ли способ поставить ': url' в href? Нужно было бы затем проливать новый массив на ':'? –
href привязан к buildHTML. Это можно изменить любым способом, необходимым для создания требуемого HTML. Ответ был изменен для добавления тега href. – Glenn
По какой-то причине код работает некорректно, если у меня более 10 различных курсов и веб-сайтов. Например, если у меня есть 15 курсов, он будет показывать только «курс11», «курс12», «курс13», «курс14» и «курс15», но не первый. 10. Если у меня есть 20 курсов, это будет покажите 'курс11' -' course19' и пропустите 'курс20', а также первую десятку. Есть ли способ исправить это? –