JavaScript - Programowanie
Transkrypt
JavaScript - Programowanie
Podstawy programowania w języku języku JavaScript Część trzecia Funkcje i programowanie sterowane zdarzeniami Autor Roman Simiński Kontakt [email protected] www.us.edu.pl/~siminski 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. Dystrybuowanie tego opracowania lub jakiejkolwiek jego części oraz wykorzystywanie zarobkowe bez zgody autora jest zabronione. Podstawy programowania w JavaScript Funkcje i programowanie sterowane zdarzeniami Zanim zaczniemy — przydatne funkcje obsługi okien dialogowych Funkcja alert ( tekst ) wyprowadza okno powiadomienia wyświetlający tekst i przycisk OK, którym użytkownik zamyka okno. alert( alert( "Tu "Tu okno okno powiadomie powiadomieńń,, naci naciśśnij nij OK" OK" ); ); Copyright © Roman Simiński Strona : 2 Podstawy programowania w JavaScript Funkcje i programowanie sterowane zdarzeniami Zanim zaczniemy — przydatne funkcje obsługi okien dialogowych 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. if( if( confirm( confirm( "Naci "Naciśśnij nij OK OK aby aby poznać poznać nasz nasząą ofert ofertęę"" )) )) document.write( document.write( "Zapraszamy "Zapraszamy do do przegl przegląądu du oferty" oferty" ); ); else else document.write( document.write( "Szkoda, "Szkoda, mo możżee kiedy kiedy indziej" indziej" ); ); Copyright © Roman Simiński Strona : 3 Podstawy programowania w JavaScript Funkcje i programowanie sterowane zdarzeniami Zanim zaczniemy — przydatne funkcje obsługi okien dialogowych 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). var var surferName surferName == prompt( prompt( "Jak "Jak Ci Cięę mam mam nazywać:" nazywać:",, "" "" ); ); if( if( surferName surferName != != document.write( document.write( else else document.write( document.write( Copyright © Roman Simiński null null && && surferName surferName != != "" "" )) "Witaj "Witaj "" ++ surferName surferName ++ "!" "!" ); ); "Witaj "Witaj nieznajomy!" nieznajomy!" ); ); Strona : 4 Podstawy programowania w JavaScript Funkcje i programowanie sterowane zdarzeniami Definiowanie funkcji function function nazwaFunkcji( nazwaFunkcji( parametr1, parametr1, parametr2, parametr2, ..., ..., parametrN parametrN )) {{ kod kod funkcji funkcji }} function function {{ alert( alert( }} powitanie() powitanie() "Witaj "Witaj serferze serferze :)" :)" ); ); Proste Proste funkcje funkcje bezparametrowe bezparametrowe oo charakterze charakterze procedur procedur function function powitanie() powitanie() {{ var var surferName surferName == prompt( prompt( "Jak "Jak Ci Cięę mam mam nazywać:" nazywać:",, "" "" ); ); }} if( if( surferName surferName != != document.write( document.write( else else document.write( document.write( Copyright © Roman Simiński null null && && surferName surferName != != "Witaj " + surferName "Witaj " + surferName "" "" )) ++ "!" "!" ); ); "Witaj "Witaj nieznajomy!" nieznajomy!" ); ); Strona : 5 Podstawy programowania w JavaScript Funkcje i programowanie sterowane zdarzeniami 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. Copyright © Roman Simiński Strona : 6 Podstawy programowania w JavaScript Funkcje i programowanie sterowane zdarzeniami 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> <html> <head> <head> <script <script type="text/javascript"> type="text/javascript"> function function powitanie() powitanie() {{ var var surferName surferName == prompt( prompt( "Jak "Jak Ci Cięę mam mam nazywać:" nazywać:",, "" "" ); ); }} if( if( surferName surferName != != document.write( document.write( else else document.write( document.write( null null && && surferName surferName != != "Witaj " + surferName "Witaj " + surferName "" "" )) ++ "!" "!" ); ); "Witaj "Witaj nieznajomy!" nieznajomy!" ); ); </script> </script> </head> </head> <body <body onload onload == "powitanie()"> "powitanie()"> </body> </body> </html> </html> Copyright © Roman Simiński Strona : 7 Podstawy programowania w JavaScript Funkcje i programowanie sterowane zdarzeniami Wywoływanie funkcji — obsługa onunload Funkcja obsługi zdarzenia onunload jest wywoływana natychmiast po akcji opuszczenia strony. <html> <html> <head> <head> <script <script type="text/javascript"> type="text/javascript"> var var surferName; surferName; // // .. .. .. function function {{ alert( alert( }} pozegnanie() pozegnanie() surferName surferName ++ "" pa, pa, pa!" pa!" )) </script> </script> </head> </head> <body <body onunload onunload == "pozegnanie()"> "pozegnanie()"> </body> </body> </html> </html> Copyright © Roman Simiński Strona : 8 Podstawy programowania w JavaScript Funkcje i programowanie sterowane zdarzeniami Wywoływanie funkcji — obsługa onload i onunload Teoretycznie to powinno działać — ale nie działa :( <html> <html> <head> <head> <script <script type="text/javascript"> type="text/javascript"> var var surferName surferName == ""; ""; function function powitanie() powitanie() {{ surferName surferName == prompt( prompt( "Jak "Jak Ci Cięę mam mam nazywać:" nazywać:",, "" "" ); ); }} if( if( surferName surferName != != document.write( document.write( else else document.write( document.write( null null && && surferName surferName != != "Witaj " + surferName "Witaj " + surferName "" "" )) ++ "!" "!" ); ); "Witaj "Witaj nieznajomy!" nieznajomy!" ); ); function function pozegnanie() pozegnanie() {{ alert( alert( surferName surferName ++ "" pa, pa, pa!" pa!" )) }} </script> </script> </head> </head> <body <body onload="powitanie()" onload="powitanie()" onunload="pozegnanie()" onunload="pozegnanie()" >> </body> </body> </html> </html> Copyright © Roman Simiński Strona : 9 Podstawy programowania w JavaScript Funkcje i programowanie sterowane zdarzeniami Wywoływanie funkcji — obsługa onmouseover i onmouseout Wykorzystanie zdarzeń mouseover i mouseout: <html> <html> <head> <head> <script <script type="text/javascript"> type="text/javascript"> function function darkColor() darkColor() {{ document.bgColor='#9f9f9f'; document.bgColor='#9f9f9f'; }} function function lightColor() lightColor() {{ document.bgColor='#ffffff'; document.bgColor='#ffffff'; }} </script> </script> </head> </head> <body> <body> <a <a href="#" href="#" onmouseover="darkColor()" onmouseover="darkColor()" onmouseout="lightColor()"> onmouseout="lightColor()"> Ten Ten link link jest jest wyj wyjąątkowy tkowy </a> </a> </body> </body> </html> </html> Copyright © Roman Simiński Strona : 10 Podstawy programowania w JavaScript Funkcje i programowanie sterowane zdarzeniami Wywoływanie funkcji — obsługa onmouseover i onmouseout Mało roztropne wykorzystanie zdarzeń mouseover i mouseout: <html> <html> <head> <head> <script <script type="text/javascript"> type="text/javascript"> function function uwazaj() uwazaj() {{ alert( alert( "Je "Jeżżeli eli tam tam wejdziesz, wejdziesz, Twoje Twoje żżycie ycie ju jużż nie nie bbęędzie dzie takie takie samo!" samo!" ); ); }} function function zaluj() zaluj() {{ alert( alert( "Je "Jeżżeli eli tam tam nie nie wejdziesz, wejdziesz, bbęędziesz dziesz żżałował!" ałował!" ); ); }} </script> </script> </head> </head> <body> <body> <a <a href="#" href="#" onmouseover="uwazaj()" onmouseover="uwazaj()" onmouseout="zaluj()"> onmouseout="zaluj()"> Ten link jest wyj ą tkowy Ten link jest wyjątkowy </a> </a> </body> </body> </html> </html> Copyright © Roman Simiński Strona : 11 Podstawy programowania w JavaScript Funkcje i programowanie sterowane zdarzeniami Wywoływanie funkcji — obsługa onclick W przeglądarce użytkownicy zwykle używają pojedynczego kliknięcia. <html> <html> <head> <head> <script <script type="text/javascript"> type="text/javascript"> function function info() info() {{ alert( alert( "A "A figa figa śświnko, winko, nic nic tu tu nie nie zobaczysz!" zobaczysz!" ); ); }} </script> </script> </head> </head> <body> <body> <input <input type="button" type="button" name="hl" name="hl" value="Tylko value="Tylko dla dla dorosłych!" dorosłych!" onclick="info()" onclick="info()" /> /> </body> </body> </html> </html> Copyright © Roman Simiński Strona : 11 Podstawy programowania w JavaScript Funkcje i programowanie sterowane zdarzeniami Wywoływanie funkcji — ondblclick Uwaga — zdarzenie click zawsze wystąpi przed dblclick. <html> <html> <head> <head> <script <script type="text/javascript"> type="text/javascript"> function function {{ alert( alert( }} info() info() "A "A figa figa śświnko, winko, nic nic tu tu nie nie zobaczysz!" zobaczysz!" ); ); </script> </script> </head> </head> <body> <body> <p>Dla <p>Dla tego tego przycisku przycisku uużżyj yj podwójnego podwójnego klikni kliknięęcia:</p> cia:</p> <input <input type="button" type="button" name="hl" name="hl" value="Tylko value="Tylko dla dla dorosłych!" dorosłych!" ondblclick="info()" /> ondblclick="info()" /> </body> </body> </html> </html> Copyright © Roman Simiński Strona : 12 Podstawy programowania w JavaScript Funkcje i programowanie sterowane zdarzeniami Wywoływanie funkcji — obsługa onfocus i onblur Czyli obsługa złapania i zgubienia „fokusa”: <html> <html> <head> <head> <script <script type="text/javascript"> type="text/javascript"> function function inColor() inColor() {{ document.bgColor='#5f5f5f'; document.bgColor='#5f5f5f'; }} function function outColor() outColor() {{ document.bgColor='#ffffff'; document.bgColor='#ffffff'; }} </script> </script> </head> </head> <body> <body> <input <input type="text" type="text" id="test" id="test" onfocus="inColor()" onfocus="inColor()" onblur="outColor()" onblur="outColor()" /> /> </body> </body> </html> </html> Copyright © Roman Simiński Strona : 13 Podstawy programowania w JavaScript Funkcje i programowanie sterowane zdarzeniami Wywoływanie funkcji — obsługa onfocus i onblur Wykorzystując onblur można np. weryfikować dane, tutaj jedynie ostrzeżenie: <html> <html> <head> <head> <script <script type="text/javascript"> type="text/javascript"> function function outInfo() outInfo() {{ alert( alert( "Je "Jeżżeli eli uużżyłe yłeśś innych innych liter liter ni niżż du dużże, e, to to masz masz problem." problem." ); ); }} </script> </script> </head> </head> <body> <body> Napisz Napisz <input <input <input <input du dużżymi ymi literami<br literami<br /> /> type="text" id="test1" type="text" id="test1" onblur="outInfo()" onblur="outInfo()" /><br /><br /> /> type="text" type="text" id="test2" id="test2" onblur="outInfo()" onblur="outInfo()" /> /> </body> </body> </html> </html> Copyright © Roman Simiński Strona : 14 Podstawy programowania w JavaScript Funkcje i programowanie sterowane zdarzeniami 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 var timeObject timeObject == setTimeout( setTimeout( "kod "kod ww jjęęzyku zyku JavaScript", JavaScript", czas_w_milisekundach czas_w_milisekundach ); ); Funkcja clearTimeout() zeruje ostawienia dla obiektu będącego rezultatem funkcji setTimeout(): clearTimeout( clearTimeout( timeObject timeObject ); ); Copyright © Roman Simiński Strona : 15 Podstawy programowania w JavaScript Funkcje i programowanie sterowane zdarzeniami Zdarzenia sterowane czasem — setTimeout i clearTimeout, przykład 1 <html> <html> <head> <head> <script <script type="text/javascript"> type="text/javascript"> function function odliczanie() odliczanie() {{ var var timeoutObject timeoutObject == setTimeout( setTimeout( 'alert( 'alert( "Czas "Czas min minąął" ł" )' )',, 5000 5000 ); ); }} </script> </script> </head> </head> <body <body onload="odliczanie()"> onload="odliczanie()"> <p>Masz <p>Masz 55 sekund sekund na na podj podjęęcie cie decyzji!</p> decyzji!</p> </body> </body> </html> </html> Copyright © Roman Simiński Strona : 16 Podstawy programowania w JavaScript Funkcje i programowanie sterowane zdarzeniami Zdarzenia sterowane czasem — setTimeout i clearTimeout, przykład 2 <script <script type="text/javascript"> type="text/javascript"> var var timeoutObject; timeoutObject; var var sek sek == 0; 0; function start() function start() {{ document.getElementById( document.getElementById( "txt" "txt" ).value ).value == sek++; sek++; timeoutObject = setTimeout( "start()", 1000 timeoutObject = setTimeout( "start()", 1000 ); ); }} function function stop() stop() {{ clearTimeout( clearTimeout( timeoutObject timeoutObject ); ); }} function function zeruj() zeruj() {{ document.getElementById( document.getElementById( "txt" "txt" ).value ).value == sek sek == 0; 0; }} </script> </script> .. .. .. <h1>Głupiutki <h1>Głupiutki stoper</h1> stoper</h1> <input type="button" <input type="button" value="Start" value="Start" <input <input type="text" type="text" id="txt" id="txt" /> /> <input <input type="button" type="button" value="Stop" value="Stop" <input type="button" value="Zeruj" <input type="button" value="Zeruj" onclick="start()" onclick="start()" /> /> onclick="stop()" onclick="stop()" /> /> onclick="zeruj()" onclick="zeruj()" /> /> .. .. .. Copyright © Roman Simiński Strona : 17 Podstawy programowania w JavaScript Funkcje i programowanie sterowane zdarzeniami Zdarzenia sterowane czasem — setTimeout i clearTimeout JavaScript pozwala na asynchroniczne, wielokrotne wykonywanie wskazanego kodu po upływie zadanego czasu. Służą do tego funkcje: 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: var var timeObject timeObject == setInterval( setInterval( "kod "kod ww jjęęzyku zyku JavaScript", JavaScript", czas_w_milisekundach czas_w_milisekundach ); ); Funkcja clearInterval() zeruje ostawienia dla obiektu będącego rezultatem funkcji setInterval(): clearInterval( clearInterval( timeObject timeObject ); ); Copyright © Roman Simiński Strona : 18 Podstawy programowania w JavaScript Funkcje i programowanie sterowane zdarzeniami Zdarzenia sterowane czasem — setInterval i clearInterval, przykład <script <script type="text/javascript"> type="text/javascript"> var timeoutObject; var timeoutObject; var var sek sek == 0; 0; function function display() display() {{ document.getElementById( document.getElementById( "txt" "txt" ).value ).value == sek++; sek++; }} function function start() start() {{ display(); display(); timeoutObject timeoutObject == setInterval( setInterval( "display()", "display()", 1000 1000 )) }} function function stop() stop() {{ clearInterval( clearInterval( timeoutObject timeoutObject ); ); }} function function zeruj() zeruj() {{ document.getElementById( document.getElementById( "txt" "txt" ).value ).value == sek sek == 0; 0; }} </script> </script> .. .. .. <h1>Głupiutki <h1>Głupiutki stoper</h1> stoper</h1> <input <input type="button" type="button" value="Start" value="Start" onclick="start()" onclick="start()" /> /> <input <input type="text" type="text" id="txt" id="txt" /> /> <input <input type="button" type="button" value="Stop" value="Stop" onclick="stop()" onclick="stop()" /> /> <input type="button" value="Zeruj" onclick="zeruj()" <input type="button" value="Zeruj" onclick="zeruj()" /> /> .. .. .. Copyright © Roman Simiński Strona : 19