javascript

JavaScript podstawy cz.3 – prompt(), querySelector(), if…else, setTimeout(), transition, isNaN(), addEventListener(), switch

W tym artykule zajmiemy się takimi zagadnieniami jak podstawowe funkcje, instrukcje warunkowe i przełączniki, jakie stosujemy w języku JavaScript. Omówimy więc z przykładami zastosowań, czym są prompt(), querySelector(), if…else, setTimeout(), transition, isNaN(), addEventListener() oraz switch.

Wyświetlanie tekstu na stronie: innerHTML

Kiedy chcemy wyświetlić coś na stronie, używamy metody innerHTML. Pozwala ona wstawić tekst lub kod HTML do elementu. Przykład:

const element = document.querySelector("#suma");
element.innerHTML = 'Wynik: ' + (a + b);

Ten kod znajduje element z id „suma” i wstawia do niego wynik działania.

Pobieranie danych od użytkownika: prompt()

Zajmiemy się teraz funkcją prompt(), która pozwala na wyświetlenie okna dialogowego, które prosi użytkownika o wpisanie danych. Zwraca tekst, więc często używamy parseInt(), aby zamienić ten tekst na liczbę:

let a = parseInt(prompt('Podaj liczbę a'));
let b = parseInt(prompt('Podaj liczbę b'));

Zapisywanie wyników w zmiennych: let i const

W JavaScript używamy let lub const, aby tworzyć zmienne oraz stałe. let pozwala na zmianę wartości zmiennej, natomiast const oznacza, że wartość nie będzie mogła zostać zmieniona.

Przykład:

let a = 5; // zmienna, którą możemy zmieniać
const element = document.querySelector("#wynik"); // stała, której wartości nie zmieniamy

Znajdowanie elementów na stronie: querySelector()

Aby JavaScript mógł „porozumiewać się” z HTML, musimy znaleźć odpowiednie elementy. Do tego służy querySelector(). Na przykład:

const element = document.querySelector("#suma");

Tutaj wybieramy element z id „suma” z dokumentu HTML. Pamiętajcie, że różnica polega na tym, że selektor w JavaScript oznaczamy poprzedzając jego nazwę znakiem #, natomiast w HTML zawsze odnosi się właśnie do elementu oznaczonego jako id, w tym przypadku id="suma"

Operacje matematyczne

JavaScript obsługuje podstawowe operacje matematyczne, takie jak dodawanie (+), odejmowanie (-), mnożenie (*) i dzielenie (/). Możemy także podnosić liczby do potęgi za pomocą **:

let wynik = a + b; // dodawanie
let potega = a ** b; // potęgowanie

Operacje matematyczne w JavaScript obejmują podstawowe działania, takie jak dodawanie i mnożenie, ale także bardziej zaawansowane operacje, które mogą być przydatne w różnych sytuacjach. Poniżej znajdziesz tabelę przedstawiającą wszystkie możliwe operacje matematyczne w JavaScript:

Operacja Opis Przykład Wynik
Dodawanie (+) Dodaje dwie liczby 5 + 3 8
Odejmowanie (-) Odejmuje jedną liczbę od drugiej 10 - 4 6
Mnożenie (*) Mnoży dwie liczby 6 * 2 12
Dzielenie (/) Dzieli jedną liczbę przez drugą 15 / 3 5
Reszta z dzielenia (%) Zwraca resztę z dzielenia dwóch liczb 10 % 3 1
Potęgowanie (**) Podnosi liczbę do potęgi 2 ** 3 8
Przypisanie dodawania (+=) Dodaje i przypisuje wynik let a = 5; a += 3; a = 8
Przypisanie odejmowania (-=) Odejmuje i przypisuje wynik let a = 10; a -= 4; a = 6
Przypisanie mnożenia (*=) Mnoży i przypisuje wynik let a = 6; a *= 2; a = 12
Przypisanie dzielenia (/=) Dzieli i przypisuje wynik let a = 15; a /= 3; a = 5
Zaokrąglenie w dół (Math.floor()) Zaokrągla liczbę w dół Math.floor(4.7) 4
Zaokrąglenie w górę (Math.ceil()) Zaokrągla liczbę w górę Math.ceil(4.1) 5
Zaokrąglenie (Math.round()) Zaokrągla liczbę do najbliższej całości Math.round(4.5) 5
Pierwiastek kwadratowy (Math.sqrt()) Zwraca pierwiastek kwadratowy Math.sqrt(16) 4
Wartość bezwzględna (Math.abs()) Zwraca wartość bezwzględną liczby Math.abs(-5) 5
Losowa liczba (Math.random()) Generuje losową liczbę z przedziału (0, 1) Math.random() np. 0.678
Maksimum (Math.max()) Zwraca największą liczbę z podanych Math.max(5, 10, 15) 15
Minimum (Math.min()) Zwraca najmniejszą liczbę z podanych Math.min(5, 10, 15) 5

