Всех приветствую! Не уверена, что мой вопрос 100% относится к данному разделу, но пока решила написать сюда, так как уже который день бьюсь с кодом.
Проблема касается закрытия карточек. Например, когда я пишу adam (или что-то еще) в поиске, нажимаю на Search- открывается карточка с пользователем adam (ну или с тем пользователем, которого ввела). Затем я пишу еще что-то в поиске, опять нажимаю Search и ожидаю, что первая карточка закроется. Но нет- вторая карточка просто открывается под первой, а первая никуда не девается. Есть только предположения, что например можно не добавлять wrapper каждый раз в mainEl, а просто сделать контейнером для карточек. Но так как я совсем новичок, я не могу это сделать технически. Вариант полного очищения, как я поняла не подходит в случае, так как в mainEl есть другие элементы.
Подскажите пожалуйста в каком месте кода и что именно мне надо поменять, чтоб добиться нужного поведения. Самой кажется, что надо что-то менять в функции if (response.ok), но никак не получается сделать то, что надо. А вот сам код:
const mainEl = document.querySelector(".main");
const wrapper = document.createElement("div");
const formEl = document.createElement("form");
formEl.addEventListener("submit", async (e) => {
e.preventDefault();
const inputsValue = Object.fromEntries(new FormData(e.target));
const response = await fetch(`
https://api.github.com/users/${inputsValue.name}`);
if (response.ok) {
const data = await response.json();
wrapper.appendChild(createProfileEl(data));
mainEl.appendChild(wrapper);
inputEl.value = "";
} else {
alert("The user is not found");
}
});
const inputEl = document.createElement("input");
inputEl.classList.add("search-input");
inputEl.setAttribute("name", "name");
const searchButtonEl = document.createElement("button");
searchButtonEl.classList.add("search-button");
searchButtonEl.setAttribute("type", "submit");
searchButtonEl.innerHTML = "Search";
formEl.appendChild(inputEl);
formEl.appendChild(searchButtonEl);
mainEl.appendChild(formEl);
function createProfileEl(profileData) {
const element = document.createElement("div");
element.classList.add("profile");
element.innerHTML = `
<img class="search-image" src=${profileData.avatar_url}></img>
<p class="search-text"><span>Name: </span>${profileData.name || "No info"}</p>
<p class="search-text"><span>City: </span>${
profileData.location || "No info"
}</p>
<p class="search-text"><span>About: </span>${
profileData.bio || "No info"
}</p>
`;
element.appendChild(createDeleteBtnEl());
return element;
}
function createDeleteBtnEl() {
const element = document.createElement("button");
element.classList.add("close-button");
element.innerText = "Close";
element.addEventListener("click", (e) => {
wrapper.innerHTML = "";
});
return element;
}
Скрины:
https://drive.google.com/drive/u/0/f...4cFy4ScxfBsvbg