document.getElementById("paragraf1").innerHTML = wynik; Przedstawiona linia kodu została zapisana w języku
document.getElementById("paragraf1").innerHTML = wynik;Przedstawiona linia kodu została zapisana w języku
A. Python
B. PHP
C. JavaScript
D. C#
Pytanie z egzaminu CKE, czerwiec 2020 (arkusz EE.09-SG-20.06).
Ta linia jest zapisana w języku JavaScript, bo używa obiektu document oraz metody getElementById(), które są typowe dla pracy z DOM, czyli Document Object Model w przeglądarce internetowej. Fragment document.getElementById("paragraf1") wyszukuje element HTML o identyfikatorze id równym paragraf1, a właściwość innerHTML pozwala zmienić jego zawartość. Przypisanie innerHTML = wynik oznacza, że do tego elementu zostanie wstawiona wartość zmiennej wynik, na przykład tekst, liczba albo fragment kodu HTML. W praktyce robi się tak np. przy wyświetlaniu wyniku obliczeń formularza, komunikatu po kliknięciu przycisku albo dynamicznej aktualizacji strony bez jej przeładowania. Moim zdaniem to jeden z najbardziej rozpoznawalnych zapisów JavaScriptu w podstawach webowych. Warto jednak pamiętać o dobrej praktyce: jeśli wstawiamy zwykły tekst od użytkownika, bezpieczniej używać textContent zamiast innerHTML, bo innerHTML interpretuje znaczniki HTML i przy nieostrożnym użyciu może prowadzić do podatności XSS. Standardowo JavaScript działa po stronie klienta w przeglądarce i właśnie tam ma bezpośredni dostęp do obiektu document, czego nie mają typowe programy w C#, PHP czy Pythonie bez dodatkowych bibliotek.
Ten zapis nie pasuje do C#, PHP ani Pythona, mimo że na pierwszy rzut oka widać tu ogólne elementy programowania: nazwę obiektu, wywołanie metody, kropki i operator przypisania. Typowy błąd polega na tym, że ktoś rozpoznaje sam znak równości albo nawiasy i uznaje, że to może być prawie dowolny język. W tym przypadku najważniejszy jest jednak kontekst webowy: document.getElementById(...) oraz innerHTML to mechanizmy związane z DOM w przeglądarce, a więc z JavaScriptem. C# może oczywiście tworzyć aplikacje webowe, na przykład w ASP.NET, ale nie używa bezpośrednio globalnego obiektu document w takim stylu po stronie serwera. PHP również jest mocno związany ze stronami WWW, ale wykonuje się zwykle po stronie serwera i generuje HTML przed wysłaniem go do przeglądarki; nie manipuluje gotowym elementem strony przez document.getElementById bez użycia JavaScriptu. Python też może obsługiwać backend przez Django czy Flask, ale jego składnia i środowisko działania są inne. Z mojego doświadczenia najlepiej patrzeć nie tylko na podobieństwo składni, ale na nazwy API i miejsce wykonania kodu. Tutaj API jednoznacznie wskazuje na JavaScript działający w przeglądarce, bo kod odwołuje się do konkretnego elementu dokumentu HTML i zmienia jego zawartość po stronie użytkownika.