Podstawy programowania Podstawy programowania w j
w języku JavaScript ęzyku JavaScript
Funkcje i programowanie sterowane zdarzeniami
Część trzecia
Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi uważnego w nim uczestnictwa.
Opracowanie to jest chronione prawem autorskim. Wykorzystywanie jakiegokolwiek fragmentu w celach innych niż nauka własna jest nielegalne.
Roman Simiński
roman.siminski@us.edu.pl www.us.edu.pl/~siminski Autor
Kontakt
Zanim zaczniemy — przydatne funkcje obsługi okien dialogowych Zanim zaczniemy — przydatne funkcje obsługi okien dialogowych
alert( "Tu okno powiadomie , naci nij OK" );ń ś alert( "Tu okno powiadomie , naci nij OK" );ń ś
Funkcja alert ( tekst ) wyprowadza okno powiadomienia wyświetlający tekst
i przycisk OK, którym użytkownik zamyka okno.
Zanim zaczniemy — przydatne funkcje obsługi okien dialogowych Zanim zaczniemy — przydatne funkcje obsługi okien dialogowych
if( confirm( "Naci nij OK aby poznać nasz ofert "ś ą ę ) ) document.write( "Zapraszamy do przegl du oferty"ą );
else
document.write( "Szkoda, mo e kiedy indziej"ż );
if( confirm( "Naci nij OK aby poznać nasz ofert "ś ą ę ) ) document.write( "Zapraszamy do przegl du oferty"ą );
else
document.write( "Szkoda, mo e kiedy indziej"ż );
Funkcja confirm ( tekst ) wyprowadza okno powiadomienia wyświetlający tekst oraz przyciski OK i Cancel (Anuluj).
Rezultatem jest true gdy naciśnięto OK, false gdy naciśnięto Cancel.
Zanim zaczniemy — przydatne funkcje obsługi okien dialogowych Zanim zaczniemy — przydatne funkcje obsługi okien dialogowych
var surferName = prompt( "Jak Ci mam nazywać:"ę , "" );
if( surferName != null && surferName != "" )
document.write( "Witaj " + surferName + "!" );
else
document.write( "Witaj nieznajomy!" );
var surferName = prompt( "Jak Ci mam nazywać:"ę , "" );
if( surferName != null && surferName != "" )
document.write( "Witaj " + surferName + "!" );
else
document.write( "Witaj nieznajomy!" );
Funkcja prompt ( tekstPodpowiedzi, tekstDomyślny ) wyprowadza okno wczytywania danych wyświetlające tekstPodpowiedzi oraz pole tekstowe o wartości domyślnej tekstDomyślny.
Rezultatem funkcji jest wprowadzony tekst po naciśnięciu przycisku OK,
wartość null po naciśnięciu przycisku Cancel (Anuluj).
Definiowanie funkcji Definiowanie funkcji
function nazwaFunkcji( parametr1, parametr2, ..., parametrN ) {
kod funkcji }
function nazwaFunkcji( parametr1, parametr2, ..., parametrN ) {
kod funkcji }
function powitanie() {
alert( "Witaj serferze :)" );
}
function powitanie() {
alert( "Witaj serferze :)" );
}
function powitanie() {
var surferName = prompt( "Jak Ci mam nazywać:"ę , "" );
if( surferName != null && surferName != "" )
document.write( "Witaj " + surferName + "!" );
else
document.write( "Witaj nieznajomy!" );
}
function powitanie() {
var surferName = prompt( "Jak Ci mam nazywać:"ę , "" );
if( surferName != null && surferName != "" )
document.write( "Witaj " + surferName + "!" );
else
document.write( "Witaj nieznajomy!" );
}
Proste funkcje bezparametrowe o charakterze procedur Proste funkcje bezparametrowe
o charakterze procedur
Wywoływanie funkcji Wywoływanie funkcji
Funkcje można wywoływać w zwykły sposób — podając nazwę i ewentualne parametry.
powitanie();
powitanie();
Bardzo często wywołanie funkcji jest wynikiem zaistnienia pewnego zdarzenia na stronie.
Funkcja wywoływana po zaistnieniu zdarzenia nazywana jest funkcją obsługi zdarzenia (ang. event handler).
Typowe — ale nie wszystkie — obsługiwane zdarzenia:
onclick, onload,
onmouseover,
onmouseout,
onunload.
Wywoływanie funkcji — obsługa onload Wywoływanie funkcji — obsługa onload
Funkcja obsługi zdarzenia onload jest wywoływana po kompletnym
załadowaniu strony (znacznik body), rysunku (znacznik img) lub ramki (znacznik frame).
<html>
<head>
<script type="text/javascript">
function powitanie() {
var surferName = prompt( "Jak Ci mam nazywać:"ę , "" );
if( surferName != null && surferName != "" )
document.write( "Witaj " + surferName + "!" );
else
document.write( "Witaj nieznajomy!" );
}
</script>
</head>
<body onload = "powitanie()">
</body>
</html>
<html>
<head>
<script type="text/javascript">
function powitanie() {
var surferName = prompt( "Jak Ci mam nazywać:"ę , "" );
if( surferName != null && surferName != "" )
document.write( "Witaj " + surferName + "!" );
else
document.write( "Witaj nieznajomy!" );
}
</script>
</head>
<body onload = "powitanie()">
</body>
</html>
Wywoływanie funkcji — obsługa onunload Wywoływanie funkcji — obsługa onunload
Funkcja obsługi zdarzenia onunload jest wywoływana natychmiast po akcji opuszczenia strony.
<html>
<head>
<script type="text/javascript">
var surferName;
// . . .
function pozegnanie() {
alert( surferName + " pa, pa!" ) }
</script>
</head>
<body onunload = "pozegnanie()">
</body>
</html>
<html>
<head>
<script type="text/javascript">
var surferName;
// . . .
function pozegnanie() {
alert( surferName + " pa, pa!" ) }
</script>
</head>
<body onunload = "pozegnanie()">
</body>
</html>
Wywoływanie funkcji — obsługa onload i onunload Wywoływanie funkcji — obsługa onload i onunload
Teoretycznie to powinno działać — ale nie działa :(
<html>
<head>
<script type="text/javascript">
var surferName = "";
function powitanie() {
surferName = prompt( "Jak Ci mam nazywać:"ę , "" );
if( surferName != null && surferName != "" )
document.write( "Witaj " + surferName + "!" );
else
document.write( "Witaj nieznajomy!" );
}
function pozegnanie() {
alert( surferName + " pa, pa!" ) }
</script>
</head>
<body onload="powitanie()" onunload="pozegnanie()" >
</body>
</html>
<html>
<head>
<script type="text/javascript">
var surferName = "";
function powitanie() {
surferName = prompt( "Jak Ci mam nazywać:"ę , "" );
if( surferName != null && surferName != "" )
document.write( "Witaj " + surferName + "!" );
else
document.write( "Witaj nieznajomy!" );
}
function pozegnanie() {
alert( surferName + " pa, pa!" ) }
</script>
</head>
<body onload="powitanie()" onunload="pozegnanie()" >
</body>
</html>
Wywoływanie funkcji — obsługa onmouseover i onmouseout Wywoływanie funkcji — obsługa onmouseover i onmouseout
Wykorzystanie zdarzeń mouseover i mouseout:
<html>
<head>
<script type="text/javascript">
function darkColor() {
document.bgColor='#9f9f9f';
}
function lightColor() {
document.bgColor='#ffffff';
}
</script>
</head>
<body>
<a href="#" onmouseover="darkColor()" onmouseout="lightColor()">
Ten link jest wyj tkowyą </a>
</body>
</html>
<html>
<head>
<script type="text/javascript">
function darkColor() {
document.bgColor='#9f9f9f';
}
function lightColor() {
document.bgColor='#ffffff';
}
</script>
</head>
<body>
<a href="#" onmouseover="darkColor()" onmouseout="lightColor()">
Ten link jest wyj tkowyą </a>
</body>
</html>
Wywoływanie funkcji — obsługa onmouseover i onmouseout Wywoływanie funkcji — obsługa onmouseover i onmouseout
Mało roztropne wykorzystanie zdarzeń mouseover i mouseout:
<html>
<head>
<script type="text/javascript">
function uwazaj() {
alert( "Je eli tam wejdziesz, Twoje ycie ju nie b dzie takie samo!"ż ż ż ę );
}
function zaluj() {
alert( "Je eli tam nie wejdziesz, b dziesz ałował!"ż ę ż );
}
</script>
</head>
<body>
<a href="#" onmouseover="uwazaj()" onmouseout="zaluj()">
Ten link jest wyj tkowyą </a>
</body>
</html>
<html>
<head>
<script type="text/javascript">
function uwazaj() {
alert( "Je eli tam wejdziesz, Twoje ycie ju nie b dzie takie samo!"ż ż ż ę );
}
function zaluj() {
alert( "Je eli tam nie wejdziesz, b dziesz ałował!"ż ę ż );
}
</script>
</head>
<body>
<a href="#" onmouseover="uwazaj()" onmouseout="zaluj()">
Ten link jest wyj tkowyą </a>
</body>
</html>
Wywoływanie funkcji — obsługa onclick Wywoływanie funkcji — obsługa onclick
<html>
<head>
<script type="text/javascript">
function info() {
alert( "A figa winko, nic tu nie zobaczysz!"ś );
}
</script>
</head>
<body>
<input type="button" name="hl" value="Tylko dla dorosłych!" onclick="info()" />
</body>
</html>
<html>
<head>
<script type="text/javascript">
function info() {
alert( "A figa winko, nic tu nie zobaczysz!"ś );
}
</script>
</head>
<body>
<input type="button" name="hl" value="Tylko dla dorosłych!" onclick="info()" />
</body>
</html>
W przeglądarce użytkownicy zwykle
używają pojedynczego kliknięcia.
Wywoływanie funkcji — ondblclick Wywoływanie funkcji — ondblclick
Uwaga — zdarzenie click zawsze wystąpi przed dblclick.
<html>
<head>
<script type="text/javascript">
function info() {
alert( "A figa winko, nic tu nie zobaczysz!"ś );
}
</script>
</head>
<body>
<p>Dla tego przycisku u yj podwójnego klikni cia:</p>ż ę
<input type="button" name="hl" value="Tylko dla dorosłych!"
ondblclick="info()" />
</body>
</html>
<html>
<head>
<script type="text/javascript">
function info() {
alert( "A figa winko, nic tu nie zobaczysz!"ś );
}
</script>
</head>
<body>
<p>Dla tego przycisku u yj podwójnego klikni cia:</p>ż ę
<input type="button" name="hl" value="Tylko dla dorosłych!"
ondblclick="info()" />
</body>
</html>
Wywoływanie funkcji — obsługa onfocus i onblur Wywoływanie funkcji — obsługa onfocus i onblur
Czyli obsługa złapania i zgubienia „fokusa”:
<html>
<head>
<script type="text/javascript">
function inColor() {
document.bgColor='#5f5f5f';
}
function outColor() {
document.bgColor='#ffffff';
}
</script>
</head>
<body>
<input type="text" id="test" onfocus="inColor()" onblur="outColor()" />
</body>
</html>
<html>
<head>
<script type="text/javascript">
function inColor() {
document.bgColor='#5f5f5f';
}
function outColor() {
document.bgColor='#ffffff';
}
</script>
</head>
<body>
<input type="text" id="test" onfocus="inColor()" onblur="outColor()" />
</body>
</html>
Wywoływanie funkcji — obsługa onfocus i onblur Wywoływanie funkcji — obsługa onfocus i onblur
Wykorzystując onblur można np. weryfikować dane, tutaj jedynie ostrzeżenie:
<html>
<head>
<script type="text/javascript">
function outInfo() {
alert( "Je eli u yłe innych liter ni du e, to masz problem."ż ż ś ż ż );
}
</script>
</head>
<body>
Napisz du ymi literami<br />ż
<input type="text" id="test1" onblur="outInfo()" /><br />
<input type="text" id="test2" onblur="outInfo()" />
</body>
</html>
<html>
<head>
<script type="text/javascript">
function outInfo() {
alert( "Je eli u yłe innych liter ni du e, to masz problem."ż ż ś ż ż );
}
</script>
</head>
<body>
Napisz du ymi literami<br />ż
<input type="text" id="test1" onblur="outInfo()" /><br />
<input type="text" id="test2" onblur="outInfo()" />
</body>
</html>
Zdarzenia sterowane czasem — setTimeout i clearTimeout Zdarzenia sterowane czasem — setTimeout i clearTimeout
JavaScript pozwala na asynchroniczne wykonywanie wskazanego kodu po upływie zadanego czasu. Służą do tego funkcje:
setTimeout() —
wykonuje wskazany kod JavaScript po upłynięciu zadanego czasu;
clearTimeout()
— anulowanie ustawień określonych funkcją
setTimeout().
Funkcja
setTimeout()wykonuje przypisaną jej akcję tylko raz. Forma wywołania:
var timeObject = setTimeout( "kod w j zyku JavaScript", czas_w_milisekundach );ę var timeObject = setTimeout( "kod w j zyku JavaScript", czas_w_milisekundach );ę
Funkcja
clearTimeout()zeruje ostawienia dla obiektu będącego rezultatem funkcji
setTimeout():
clearTimeout( timeObject );
clearTimeout( timeObject );
Zdarzenia sterowane czasem — setTimeout i clearTimeout, przykład 1 Zdarzenia sterowane czasem — setTimeout i clearTimeout, przykład 1
<html>
<head>
<script type="text/javascript">
function odliczanie() {
var timeoutObject = setTimeout( 'alert( "Czas min ł" )'ą , 5000 );
}
</script>
</head>
<body onload="odliczanie()">
<p>Masz 5 sekund na podj cie decyzji!</p>ę </body>
</html>
<html>
<head>
<script type="text/javascript">
function odliczanie() {
var timeoutObject = setTimeout( 'alert( "Czas min ł" )'ą , 5000 );
}
</script>
</head>
<body onload="odliczanie()">
<p>Masz 5 sekund na podj cie decyzji!</p>ę </body>
</html>
Zdarzenia sterowane czasem — setTimeout i clearTimeout, przykład 2 Zdarzenia sterowane czasem — setTimeout i clearTimeout, przykład 2
<script type="text/javascript">
var timeoutObject;
var sek = 0;
function start() {
document.getElementById( "txt" ).value = sek++;
timeoutObject = setTimeout( "start()", 1000 );
}
function stop() {
clearTimeout( timeoutObject );
}
function zeruj() {
document.getElementById( "txt" ).value = sek = 0;
}
</script>
. . .
<h1>Głupiutki stoper</h1>
<input type="button" value="Start" onclick="start()" />
<input type="text" id="txt" />
<input type="button" value="Stop" onclick="stop()" />
<input type="button" value="Zeruj" onclick="zeruj()" />
. . .
<script type="text/javascript">
var timeoutObject;
var sek = 0;
function start() {
document.getElementById( "txt" ).value = sek++;
timeoutObject = setTimeout( "start()", 1000 );
}
function stop() {
clearTimeout( timeoutObject );
}
function zeruj() {
document.getElementById( "txt" ).value = sek = 0;
}
</script>
. . .
<h1>Głupiutki stoper</h1>
<input type="button" value="Start" onclick="start()" />
<input type="text" id="txt" />
<input type="button" value="Stop" onclick="stop()" />
<input type="button" value="Zeruj" onclick="zeruj()" />
. . .
Zdarzenia sterowane czasem — setTimeout i clearTimeout Zdarzenia sterowane czasem — setTimeout i clearTimeout
setInterval() —
wykonuje wskazany kod JavaScript po upłynięciu zadanego czasu;
clearInterval()
— anulowanie ustawień określonych funkcją
setInterval().
Funkcja
setTimeout()wykonuje przypisaną jej akcję tylko raz. Forma wywołania:
JavaScript pozwala na asynchroniczne, wielokrotne wykonywanie wskazanego kodu po upływie zadanego czasu. Służą do tego funkcje:
var timeObject = setInterval( "kod w j zyku JavaScript", czas_w_milisekundach );ę var timeObject = setInterval( "kod w j zyku JavaScript", czas_w_milisekundach );ę
Funkcja
clearInterval()zeruje ostawienia dla obiektu będącego rezultatem funkcji
setInterval():
clearInterval( timeObject );
clearInterval( timeObject );
Zdarzenia sterowane czasem — setInterval i clearInterval, przykład Zdarzenia sterowane czasem — setInterval i clearInterval, przykład
<script type="text/javascript">
var timeoutObject;
var sek = 0;
function display() {
document.getElementById( "txt" ).value = sek++;
}
function start() {
display();
timeoutObject = setInterval( "display()", 1000 ) }
function stop() {
clearInterval( timeoutObject );
}
function zeruj() {
document.getElementById( "txt" ).value = sek = 0;
}
</script>
. . .
<h1>Głupiutki stoper</h1>
<input type="button" value="Start" onclick="start()" />
<input type="text" id="txt" />
<input type="button" value="Stop" onclick="stop()" />
<input type="button" value="Zeruj" onclick="zeruj()" />
. . .
<script type="text/javascript">
var timeoutObject;
var sek = 0;
function display() {
document.getElementById( "txt" ).value = sek++;
}
function start() {
display();
timeoutObject = setInterval( "display()", 1000 ) }
function stop() {
clearInterval( timeoutObject );
}
function zeruj() {
document.getElementById( "txt" ).value = sek = 0;
}
</script>
. . .
<h1>Głupiutki stoper</h1>
<input type="button" value="Start" onclick="start()" />
<input type="text" id="txt" />
<input type="button" value="Stop" onclick="stop()" />
<input type="button" value="Zeruj" onclick="zeruj()" />
. . .