У меня есть приложение сопоставления, в котором перечислены различные слои карты в меню, причем каждый слой имеет определенное имя класса.Передача переменной javascript функции javascript?
Это имя класса используется, когда пользователь нажимает на имя, чтобы слой можно было добавить или удалить с карты, а также добавить или удалить слой из ключа карты.
Это работает нормально, но я борюсь с включением небольшого креста рядом с именем каждого слоя, чтобы пользователь мог удалить их из ключа карты.
Мой код ниже - я пытаюсь включить функцию OnClick, которая принимает идентификатор слоя и пытается использовать это в функции, но я получаю сообщение об ошибке:
Uncaught Error: Syntax error, unrecognized expression: .icon[object Object]
Поскольку моя переменная теперь объект делать Мне нужно указать lid
по-другому?
HTML, здесь, который показывает вариант списка для слоя, который использует идентификатор класса:
<li class='last layerlist' id='layer63'><a href='#'><i class="fa fa-circle fa-lg iconlayer63"></i><span> Flood Zone 2</span></a></li>
Javascript ниже показывает, что происходит, когда пользователь нажимает на список, он принимает идентификатор, а затем использует это, чтобы получить имя слоя (который совпадает с идентификатором), чтобы скрыть или показать слой в зависимости от того, если она видна:
//Change layer visibility and add/remove from map key
$(".layerlist").click(function() {
var lid = $(this).attr('id');
map.getLayers().forEach(function(layer) {
if (layer.get('name') == lid) {
var visibility = layer.getVisible();
if (visibility == false) {
layer.setVisible(true);
$(".icon" + lid).removeClass("fa-circle").addClass("fa-check-circle");
$("#map-content").append("<p id='" + lid + "key'><a href='#'><i class='fa fa-times-circle' onclick='removeLayer(" + lid + ");'></i></a><img src='img/legend/" + lid + ".png' alt='Layer image'/> " + layer.get('label') + "</p>");
}
if (visibility == true) {
layer.setVisible(false);
$(".icon" + lid).removeClass("fa-check-circle").addClass("fa-circle");
$("#" + lid + "key").remove();
}
}
});
});
//Remove selected layer from map key
function removeLayer(lid) {
lid.setVisible(false);
$(".icon" + lid).removeClass("fa-check-circle").addClass("fa-circle");
$("#" + lid + "key").remove();
}
Можете ли вы привести пример кода HTML, пожалуйста? –
Крышка - это объект, который принуждается к строке, следовательно, [объект объекта], вы можете рассказать больше о крышке? –
удалить слой ожидает объект 'layer', и вы передаете ему строку - это явно не сработает :) – Maverick