У меня действительно раздражающая проблема с javascript в моем проекте Django.В настоящее время создается веб-приложение, которое считывает данные с датчиков, размещенных в люках для измерения температуры воды.Мы отображаем эти датчики в виде маркеров на Leafletmap с системой трубопроводов между каждым люком.В настоящее время я сохраняю идентификатор датчика как скрытую переменную в каждом люке, а затем собираю их, чтобы построить график D3, отображающий данные о температуре для конкретного люка, по которому щелкнули.
onEachFeature: (feature, layer) => {
for (let i = 0; i < place.length; i++) {
if (place[i].fields.pnamn === feature.properties.pnamn) {
sensorid = place[i].fields.eui;
}
}
var popupText = "<strong>" + feature.properties.pnamn + "<p id='popupText' style='display:none'>" + sensorid + "</p>" + "</strong>";
layer.bindPopup(popupText);
},
[......] }).on('click', onClick).on('popupclose', startZoomer).addTo(map);
Идентификатор ввопрос сенсорид в р-элементе.Он работает должным образом, за исключением крайне раздражающего факта, что вы можете просто щелкнуть по новому люку, чтобы обновить график, не щелкнув дважды по новому или щелкнув в любом месте на карте.
Я фиксирую Sensoridв функции ниже, и именно здесь я считаю, что проблема скрывается.Не могу понять, почему это происходит, и буду признателен за любую помощь в данный момент!
function onClick() {
let id = document.getElementById("popupText").innerText;
urlen = urlen.replace(/([A-Z])\w+/, id);
console.log(id);
console.log(urlen);
var x = document.getElementById("chart-area");
if (x.style.display === "none") {
x.style.display = "block";
} else {
x.style.display = "block";
}
map.scrollWheelZoom.disable();
update();
}
Там, где происходит создание нового идентификатора для обновления графа, это первые 4 строки под инициализацией функции.Остальное для блокировки карты для прокрутки колесика мыши, когда открыто всплывающее окно, чтобы пользователь мог прокручивать график и карту, когда они расположены друг над другом.
Как я уже сказал, это очень раздражает и неприемлемо для менякогда система вынуждена дважды щелкнуть мышью, и если вы не знаете, что это происходит, она может исказить ваше представление, поскольку оно обновляется, если вы просто щелкаете между люками, но вы получаете люк, по которому щелкали до текущего.
Пожалуйста, помогите мне.