id="liveToastBtn"
x3 - это уже неправильно. Замените id на класс, например, js-toast-trigger. Далее повесьте обработчик на каждый элемент в цикле (да и нечего при каждом клике создавать новый экземпляр всплывающего окна, поэтому вынесем его наружу):const toastTriggers = document.querySelectorAll('.js-toast-trigger');
const toastLiveExample = document.getElementById('liveToast');
const toast = new bootstrap.Toast(toastLiveExample);
if (toastTriggers.length) {
toastTriggers.forEach(function(trigger) {
trigger.addEventListener('click', function() {
toast.show();
});
});
}
import Offcanvas from 'bootstrap/js/dist/offcanvas';
const offcanvasEl = document.getElementById('offcanvas');
const offcanvas = Offcanvas.getOrCreateInstance(offcanvasEl);
const links = offcanvasEl.querySelectorAll('.nav-link');
links.forEach(link => link.addEventListener('click', e => offcanvas.hide()));
(x - min)/(max - min) * 100
дал в комментарии Lynn «Кофеман». // Инициализируем плагин сразу
var clipboard = new ClipboardJS('.btn');
// Назначаем опцию при клике на кнопку, передавая ей требуемый элемент
$('.btn').on('click', function(e) {
clipboard.container = $(e.target).closest('.popup').get(0);
});
var gmaps = (function () {
// some code...
var content = '...<a href="#" onclick="gmaps.getDirections(' + args + ');return false;">...';
var calculateAndDisplayRoute = function() {
//some code...
};
//another code...
return {
getDirections: calculateAndDisplayRoute()
};
}());
var listeners = [];
document.getElementById('myCheckbox').addEventListener('change', function() {
if (this.checked) {
for (var i = 0; i < markers.length; i++) {
var listener = google.maps.event.addListener(markers[i], 'dblclick', function() {
map.setZoom(17);
map.panTo(this.getPosition());
});
listeners.push(listener);
}
} else {
for (var i = 0; i < listeners.length; i++) {
google.maps.event.removeListener(listeners[i]);
}
}
});