Od jakiego słowa zaczyna się definicja własnej funkcji w JavaScript?
Co wpisujecie w nawiasy okrągłe zaraz po nazwie funkcji?
Do czego służy słowo return wewnątrz funkcji?
Część 1 · Planowanie funkcji
Zanim napiszecie kod: co wchodzi, co robi, co wychodzi
Zanim zaczniecie pisać funkcję, warto rozpisać ją na trzy pytania: co funkcja dostaje (parametry), co z tym robi (kod w środku) i co po sobie zostawia (wynik). To ten sam schemat „maszynki”, co przy funkcjach w PHP.
MDN: Learn_web_development/Core/Scripting/Build_your_own_function, sekcja „The basic function” („We start off with the keyword function... Any parameters we want to give to our function go inside the parentheses, and the code that runs when we call the function goes inside the curly braces”)
Część 2 · Przycisk wywołuje funkcję
onclick: przycisk HTML wywołujący funkcję
<button onclick="add()">Dodaj</button>
Atrybut onclick w znaczniku HTML to najprostszy sposób podpięcia funkcji pod kliknięcie. Nie musicie nic robić w pliku script.js poza napisaniem samej funkcji add() - przeglądarka sama ją wywoła po kliknięciu.
CKE, E.14, wrzesień 2015, zadanie 35 · MDN: Learn_web_development/Core/Scripting/Build_your_own_function, sekcja „Calling the function”
Część 3 · Przykład: dodajemy dwie liczby
Od pól formularza do wyniku w konsoli
page.html:
Pierwsza liczba: <input type="text" id="number1">
Druga liczba: <input type="text" id="number2">
<button onclick="add()">Dodaj</button>
document.getElementById("number1") znajduje pole po jego id i pobiera to, co ktoś w nie wpisał (.value). parseFloat zamienia tekst z pola na liczbę - bez tego "3" + "4" dałoby tekst "34", nie liczbę 7.
Ciekawostka z MDN: znak + w JavaScripcie potrafi sklejać teksty, nie tylko dodawać liczby. Gdy choć jedna strona jest tekstem, druga też zamienia się w tekst - dlatego "2" + 2 daje tekst "22", a nie liczbę 4.
Wartość bezwzględna: liczba ujemna staje się dodatnia
functionabsoluteValue(number) {
if (number < 0) {
number = number * -1;
}
return number;
}
Jedna definicja funkcji, dwa przyciski z różnym argumentem: <button onclick="absoluteValue(-7)"> i <button onclick="absoluteValue(7)">. Dla liczby ujemnej funkcja ją odwraca, dla dodatniej zostawia bez zmian - w obu przypadkach wynik to 7. To się nazywa wartość bezwzględna.
Wzór funkcji zgodny z CKE E.14 styczeń 2017 zad. 35 (slajd „Tak pytają na egzaminie”, tam pod nazwą fun1)
Egzamin E.14
Tak pytają na egzaminie
1.
Fragment kodu w języku JavaScript realizujący dodawanie dwóch liczb ma następującą postać:
Podaj pierwszą liczbę: <input type="text" name="liczba1" />
Podaj drugą liczbę: <input type="text" name="liczba2" />
...
<script type=text/javascript>
function dodaj() {
// ta funkcja realizuje dodawanie// i podaje jego wynik
}
</script>
Aby dodawanie wykonane było po kliknięciu przycisku o nazwie „dodaj”, należy w wykropkowane miejsce wstawić
<button onselect="return dodaj()">dodaj</button>
<button onselect="return dodaj()">oblicz</button>
<button onclick="return oblicz()">dodaj</button>
<button onclick="return dodaj()">dodaj</button>
2.
W języku JavaScript zapisano funkcję.
function fun1(f) {
if (f < 0) f = f * (-1);
return f
}
Ma ona za zadanie
wypisać wartość odwrotną do f.
zwrócić wartość odwrotną do f.
wypisać wartość bezwzględną z f.
zwrócić wartość bezwzględną z f.
CKE, E.14, wrzesień 2015, zadanie 35 · CKE, E.14, styczeń 2017, zadanie 35
Ćwiczenie przy komputerze · 20 minut
Ćwiczenie: przycisk „Dodaj”
Otwórz page.html z poprzednich lekcji (w folderze swojego projektu).
Dodaj dwa pola tekstowe o id="number1" i id="number2" oraz przycisk <button onclick="add()">Dodaj</button>.
W script.js napisz function add(), która odczyta oba pola (document.getElementById(...).value, zamienione przez parseFloat) i wypisze ich sumę w konsoli (console.log).
Sprawdźcie w przeglądarce (F12, konsola): wpiszcie dwie liczby, kliknijcie „Dodaj”, sprawdźcie wynik.
Dla chętnych w domu: dodaj drugi przycisk „Odejmij” i funkcję subtract() działającą na tych samych polach.
Na koniec
Sprawdź się
Co wpisujecie w atrybut onclick znacznika <button>, żeby kliknięcie wywołało waszą funkcję?
Do czego służy document.getElementById("number1") w funkcji add()?
Dlaczego jedna funkcja absoluteValue(number) daje wynik 7 zarówno dla -7, jak i dla 7?
To tyle na dziś - kolejny temat: co widzi funkcja, czyli zmienne lokalne.
Poza szkołą
A jak to wygląda w produkcji?
Na lekcji
W produkcji
Status
Atrybut onclick w HTML
addEventListener("click", ...) w pliku JS
zastępowane
getElementById("number1").value
Frameworki (React, Vue) same synchronizują pole ze zmienną.
rozszerzane
function add() {...}
Funkcja strzałkowa: const add = () => {...}
rozszerzane
Wynik w console.log
Wynik na stronie (zmiana treści elementu) - dział DOM, lekcje 21–25.
zastępowane
MDN: Learn_web_development/Core/Scripting/Events („As we saw in the last example, objects that can fire events have an addEventListener() method, and this is the recommended mechanism for adding event listeners”, „you shouldn't use these [inline event handler attributes] - they are considered bad practice”)