Как можно сбросить значения evt после обработки события?
Для удаления карточки при нажатии на кнопку сначала открывается попап с вопросом подтвердить удаление. При подтверждении нажатием кнопки, на сервер отправляется запрос DELETE (удаляется карточка на сервере) и при положительном ответе срабатывает функция delete(evt) для удаления карточки на сайте. Все работает. Однако видимо браузер хранит в памяти значение клика по evt предыдущие клики и каждый раз, при удалении следующей карточки, на сервер посылается новый запрос + дублируются запросы по уже удаленным карточкам.
Как можно обнулить значение evt после обработки? Метод evt.preventDefault(); почему то не работает..
if (isMyId !== cardData.owner._id) { // это сделано чтобы убрать кнопку удалить с чужих карточек
deleteButton.style.visibility = "hidden";
} else {
deleteButton.addEventListener("click", function (evt) { //вешаю обработчик на кнопку УДАЛИТЬ
openPopup(openPopupCardDeleteElement);//открылся попап
let event = evt; //запоминаю этот клик , тк будет еще один
evt.preventDefault(); //не работает???!!!!
submitCardDelete.addEventListener("click", cardDeleteSubmit); //вешая обработчик на кнопку ПОДТВЕРДИТЬ попапа
function cardDeleteSubmit(evt) {
evt.preventDefault();
httpDeleteMyCard(cardData._id) //отправляет запрос на удаление на сервер
.then(() => {
closePopup(openPopupCardDeleteElement); //закрывает попап
document.removeEventListener("keydown", closeEsc); //снимает слушателя
deleteCard(event); //удаляет карточку на сайте
});
}
});
}
Иерокопус Таманский, нет, я так и не понял. Я ушёл от первого evt и теперь после удаления карточки с сервера и положительного ответа, я удаляю ближайшего родителя к кнопке deleteButton (а не к evt.target). Но проблема осталась, при удалении новой карточки метод "FETCH DELETE" отправляет запрос 2 раза. По новой карточке и по старой. В принципе, новая карточка тоже удаляется, по старой приходит ответ 403 (ее же уже нет на сервере) , но я понимаю, что так быть не должно.. почему уходят 2 запроса, потом 3 и тд - я не пойму...
if (isMyId !== cardData.owner._id) {
deleteButton.style.visibility = "hidden";
} else {
// deleteButton.addEventListener("click", function (evt) { //нажимаем удалить
deleteButton.addEventListener("click", deletBTN);
function deletBTN() {
openPopup(openPopupCardDeleteElement); //открывается попап
submitCardDelete.addEventListener("click", cardDeleteSubmit); //вешаю слушатель на "подтвердить удаление"
function cardDeleteSubmit(evt) {
evt.preventDefault();
httpDeleteMyCard(cardData._id).then(() => { // отправляю запрос на удаление на сервер