Wyjaśnienie

  • Podstawowe operacje (+, -, *, /) są intuicyjne i odpowiadają tradycyjnym działaniom matematycznym.
  • Reszta z dzielenia (%) przydaje się np. przy sprawdzaniu parzystości liczby (liczba % 2).
  • Potęgowanie (**) pozwala szybko obliczać potęgi liczb.
  • Metody Math oferują różne funkcje do zaokrąglania liczb (Math.floor(), Math.ceil()) lub generowania losowych liczb (Math.random()).

Każda z tych operacji znajduje swoje zastosowanie w codziennych zadaniach programistycznych, takich jak obliczenia w formularzach, kalkulacje w grach czy przetwarzanie danych liczbowych.

Warunki: if...else

Często musimy podjąć decyzję na podstawie jakiegoś warunku. Na przykład, jeśli wynik jest większy niż 10, zmień kolor tła. Niżej przykład zastosowania if…else, który w prosty sposób pokazuje, co się zadzieje ze stroną, w przypadku spełnienia warunku, lub w przeciwnym wypadku.

if (wynik > 10) {
document.body.style.backgroundColor = 'green';
} else {
document.body.style.backgroundColor = 'red';
}

Wyjaśnijmy teraz jak to się odnosi do dokumentu HTML:

document.body.style.backgroundColor to zapis w JavaScript, który zmienia kolor tła całej strony internetowej.

  • document: odnosi się do bieżącego dokumentu HTML.
  • body: wybiera element <body>, czyli główną część strony.
  • style.backgroundColor: pozwala zmienić właściwość CSS, która określa kolor tła. Możesz przypisać do niej dowolny kolor, np. 'green', 'red', lub kolor w formacie heksadecymalnym ('#ff0000').

Aby odnieść się do innego elementu niż <body>, możesz użyć np. jego identyfikatora (id), klasy (class), lub dowolnego innego selektora za pomocą document.querySelector(). Oto kilka przykładów:

Zmiana tła elementu z id „box”:

document.querySelector('#box').style.backgroundColor = 'yellow';

Zmiana tła elementu z klasą „container”:

document.querySelector('.container').style.backgroundColor = 'blue';

Zmiana tła pierwszego akapitu (<p>):

document.querySelector('p').style.backgroundColor = 'pink';

Zmiana tła wszystkich elementów <div>:

document.querySelectorAll('div').forEach(el => {
el.style.backgroundColor = 'green';
});

Każda z tych metod odnosi się do różnych elementów na stronie, pozwalając na dynamiczne manipulowanie stylem tych elementów.

Wyświetlanie formatowanego tekstu z HTML

Możemy użyć innerHTML do wstawienia nie tylko tekstu, ale i elementów HTML, np. zmieniając styl wyniku:

const wynik = document.querySelector("#suma");
wynik.innerHTML = '<h1 style="color:red;">Wynik dodawania: ' + (a + b) + '</h1>';

Płynne animacje: setTimeout() i transition

