Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Tworzenie stron WWW Programowanie webowe JavaScript

W języku JavaScript, aby usunąć atrybut z elementu HTML, po uzyskaniu obiektu za pomocą metody getElementById należy użyć

A. metody getAttribute
B. metody removeChild
C. pola innerHTML
D. metody removeAttribute
Metoda removeAttribute jest właściwym wyborem, bo służy dokładnie do usuwania wskazanego atrybutu z elementu DOM. Jeżeli pobierzesz element przez document.getElementById("przycisk"), to otrzymujesz obiekt reprezentujący konkretny element HTML w drzewie dokumentu. Na tym obiekcie możesz wywołać np. element.removeAttribute("disabled"), element.removeAttribute("class") albo element.removeAttribute("title"). W praktyce często używa się tego przy formularzach, gdy po spełnieniu warunku chcesz odblokować pole lub przycisk, np. usunąć atrybut disabled po poprawnym wpisaniu danych. To jest zgodne ze standardowym API DOM i jest czytelne dla innych programistów, a czytelność w JavaScript naprawdę ma znaczenie. Moim zdaniem to jedna z tych metod, które warto zapamiętać „na gotowo”, bo pojawia się często przy dynamicznych stronach. Dla porównania, jeśli chcesz tylko sprawdzić wartość atrybutu, używasz getAttribute("nazwa"), a jeśli chcesz ustawić lub zmienić atrybut, używasz setAttribute("nazwa", "wartość"). Dobra praktyka jest taka, żeby manipulować atrybutami przez metody DOM, zamiast kombinować z tekstem HTML, bo wtedy kod jest bezpieczniejszy, bardziej przewidywalny i mniej podatny na przypadkowe uszkodzenie struktury strony.
W tym pytaniu chodzi o manipulację atrybutami elementu w modelu DOM, czyli o pracę na obiekcie elementu HTML po jego pobraniu przez document.getElementById("id"). Do usunięcia atrybutu nie służy getAttribute, ponieważ ta metoda tylko odczytuje wartość atrybutu. Można jej użyć na przykład do sprawdzenia, czy element ma ustawiony title, href albo data-id, ale samo wywołanie getAttribute("disabled") niczego z dokumentu nie usuwa. To częsty błąd myślowy: nazwa zawiera słowo „attribute”, więc wydaje się, że metoda pasuje do każdej operacji na atrybutach. W DOM API nazwy są jednak dość precyzyjne: get pobiera, set ustawia, remove usuwa. Pole innerHTML też nie jest odpowiednim narzędziem. Ono dotyczy zawartości wewnętrznej elementu, czyli tekstu i znaczników znajdujących się pomiędzy tagiem otwierającym i zamykającym. Zmiana innerHTML może przebudować fragment strony, ale nie jest przeznaczona do usuwania pojedynczego atrybutu z elementu. Z mojego doświadczenia używanie innerHTML do takich drobiazgów często kończy się niepotrzebnym bałaganem, a czasem także problemami bezpieczeństwa, szczególnie gdy wstawiane dane pochodzą od użytkownika. Metoda removeChild działa na węzłach potomnych, czyli usuwa dziecko z elementu, na przykład akapit z kontenera. Nie usuwa atrybutu typu class, disabled czy alt. Jeśli więc mamy element input i chcemy zdjąć z niego disabled, poprawny zapis to input.removeAttribute("disabled"). To jest proste, standardowe i dobrze oddaje intencję kodu.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.