Aplikacje internetowe Aplikacje internetowe
Podstawy programowania w języku JavaScript Podstawy programowania w języku JavaScript
Roman Simiński
[email protected] www.siminskionline.pl
Tworzenie prostych programów w środowisku przeglądarki
W jaki sposób umieszczany jest kod JS w dokumencie HTML?
W jaki sposób umieszczany jest kod JS w dokumencie HTML?
Kod umieszcza się w obrębie znacznika <script> :
<script>
Kod w języku JavaScript
</script>
Dawniej określało się atrybut type, teraz nie jest to konieczne:
<script type="text/javascript">
Kod w języku JavaScript
</script>
W jaki sposób umieszczany jest kod JS w dokumencie HTML?
W jaki sposób umieszczany jest kod JS w dokumencie HTML?
Przykład:
<script>
alert("Czołem!\nJavaScript wita :)");
</script>
Funkcja alert wyświetla komunikat message w oknie dialogowym wraz z przyciskiem OK. Funkcja alert nie udostępnia rezultatu:
alert( message )
Wygląd okna dialogowego może się różnić w zależności od przeglądarki.
Ćwiczenie: Proszę sprawdzić wygląd okna dialogowego funkcji alert w różnych
przeglądarkach.
Gdzie umieszcza się kod JS w dokumencie HTML?
Gdzie umieszcza się kod JS w dokumencie HTML?
Wersja I: kod w obrębie znacznika <body> :
<!DOCTYPE html>
<html>
<body>
. . .
<script>
<script>
Kod w języku JavaScript
</script>
</script>
. . .
</body>
</html>
Gdzie umieszcza się kod JS w dokumencie HTML?
Gdzie umieszcza się kod JS w dokumencie HTML?
Wersja I, przykład:
<!DOCTYPE html>
<html>
<body>
<h1>Kod JS w sekcji body</h1>
<script>
alert("Czołem!\nJavaScript wita :)");
</script>
</body>
</html>
Tak umieszczony kod wykona się „samoczynnie” w trakcie interpretacji przez przeglądarkę sekcji body.
Tak umieszczony kod wykona się „samoczynnie” w trakcie interpretacji przez przeglądarkę sekcji body.
Uwaga – w niektórych przeglądarkach zawartość sekcji <h1> pojawi się dopiero po zamknięciu okna wyświetlanego funkcją alert.
Uwaga – w niektórych przeglądarkach zawartość sekcji <h1> pojawi się dopiero po
zamknięciu okna wyświetlanego funkcją alert.
Gdzie umieszcza się kod JS w dokumencie HTML?
Gdzie umieszcza się kod JS w dokumencie HTML?
Wersja II: kod w obrębie znacznika <head> :
<!DOCTYPE html>
<html>
<head>
<script>
Kod w języku JavaScript
</script>
</head>
<body>
</body>
</html>
W ten sposób umieszcza się najczęściej kod funkcji.
Gdzie umieszcza się kod JS w dokumencie HTML?
Gdzie umieszcza się kod JS w dokumencie HTML?
Wersja II, przykład:
<!DOCTYPE html>
<html>
<head>
<script>
alert("Czołem!\nJavaScript wita :)");
</script>
</head>
<body>
<h1>Kod JS w sekcji head</h1>
</body>
</html>
Tak umieszczony kod wykona się „samoczynnie” w trakcie interpretacji przez przeglądarkę sekcji head.
Tak umieszczony kod wykona się „samoczynnie” w trakcie
interpretacji przez przeglądarkę sekcji head.
Gdzie umieszcza się kod JS w dokumencie HTML?
Gdzie umieszcza się kod JS w dokumencie HTML?
Wersja III, kod w osobnym pliku:
<!DOCTYPE html>
<html>
<head>
<script src="kodwpliku.js"></script>
</head>
<body>
<h1>Kod JS w sekcji head</h1>
</body>
</html>
<!DOCTYPE html>
<html>
<body>
<h1>Kod JS w sekcji body</h1>
<script src="kodwpliku.js"></script>
</body>
</html>
Kod w sekcji body Kod w sekcji body
Kod w sekcji head
Kod w sekcji head
Dygresja – JavaScript a programowanie zdarzeniowe Dygresja – JavaScript a programowanie zdarzeniowe
Zdarzenie (ang. event) to coś, co może przytrafić się elementowi HTML.
Najczęściej spotykane zdarzenia:
Zdarzenie Opis
onclick Gdy użytkownik kliknie element HTML onchange Gdy element HTML został zmieniony
onmouseover Gdy muszka przemieszcza się nad elementem HTML onmouseout Gdy myszka opuszcza element HTML
onkeydown Gdy użytkownik naciska klawisz klawiaturowy
onload Gdy dokument HTML został załadowany przez przeglądarkę
Ogólna składnia aktywowania kodu JS dla zdarzenia:
<jakiś-znacznik_HTML jakieś-zdarzenie='kod JavaScript'>
<jakiś-znacznik_HTML jakieś-zdarzenie=”kod JavaScript”>
Gdzie umieszcza się kod JS w dokumencie HTML?
Gdzie umieszcza się kod JS w dokumencie HTML?
Wersja IV, kod JS aktywowany zdarzeniowo:
<!DOCTYPE html>
<html>
<body>
<h1>Kod JS w onclick przycisku</h1>
<button onclick="alert('Czołem!\nJavaScript wita :)')">
Kliknij proszę
</button>
</body>
</html>
<!DOCTYPE html>
<html>
<body onload="alert('Czołem!\nJavaScript wita :)')">
<h1>Kod JS w on load sekcji body</h1>
</body>
</html>
Wyprowadzanie informacji wyjściowych Wyprowadzanie informacji wyjściowych
Znane już okienko dialogowe alert:
<!DOCTYPE html>
<html>
<body>
<h1>Kod JS w onclick przycisku</h1>
<button onclick="alert('Czołem!\nJavaScript wita :)')">
Kliknij proszę
</button>
</body>
</html>
Wyprowadzanie informacji wyjściowych Wyprowadzanie informacji wyjściowych
Bezpośrednie pisanie do dokumentu HTML:
<!DOCTYPE html>
<html>
<body>
<h1>Pisanie do dokumentu</h1>
<script>
document.write("<em>Tekst z JS</em><br />");
document.write(2 * 2);
</script>
</body>
</html>
Uwaga – document to obiekt reprezentujący aktualnie załadowany dokument HTML.
Metody tego obiektu mogą być wywoływane z pominięciem jego nazwy.
Uwaga – document to obiekt reprezentujący aktualnie załadowany dokument HTML.
Metody tego obiektu mogą być wywoływane z pominięciem jego nazwy.
document.write("<em>Tekst z JS</em><br />");
Wstawianie danych do elementów HTML Wstawianie danych do elementów HTML
Aby kod JS mógł operować na elementach HTML opracowano DOM – Document Object Model.
HTML DOM jest standardem określającym jak pobierać, zmieniać, dodawać i usuwać elementy z dokumentu HTML załadowanego do przeglądarki.
HTML DOM jest niezależny od środowiska, przeglądarki, języka, pozwala na
dynamiczne modyfikowanie zarówno treści elementów dokumentu HTML jak i ich struktury oraz wyglądu.
HTML DOM pozwala na:
odwoływanie się do elementów HTML jak do obiektów w prog. obiektowym;
dostęp do wszystkich właściwości elementu HTML jak do właściwości;
dostęp do metod oraz zdarzeń związanych z elementem.
Wstawianie danych do elementów HTML Wstawianie danych do elementów HTML
Dostęp do konkretnych, unikatowych elementów HTML uzyskuje się poprzez:
przydzielenie elementowi unikatowego identyfikatora id,
wykorzystanie funkcji getElementById w celu uzyskania referencji do obiektu reprezentującego element HTML w DOM'
Wykorzystanie właściwości innerHTML.
<!DOCTYPE html>
<html>
<body>
<p id="info"></p>
<script>
var paragraf = document.getElementById("info");
paragraf.innerHTML = "Witaj w świecie JavaScript";
</script>
</body>
Pusty paragraf z określonym id Pusty paragraf z określonym id
Pobranie referencji i zapamiętanie w zmienne paragraf Pobranie referencji i zapamiętanie w zmienne paragraf
Wykorzystanie właściwości innerHTML
Wykorzystanie właściwości innerHTML
Wstawianie danych do elementów HTML Wstawianie danych do elementów HTML
Odwołania do elementów HTML można realizować z wykorzystaniem zmiennych referencyjnych:
var paragraf = document.getElementById("info");
paragraf.innerHTML = "Witaj w świecie JavaScript";
lub odwołując się bezpośrednio do referencji, będącej rezultatem funkcji getElementById:
document.getElementById("info").innerHTML = "Witaj w świecie JavaScript";
Wykorzystanie zmiennych referencyjnych pozwala na kontrolę poprawności odwołań:
var paragraf = document.getElementById("inf o");
if(paragraf != null)
paragraf.innerHTML = "Witaj w świecie JavaScript";
else
Wstawianie danych do elementów HTML Wstawianie danych do elementów HTML
Odwołania do elementów HTML można realizować z wykorzystaniem zmiennych referencyjnych:
var paragraf = document.getElementById("info");
paragraf.innerHTML = "Witaj w świecie JavaScript";
lub odwołując się bezpośrednio do referencji, będącej rezultatem funkcji getElementById:
document.getElementById("info").innerHTML = "Witaj w świecie JavaScript";
Wykorzystanie zmiennych referencyjnych pozwala na kontrolę poprawności odwołań:
var paragraf = document.getElementById("inf o");
if(paragraf != null)
paragraf.innerHTML = "Witaj w świecie JavaScript";
else
document.write("Paragraf nie został odnaleziony");
Manipulowanie wyglądem elementów HTML Manipulowanie wyglądem elementów HTML
Obiekty w DOM posiadają szereg właściwości, można nimi dość dowolnie manipulować.
. . .
<p id="info"></p>
<script>
var paragraf = document.getElementById("info");
paragraf.innerHTML = "Paragraf z dynamicznie określoną treścia i wyglądem";
paragraf.style.color = "blue";
paragraf.style.fontFamily = "Arial";
paragraf.style.fontSize = "larger";
</script>
. . .
Tworzenie większego kodu prawie zawsze wymaga użycia funkcji Tworzenie większego kodu prawie zawsze wymaga użycia funkcji
Funkcje to nazwany blok instrukcji, uaktywniany na żądanie.
<!DOCTYPE html>
<head>
<script>
function pokazAlert(komunikat) {
alert(komunikat);
}
</script>
</head>
<html>
<body>
<script>
pokazAlert("Wywołanie funkcji");
</script>
</body>
</html>
Definicja funkcji pokazAlert Definicja funkcji pokazAlert
Wywołanie funkcji pokazAlert
Wywołanie funkcji pokazAlert
Tworzenie większego kodu prawie zawsze wymaga użycia funkcji Tworzenie większego kodu prawie zawsze wymaga użycia funkcji
Przekazywanie parametrów – dwa ważne pojęcia
<!DOCTYPE html>
<head>
<script>
function pokazAlert(komunikat) {
alert(komunikat);
}
</script>
</head>
<html>
<body>
<script>
pokazAlert("Wywołanie funkcji");
</script>
</body>
</html>
Parametr formalny funkcji Parametr formalny funkcji
Parametr aktualny wywołania funkcji
Parametr aktualny wywołania funkcji
Tworzenie większego kodu prawie zawsze wymaga użycia funkcji Tworzenie większego kodu prawie zawsze wymaga użycia funkcji
Przekazywanie parametrów
<!DOCTYPE html>
<head>
<script>
function pokazAlert(komunikat) {
alert(komunikat);
}
</script>
</head>
<html>
<body>
<script>
pokazAlert("Wywołanie funkcji");
</script>
</body>
</html>
komunikat
Wywołanie funkcji
Parametr formalny funkcji Parametr formalny funkcji
Wartość parametru aktualnego
Wartość parametru aktualnego
Przykładowy program Przykładowy program
Należy napisać program przeliczający odległość wyrażoną w milach amerykańskich na kilometry.
<!DOCTYPE html>
<head>
</head>
<html>
<body>
<h1>Przeliczanie mil na kilometry</h1>
<p>Proszę wprowadzić odległość w milach:</p>
<input id="kilometry" type="text"><br />
<button>Przelicz na kilometry</button>
<p id="wynik"></p>
</body>
</html>
Przykładowy program – obsługa zdarzenia onclick Przykładowy program – obsługa zdarzenia onclick
<!DOCTYPE html>
<head>
<script>
function przelicz() {
var odleglosc = document.getElementById("kilometry").value;
document.getElementById("wynik").innerHTML = "Odległość w kilometrach: " + (odleglosc * 1.6);
}
</script>
</head>
<html>
<body>
<h1>Przeliczanie mil na kilometry</h1>
<p>Proszę wprowadzić odległość w milach:</p>
<input id="kilometry" type="text"><br />
<button onclick="przelicz()">Przelicz na kilometry</button>
<p id="wynik"></p>
</body>
Przykładowy program – funkcja przeliczająca Przykładowy program – funkcja przeliczająca
<!DOCTYPE html>
<head>
<script>
function przelicz() {
var odleglosc = document.getElementById("kilometry").value;
document.getElementById("wynik").innerHTML = "Odległość w kilometrach: " + (odleglosc * 1.6);
}
</script>
</head>
<html>
<body>
<h1>Przeliczanie mil na kilometry</h1>
<p>Proszę wprowadzić odległość w milach:</p>
<input id="kilometry" type="text"><br />
<button onclick="przelicz()">Przelicz na kilometry</button>
<p id="wynik"></p>
Wydobycie wartości z elementu kilometry Wydobycie wartości z elementu kilometry
Przeliczenie i wstawienie wyniku do paragrafu wyjściowego
Przeliczenie i wstawienie wyniku do paragrafu wyjściowego
Przykładowy program – walidacja danych Przykładowy program – walidacja danych
function przelicz() {
var odleglosc = document.getElementById("kilometry").value;
if(isNaN(odleglosc) || odleglosc == "")
document.getElementById("wynik").innerHTML = "Błędna odległość";
else
document.getElementById("wynik").innerHTML = "Odległość w kilometrach: "
+ (odleglosc * 1.6);
}
Przykładowy program – zaokrąglenie wyniku Przykładowy program – zaokrąglenie wyniku
function przelicz() {
var odleglosc = document.getElementById("kilometry").value;
if(isNaN(odleglosc) || odleglosc == "")
document.getElementById("wynik").innerHTML = "Błędna odległość";
else {
var wynik = odleglosc * 1.6;
document.getElementById("wynik").innerHTML = "Odległość w kilometrach: "
+ wynik.toFixed(2);
} }
Ćwiczenie: Proszę napisać program przeliczający odległość wyrażoną w kilometrach
na : mile amerykańskie, morskie, cale, jardy, stopy, wiorsty, pacierze... .
Zadaniem skryptu na stronie WWW jest obliczanie, ile średnio litrów paliwa spala pojazd na trasie 100 km.
Wartość ta — zwana dalej średnim spalaniem — obliczana jest na podstawie ilości zużytego przez pojazd paliwa oraz liczby przejechanych kilometrów.
przejechany dystans [km] — ilość paliwa [litry]
100 [km] — x [litry]
spalanie = ( 100 * ilość paliwa ) / przejechany dystans
Program przykładowy – średnie spalanie
Program przykładowy – średnie spalanie
<html>
<head>
</head>
<body>
<h2>Obliczanie średniego spalania na 100 km</h2>
<p>Paliwo : <input type="text" id="p" /> [litry]</p>
<p>Dystans: <input type="text" id="d" /> [kilometry]</p>
<input type="button" value="Oblicz" onclick="spalanie()" />
<p id="w"></p>
</body>
</html>
Komunikacja:
Elementy typu input, z których będą pobrane dane
Elementy typu input, z których będą pobrane dane
Program przykładowy – średnie spalanie
Program przykładowy – średnie spalanie
<html>
<head>
</head>
<body>
<h2>Obliczanie średniego spalania na 100 km</h2>
<p>Paliwo : <input type="text" id="p" /> [litry]</p>
<p>Dystans: <input type="text" id="d" /> [kilometry]</p>
<input type="button" value="Oblicz" onclick="spalanie()" />
<p id="w"></p>
</body>
</html>
<html>
<head>
</head>
<body>
<h2>Obliczanie średniego spalania na 100 km</h2>
<p>Paliwo : <input type="text" id="p" /> [litry]</p>
<p>Dystans: <input type="text" id="d" /> [kilometry]</p>
<input type="button" value="Oblicz" onclick="spalanie()" />
<p id="w"></p>
</body>
</html>
Komunikacja:
Paragraf przewidziany dla wyniku, na starcie pusty
Paragraf przewidziany dla wyniku, na starcie pusty
Program przykładowy – średnie spalanie
Program przykładowy – średnie spalanie
<html>
<head>
</head>
<body>
<h2>Obliczanie średniego spalania na 100 km</h2>
<p>Paliwo : <input type="text" id="p" /> [litry]</p>
<p>Dystans: <input type="text" id="d" /> [kilometry]</p>
<input type="button" value="Oblicz" onclick="spalanie()" />
<p id="w"></p>
</body>
</html>
<html>
<head>
</head>
<body>
<h2>Obliczanie średniego spalania na 100 km</h2>
<p>Paliwo : <input type="text" id="p" /> [litry]</p>
<p>Dystans: <input type="text" id="d" /> [kilometry]</p>
<input type="button" value="Oblicz" onclick="spalanie()" />
<p id="w"></p>
</body>
</html>
Komunikacja:
Funkcja obliczająca średnie spalanie, aktywowana naciśnięciem
przycisku Oblicz
Funkcja obliczająca średnie spalanie, aktywowana naciśnięciem
przycisku Oblicz
Program przykładowy – średnie spalanie
Program przykładowy – średnie spalanie
<head>
<script >
function spalanie() {
var p = document.getElementById("p").value;
var d = document.getElementById("d").value;
var out = document.getElementById( "w" );
if(isNaN( p ) || isNaN( d ) || p === "" || d === "")
out.innerHTML = "Dystans i ilość paliwa muszą być liczbami!";
else {
if(d != 0)
out.innerHTML = "Spalanie: " + (p * 100) / d + " l/100km";
else
out.innerHTML = "Dystans musi być liczba dodatnią!";
} }
</script>
</head>
<head>
<script >
function spalanie() {
var p = document.getElementById("p").value;
var d = document.getElementById("d").value;
var out = document.getElementById( "w" );
if(isNaN( p ) || isNaN( d ) || p === "" || d === "")
out.innerHTML = "Dystans i ilość paliwa muszą być liczbami!";
else {
if(d != 0)
out.innerHTML = "Spalanie: " + (p * 100) / d + " l/100km";
else
out.innerHTML = "Dystans musi być liczba dodatnią!";
} }
</script>
</head>
Pobierz dane jako łańcuchy znaków Pobierz dane jako łańcuchy znaków
Zabezpieczenie przed dzieleniem przez zero, obliczenia, wstawienie
Zabezpieczenie przed dzieleniem przez zero, obliczenia, wstawienie
wyniku do par. wyjściowego
Program przykładowy – średnie spalanie
Program przykładowy – średnie spalanie
function spalanie() {
var p = document.getElementById("p").value;
var d = document.getElementById("d").value;
var out = document.getElementById( "w" );
if(isNaN( p ) || isNaN( d ) || p === "" || d === "")
out.innerHTML = "Dystans i ilość paliwa muszą być liczbami!";
else {
if(d != 0)
out.innerHTML = "Spalanie: " + (p * 100) / d + " l/100km";
else
out.innerHTML = "Dystans musi być liczba dodatnią!";
} }
function spalanie() {
var p = document.getElementById("p").value;
var d = document.getElementById("d").value;
var out = document.getElementById( "w" );
if(isNaN( p ) || isNaN( d ) || p === "" || d === "")
out.innerHTML = "Dystans i ilość paliwa muszą być liczbami!";
else {
if(d != 0)
out.innerHTML = "Spalanie: " + (p * 100) / d + " l/100km";
else
out.innerHTML = "Dystans musi być liczba dodatnią!";
} }
Wynik z wieloma miejscami po przecinku:
Program przykładowy – średnie spalanie
Program przykładowy – średnie spalanie
function spalanie() {
var p = document.getElementById("p").value;
var d = document.getElementById("d").value;
var out = document.getElementById( "w" );
if(isNaN( p ) || isNaN( d ) || p === "" || d === "")
out.innerHTML = "Dystans i ilość paliwa muszą być liczbami!";
else {
if(d != 0) {
var wynik = ( Math.abs( p ) * 100 ) / Math.abs( d );
out.innerHTML = "Spalanie: " + wynik.toFixed( 2 ) + " l/100km";
} else
out.innerHTML = "Dystans musi być liczba dodatnią!";
} }
function spalanie() {
var p = document.getElementById("p").value;
var d = document.getElementById("d").value;
var out = document.getElementById( "w" );
if(isNaN( p ) || isNaN( d ) || p === "" || d === "")
out.innerHTML = "Dystans i ilość paliwa muszą być liczbami!";
else {
if(d != 0) {
var wynik = ( Math.abs( p ) * 100 ) / Math.abs( d );
out.innerHTML = "Spalanie: " + wynik.toFixed( 2 ) + " l/100km";
} else
out.innerHTML = "Dystans musi być liczba dodatnią!";
} }