Który zapis znacznika <div> może wystąpić w dokumencie HTML tylko jeden raz, a ponowne użycie tego zapisu spowoduje wygenerowanie błędów podczas walidacji dokumentu?
W tym pytaniu chodzi o atrybut id, czyli identyfikator elementu w dokumencie HTML. Zapis <div id='identyfikator'> jest poprawną odpowiedzią, bo konkretna wartość id musi być unikalna w całym dokumencie. Innymi słowy: możesz mieć wiele elementów z atrybutem id, ale każdy z nich powinien mieć inną wartość, np. <div id='naglowek'>, <div id='menu'>, <div id='stopka'>. Jeśli drugi raz użyjesz dokładnie tego samego identyfikatora, np. <div id='identyfikator'> w dwóch miejscach, walidator HTML zgłosi błąd lub ostrzeżenie związane z duplikacją identyfikatora. Wynika to ze standardów HTML i ma praktyczne znaczenie. Identyfikator służy często do precyzyjnego wskazania jednego elementu w CSS, np. selektorem #identyfikator, albo w JavaScript, np. przez document.getElementById('identyfikator'). Gdy dwa elementy mają ten sam id, przeglądarka może niby coś wyświetlić, ale kod staje się niejednoznaczny i trudny do utrzymania. Moim zdaniem to jedna z tych zasad, które warto sobie mocno zapamiętać, bo później oszczędza sporo dziwnego debugowania. Klasy mogą się powtarzać, zwykłe divy też, ale ten sam id nie powinien.
W tym zagadnieniu łatwo pomylić atrybut class z atrybutem id, bo oba są używane bardzo często przy stylowaniu CSS i pracy z JavaScriptem. Różnica jest jednak zasadnicza. Klasa nie identyfikuje pojedynczego elementu, tylko opisuje pewną grupę elementów albo ich wspólną cechę. Dlatego zapis <div class='klasa'> może pojawić się w dokumencie wiele razy i jest to całkowicie normalne. W praktyce właśnie po to klasy istnieją: można nadać tę samą klasę wielu przyciskom, kafelkom, akapitom czy sekcjom, a potem wspólnie je ostylować przez selektor .klasa. Podobnie zapis z kilkoma klasami, np. <div class='klasa1 klasa2'>, nie oznacza niczego unikalnego. To tylko przypisanie do elementu dwóch klas jednocześnie, co jest bardzo częstą i dobrą praktyką, szczególnie w większych projektach lub przy metodykach typu BEM czy frameworkach CSS. Zwykły znacznik <div> również może występować dowolną liczbę razy, bo div jest neutralnym kontenerem blokowym, używanym do budowania układu strony. Typowy błąd myślowy polega na tym, że skoro coś ma nazwę, to wydaje się wyjątkowe. W HTML wyjątkowy ma być jednak konkretny identyfikator id, a nie nazwa klasy ani sam typ znacznika. Jeśli powtórzysz tę samą wartość id, walidacja dokumentu może wykazać błąd, a skrypty korzystające z DOM mogą działać nie tak, jak zakładasz. Z mojego doświadczenia takie duplikaty id są małe, ale potrafią zrobić naprawdę irytujący bałagan w projekcie.