• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zamykanie tylko jednej karty

Object Storage Arubacloud
0 głosów
74 wizyt
pytanie zadane 1 grudnia 2022 w JavaScript przez el maccho Użytkownik (620 p.)

Witam. Mam problem gdyż po naciśnięciu buttona wyjścia znikają mi wszystkie inne karty. Chciałbym aby usuwała się ta karta na której klikne przycisk wyjścia. Uczę się jeszcze JS więc podpowiedź byłaby mile widziana :D
pozdro

        const actionBtn = document.querySelector("#card1-btn")
        const eeeeeeeee = document.querySelector("#card2-btn")

        const modal = (body = {}) => {
            return `
        <div>
            <button id="close-btn"><ion-icon name="close-outline"></ion-icon></button>
        </div>
        <div class="card-img">
            <img src="https://source.unsplash.com/random/340x220?sig=1" />
        </div>
        <div class="card-info">
            <p class="date" style="color:${body.main_color}">${body.date}</p>
            <p class="card-title">${body.title}</p>
            <p class="card-content">${body.content}</p>
        </div>

        <div class="card-statistics" style="background-color:${body.main_color}">
            <div class="card-read">
                <p id="read">${body.read}</p>
                <span class="info">read</span>
            </div>
            <div class="card-views">
                <p id="views">${body.views}</p>
                <span class="info">views</span>
            </div>
            <div class="card-comments">
                <p id="comments">${body.comments}</p>
                <span class="info">comments</span>
            </div>
        </div>
`
        }

        const createModal = (value) => {
            const card_body = document.createElement('div')
            card_body.className = 'card-body'
            // card_body.style = `box-shadow: ${main_color} 0px 0px 50px, rgba(0, 0, 0, 0.23) 0px 6px 6px;`
            card_body.innerHTML = modal(value)
            document.body.appendChild(card_body)

            const closeButtons = document.querySelectorAll('#close-btn');
            closeButtons.forEach(btn => btn.addEventListener('click', () => {
            const modal = document.querySelector(".card-body");
            modal.remove();
            document.body.style.overflow = "auto";
        }));
        }



        const modal1 = () => {


            createModal({
                    date: "1 week ago",
                    title: "Post Two",
                    content: 'Lorem ipsum description asiojiod jsaiodj ioasj oidsas',
                    read: "6m",
                    views: "5125",
                    comments: "192",
                    main_color: "var(--card-main)"
            });


        };

        const modal2 = () => {


            createModal({
                    date: "5 seconds ago",
                    title: "eeeeeeeeeee",
                    content: 'hdcsadncasjdckjahsdckjhascd',
                    read: "6m",
                    views: "696969",
                    comments: "420",
                    main_color: "var(--qwerty)"
            });


        };


        actionBtn.addEventListener("click", modal1);
        eeeeeeeee.addEventListener("click", modal2);

 

1 odpowiedź

+1 głos
odpowiedź 2 grudnia 2022 przez VBService Ekspert (252,660 p.)
wybrane 3 grudnia 2022 przez el maccho
 
Najlepsza

W przypadku kodu, który zaprezentowałeś możesz użyć np. takiego zapisu

const closeButtons = document.querySelectorAll('#close-btn');
closeButtons.forEach(btn => btn.addEventListener('click', (e) => {
    const modal = e.target.closest('.card-body');
    modal.remove();
}));

document.body.style.overflow = 'auto'  dodaj do css-a, np.

body {
  /* Twój wcześniejszy kod */

  overflow-y: auto;
}

 

mając już "utworzony" card_body

const createModal = (value) => {
  const card_body = document.createElement('div');
  ...

  document.body.appendChild(card_body);

  ...
}

możesz go użyć w zdarzeniu click dla close_button

const createModal = (value) => {
  const card_body = document.createElement('div');
  card_body.classList.add('card-body');
  card_body.innerHTML = modal(value);
  document.body.appendChild(card_body);

  const close_button = card_body.querySelector('#close-btn');
  close_button.addEventListener('click', () => {
    card_body.remove();
  });
}

​​​​​​​

 

 

P.S. Przykładowy nieco inny zapis Twojego kodu smiley.

1
komentarz 3 grudnia 2022 przez el maccho Użytkownik (620 p.)
dziękuję Ci bardzo za pomoc :D pozdrawiam

Podobne pytania

0 głosów
0 odpowiedzi 194 wizyt
0 głosów
1 odpowiedź 324 wizyt
0 głosów
0 odpowiedzi 76 wizyt

92,538 zapytań

141,377 odpowiedzi

319,456 komentarzy

61,923 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...