Jeśli chcemy, aby coś zmieniało się stopniowo, możemy użyć animacji CSS, a do jej uruchomienia w odpowiednim momencie setTimeout():

const wynik = document.getElementById("wynik");
wynik.innerHTML = 'Suma: ' + suma;
setTimeout(() => {
wynik.style.transition = "font-size 2s";
wynik.style.fontSize = "40px";
}, 100); // opóźnienie w wykonaniu kodu

W powyższym przykładzie, mamy wynik.style.transition ustawiony dla elementu CSS o nazwie font-size, który ma trwać 2s. Oznacza to, że do wpisanego niżej fontsize wynoszącego 40px, czcionka wyniku ma zwiększać się przez 2s, aż uzyska rozmiar 40px.

Sprawdzanie typu danych: isNaN()

Aby upewnić się, że użytkownik wprowadził liczbę, możemy sprawdzić, czy dana wartość nie jest tekstem. Używamy do tego isNaN():

if (isNaN(a)) {
alert("To nie jest liczba!");
}

Kod zadziałą w ten sposób, że sprawdzi wartość liczby a i jeśli nie jest ona liczbą, wyświetli komunikat o błędzie „To nie jest liczba!”.

Zdarzenia i obsługa przycisków: addEventListener()

Możemy uruchomić kod w momencie, gdy użytkownik kliknie przycisk. Aby to zrobić, używamy addEventListener():

W praktyce wygląda to tak, że część kodu JavaScript działa na stronie odrazu po jej załadowaniu, natomiast addEventListener() daje możliwość wywołania kodu JavaScript dopiero, w czasie, kiedy będzie to wymagane. Oto przykład takiego zastosowania:

document.getElementById("przycisk").addEventListener("click", function() {
let a = parseInt(prompt('Podaj a'));
let b = parseInt(prompt('Podaj b'));
document.querySelector("#wynik").innerHTML = 'Wynik: ' + (a + b);
});

Przeanalizujcie poniższy, cały kod strony, zwróćcie uwagę, gdzie znajduje się przycisk (button) i jak się go oznacza, żeby mógł zostać rozpoznany przez JavaScript

<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Kalkulator dodawania</title>
</head>
<body>

<div id="wynik"></div>
<button id="przycisk">Oblicz sumę</button>

<script>
document.getElementById("przycisk").addEventListener("click", function() {
let a = parseInt(prompt('Podaj liczbę a'));
let b = parseInt(prompt('Podaj liczbę b'));
document.querySelector("#wynik").innerHTML = 'Wynik: ' + (a + b);
});
</script>

</body>
</html>

Obsługa różnych operacji: switch

Aby wykonać różne operacje w zależności od wyboru użytkownika, możemy użyć switch:

Switch działa bardzo podobnie w każdym języku, niżej na przykładzie składnia tej instrukcji, w języku JavaScript.

let operacja = prompt('Podaj operację: +, -, *, /');
switch (operacja) {
case '+':
wynik = a + b;
break;
case '-':
wynik = a - b;
break;
case '*':
wynik = a * b;
break;
case '/':
wynik = a / b;
break;
default:
wynik = 'Nieznana operacja';
}

switch pozwala na szybkie sprawdzenie kilku warunków.

Na koniec..

JavaScript daje ogromne możliwości interakcji z użytkownikiem. Dzięki metodom takim jak innerHTML możemy dynamicznie zmieniać zawartość strony, a z użyciem prompt() wprowadzać dane od użytkownika. Dodając do tego warunki, operacje matematyczne oraz zdarzenia jak kliknięcie przycisku, możemy tworzyć proste aplikacje i kalkulatory, które wprowadzają interaktywność na naszej stronie.

Pracując z JavaScriptem, kluczowe jest zrozumienie, w jakich sytuacjach i jak stosować powyższe elementy, aby realizować różnorodne zadania. Mamy nadzieję, że ten artykuł pomoże Ci opanować te podstawy i wykorzystać je w Twoich projektach!