Aby w skrypcie JavaScript pobrać od użytkownika dane, można posłużyć się oknem generowanym za pomocą funkcji
A.
prompt()
B.
confirm()
C.
document.write()
D.
alert()
Pytanie z egzaminu CKE, styczeń 2024 (arkusz EE.09-SG-24.01).
Funkcja prompt() jest właściwym wyborem, gdy w prostym skrypcie JavaScript chcemy pobrać od użytkownika jakąś wartość przez okno dialogowe przeglądarki. Po jej wywołaniu przeglądarka pokazuje małe okno z komunikatem oraz polem tekstowym, do którego użytkownik może coś wpisać. Wynik działania prompt() można przypisać do zmiennej, na przykład: let imie = prompt('Podaj swoje imię');. To jest właśnie kluczowa różnica: ta funkcja nie tylko coś pokazuje, ale też zwraca dane wprowadzone przez użytkownika. Jeśli użytkownik kliknie Anuluj, zwykle otrzymamy wartość null, więc w praktycznym kodzie warto to sprawdzać. Moim zdaniem to dobra funkcja do nauki podstaw interakcji w JavaScript, ale w profesjonalnych stronach częściej stosuje się formularze HTML i obsługę zdarzeń, bo są wygodniejsze, dostępniejsze i lepiej pasują do zasad UX. Mimo to prompt() nadal dobrze pokazuje mechanizm: program pyta, użytkownik odpowiada, a skrypt może dalej przetwarzać wpisany tekst, np. wyświetlić powitanie albo przekonwertować dane na liczbę funkcją Number().
W tym pytaniu łatwo pomylić różne funkcje okien dialogowych i operacje wykonywane na dokumencie, bo wszystkie mogą coś pokazać użytkownikowi w przeglądarce. Trzeba jednak patrzeć nie tylko na to, czy pojawia się komunikat, ale czy użytkownik może wprowadzić dane i czy skrypt te dane potem otrzyma. Funkcja alert() służy wyłącznie do wyświetlania informacji. Pokazuje komunikat i przycisk OK, ale nie daje pola tekstowego, więc nie nadaje się do pobierania imienia, wieku czy innej wartości. Funkcja confirm() też tworzy okno dialogowe, ale jej zadanie jest inne: użytkownik wybiera między OK i Anuluj, a skrypt dostaje wartość logiczną true albo false. To przydaje się przy pytaniach typu czy na pewno usunąć rekord, ale nie przy wpisywaniu tekstu. document.write() działa jeszcze inaczej, bo zapisuje treść bezpośrednio do dokumentu HTML. Z mojego doświadczenia jest to metoda raczej szkolna i trzeba z nią uważać, bo użyta po załadowaniu strony może nadpisać dokument. Typowy błąd myślowy polega na tym, że ktoś widzi funkcję związaną z wyświetlaniem czegoś na ekranie i zakłada, że to już jest pobieranie danych. W JavaScript pobieranie danych oznacza, że funkcja zwraca wartość wpisaną przez użytkownika, a wśród podanych możliwości robi to właśnie prompt(). W nowoczesnych aplikacjach webowych częściej wykorzystuje się pola input, formularze, zdarzenia submit i odczyt wartości z DOM, ale zasada pozostaje podobna: dane muszą trafić do zmiennej lub obiektu, żeby program mógł je dalej przetwarzać.