Witam.
Jestem w trakcie tworzenia strony a raczej może bardziej aplikacji która jest kalendarzem. Tworzona jest całkowicie w czystym js z wykorzystaniem ajax, php oraz bazy danych mysql. I mam klika pytań:
1. Cała strona tworzona jest dynamicznie przez js, nie licząc głównego podziału strony - 4 divów. Całość jest oparta na klasach a każdy jeden element tworzony jest za pomocą document.createElement których swoją drogą aktualnie mam już ok 300. No i teraz czy jest to poprawne rozwiązanie kiedy otwierając źródło strony mam jedynie 50 linijek czystego html.
2. Często mam element który się wyświetla pokazując jakieś dane, jest on jednocześnie obiektem czy powinienem go całkowicie usuwać z pamięci a jeżeli tak to w jaki sposób. Czy wystarczy że ustawię mu klasę z display:none;
3. Trochę inny problem. Klika razy mam listę wyboru np. typ wydarzenia. Po kliknięciu chcę klikniętemu typowi nadać klasę a poprzedniemu ją usunąć czy take rozwiązanie jest sensowne:
if(e.target.hasAttribute('data-event-type'))
{
let selectedLi = e.target.parentNode.querySelector('.liSelected');
if(selectedLi !== null)
selectedLi.classList.remove('liSelected');
this.typeEvent = parseInt(e.target.dataset.eventType);
e.target.classList.toggle('liSelected');
}
Całość addEventListener podpięty jest to całego diva z tą listą. Mam jeszcze 2 sposoby na rozwiązanie tego: Pierwszy tworzę tablice wszystkich elementów które są do wyboru i z tego który posiada klasę ją usuwam, lub usuwam z wszystkich za pomocą classList.remove. Drugi przechowuję kliknięty przycisk w zmiennej/właściwości obiektu i w momencie kliknięcia w inny z tego zapisanego usuwam klasę nadpisuję zmienną nowo klikniętym. Czy są to lepsze sposoby?
4. Czy dla takiej list jak w poprzednim pytaniu wartości lepiej jest przechowywać w postaci dataset czy dodać po prostu nową właściwość?