Podczas walidacji strony walidator W3C zgłosił błąd Error: Duplicate ID menu. Co oznacza ten komunikat?
Poprawna jest odpowiedź o powtórzonej wartości atrybutu id. Identyfikator ma wskazywać dokładnie jeden element strony, dlatego specyfikacja HTML wymaga, by każda wartość id występowała w dokumencie tylko raz. Komunikat „Duplicate ID menu” oznacza, że co najmniej dwa elementy mają id="menu".
Skutki są praktyczne: document.getElementById("menu") zwróci tylko pierwszy z nich, a odnośnik #menu przewinie stronę do pierwszego. Do zapamiętania: gdy ten sam wygląd ma dostać wiele elementów, używa się atrybutu class, który może się powtarzać, a w CSS odwołuje się do niego selektorem z kropką, np. .menu.
Walidator wskazuje też numer wiersza z powtórzeniem.
Każda z błędnych odpowiedzi wymyśla regułę, której HTML nie ma. Wartość id nie musi składać się z cyfr - w HTML5 może zawierać litery, cyfry, myślniki i podkreślenia, byle nie miała spacji. id="menu" jest więc poprawnym identyfikatorem, a w praktyce najlepiej, by zaczynał się od litery, bo wtedy łatwiej użyć go w selektorze CSS.
Element może bez problemu mieć jednocześnie id i class, np. <nav id="menu" class="gorne"> - to częsty i zalecany zapis. Wielkość liter w identyfikatorach jest dowolna, choć ma znaczenie: menu i Menu to dwa różne identyfikatory. Klucz do rozwiązania tkwi w słowie „duplicate”, czyli „zdublowany”: walidator informuje, że ten sam identyfikator pojawił się w dokumencie co najmniej dwa razy.
Naprawa jest prosta: zostawić id="menu" jednemu elementowi, a pozostałym nadać inne identyfikatory albo wspólną klasę.