JavaScript

Transkrypt

JavaScript
JavaScript jest językiem skryptowym interpretowanym przez przeglądarki WWW.
Istnieją różne sposoby umieszczania kodu JavaScript w kodzie HTML
1. <script language="JavaScript" type="text/javascript">
<!-Treść skryptu
// -->
</script>
Treść skryptu najlepiej jest ująć w znakach komentarza (<!-- i // -->), aby przeglądarki nieinterpretujące JavaScript go
zignorowały.
Np.
<SCRIPT>
<!-document.write("Dzień dobry");
//-->
</SCRIPT>
2.
Skrypty mogą być umieszczone w osobnych plikach o rozszerzeniu js.
W znaczniku <SCRIPT> dodajemy atrybut SRC="url", gdzie url to adres pliku z kodem JS.
Np.
<script language="javascript" type="text/javascript" src="skrypty.js"></script>
W JavaScript mamy możliwość komentowania tekstu na dwa sposoby:
- ujęcie dowolnego fragmentu tekstu w znaczniki /* i */
- znacznik // powodujący potraktowanie jako komentarz tekstu stojącego za znacznikiem do końca linii
Język składa się z instrukcji które mówią co ma wykonać komputer .
Instrukcje operują na zmiennych - miejscach w których mogą być
przechowywane wartości - identyfikowanych przez nazwę.
Nazwa zmiennej musi być pojedynczym słowem rozpoczynającym się
literą.
Zmienne mogą zawierać wartości różnych typów:
-Wartości proste - napisy, liczby całkowite lub zmiennopozycyjne,
wartości logiczne
-Wartości złożone - tablice lub obiekty - zawierające "podzmienne" do
których możemy się dostać używając odpowiednich konstrukcji
języka
Zmienne
Zmienne w programie zaczynają się od litery.
Jeśli chcemy zapisać do zmiennej wartość - używamy konstrukcji:
zmienna = wartość
Zmienną możemy traktować jak szufladkę do której można schować różne przedmioty. Ta sama
zmienne (o tej samej nazwie), może mieć różną wartość w zależności od tego w którym
momencie będziemy pobierać jej wartość.
Wprowadzenie do kodu zmiennej nie wymaga jej wcześniejszego deklarowania (nie podajemy
jej typu). Wystarczy użyc np. liczba = 12.
Podanie przed nazwą zmiennej słowa VAR oznacza jej lokalną deklarację. Bez tego słowa
zmienna traktowana jest globalna.
Zmienne mogą mieć następujące wartości:
liczbowa:
np.: x = 10 x = 3.14 x = -7.45 + 12
ciąg znaków
np.: s = "Witaj!"
tekst = "To jest początek tekstu. "
Uwaga: wartością "rok" + 2001 jest ciąg znaków "rok 2001"
Znaki specjalne:
\n - koniec linii
\" - cudzysłów
logiczna:
true lub false (bez cudzysłowia)
null - wartość pusta.
Użycie:
VAR zmienna jest równoważne:
VAR zmienna = null
Wartością zmiennej niezadeklarowanej jest undefined
Operatory
binarne: +, -, *, /, % (dzielenie modulo)
unarne: negacja (-) oraz inkrementacja i dekremetacja (zmienna++ , zmienna += 1)
przypisania: a += b (to samo co: a = a + b), a -= b, a *= b, a /= b, a %= b
logiczne: && (konkatenacja), || (alternatywa), ! (negacja)
porównania: == (równe), != (nie równe), <=, >=, <, >.
Możemy porównywać ciągi znaków np. "ala" < "alb"
wyrażenia warunkowe: zmienna = (warunek) ? wartość_prawda : wartość_fałsz
% - dzielenie modulo dzizła jak reszta z dzielenia
| - suma logiczna bitów - 1|1=1; 1|0=1; 0|1=1; 0|0=0;
& - iloczyn logiczny bitów - 1&1=1; 1&0=0; 0&1=0; 0&0=0;
^ - suma modulo 2 - 1^1=0; 1^0=1; 0^1=1; 0^0=0;
|| - suma logiczna - dla wartości logicznych - true gdy co najmniej jedna wartośc
jest true
&& - iloczyn logiczny - dla wartości logicznych - true gdy obie jedna wartości są
true
++ - zwiększenie wartości o 1
-- - zmniejszenie wartości o 1
~ - negacja logiczna bitów
! - negacja logiczna wartości logicznej
== równa się
!= różne od
> większe od
< mniejsze od
>= niemniejsze od
<= niewiększe od
Funkcje
Ciągi instrukcji które powtarzają się w programie możemy połączyć w funkcję - i używać jej jak
pojedynczego polecenia.
Funkcję deklarujemy słowem function po którym powinna wystąpić nazwa funkcji, oraz para
nawiasów. Następnie w nawiasach klamrowych umieszczamy wszystkie te instrukcje z których
składa się funkcja.
function Nazwa_Funkcji(argument1, argument2, ... , argumentn) {
// treść
}
Wywołanie funkcji:
Funkcja1(argument1, argument2);
Funkcja2();
Zmienna = Funkcja3(argument);
Np.
function NapiszTekst()
{
document.write("To jest tekst pisany " +
"przez funkcję o nazwie NapiszTekst");
}
Instrukcje umieszczone wewnątrz funkcji nie są wykonywane dopóki funkcja nie jest wywołana.
Funkcję wywołujemy pisząc jej nazwę oraz parę nawiasów.
Funkcję możem,y wywoływać wielokrotnie, bez konieczności jej ponownego definiowania..
NapiszTekst();
Zadanie 1 - napisać funkcję wypisującą 100 razy tekst "Nie będę rozmawiać na lekcji."
Krok pierwszy:
function NTxt()
{
document.write("Nie będę rozmawiać na lekcji. ");
}
Krok drugi: funkcje mogą zawierać inne funkcje...
function NTx10()
{
NTxt(); NTxt(); NTxt(); NTxt(); NTxt();
NTxt(); NTxt(); NTxt(); NTxt(); NTxt();
}
Krok trzeci:
zbudować funkcję NTxt100 - i ją wywołać.
function NTxt100()
{
NTxt10(); NTxt10(); NTxt10(); NTxt10(); NTxt10(); NTxt10();NTxt10(); NTxt10(); NTxt10();
NTxt10();
}
Ntxt100();
Folder Napisz tekst
Instrukcja pętli
W języku JavaScript jest specjalna instrukcja która pozwala na powtórzenie następującej po niej
instrukcji określoną liczbę razy.
Podstawową instrukcją pętli jest instrukcja for
for(przed; warunek; po)
instrukcja;
W nawiasach umieszczamy dwie instrukcje oraz wyrażenie które jest sprawdzane sprawdzane
przed każdym wykonaniem instrukcji która znajduje się w pętli.
Pierwsza z instrukcji wykonywana jest przed rozpoczęciem wykonywania pętli - i tylko raz.
Druga - po każdym wykonaniu instrukcji pętli
Zadanie 1 z wykorzystaniem pętli for:
Aby zliczyć ilość wykonań pętli - potrzebujemy licznika - zmiennej w której będziemy pamiętać
który raz wypisujemy tekst.
Licznik na początku trzeba zainicjować. W każdym obiegu pętli zwiększać, i sprawdzać czy nie
osiągnęliśmy już wartości 100.
for(var licznik=0; licznik<100; ++licznik)
document.write("Nie będe rozmawiać na lekcji");
Plik petla
Zadania 2 wyświetlić każde zdanie w oddzielnej linii
Krok 1: numerujemy każde z powtórzeń tekstu
for (var licznik=0; licznik<100; ++licznik)
document.write(licznik);
document.write(". Nie będe rozmawiać na
lekcji<br>");
Brak rezultatów
Krok 2: Użycie dwu pętli
for (var licznik=0; licznik<100; ++licznik)
document.write(licznik);
for (var licznik=0; licznik<100; ++licznik)
document.write(". Nie będe rozmawiać na
lekcji<br>");
Brak rezultatów
Krok 3:Wszędzie tam gdzie wymagana jest jedna instrukcja można użyć instrukcji złożonej - czyli ciągu
instrukcji zamkniętego w nawiasach klamrowych.
for (var licznik=0; licznik<100; ++licznik)
{
document.write(licznik);
document.write(". Nie będę rozmawiać na
lekcji<br>");
}
Pliki petla2 oraz petla3
Parametry funkcji
Działanie funkcji można uzależnić od parametrów. Pozwalają one na przekazanie wartości do
wnętrza funkcji.
Jeśli nie wiemy co ani ile razy mamy przepisać, ale wiemy, że zadanie polega na przepisywaniu
tego samego tekstu - możemy napisać funkcję:
function przepisuj(tekst, ilerazy)
{
for(var i=1; i<=ilerazy; ++i)
{
document.write(i);
document.write(". " + tekst);
document.write("<br>");
}
}
przepisuj("Codziennie będę odrabiać zadania domowe", 100);
Plik parametr
Jeśli chcemy wypisać znak cudzysłowu na stronie, lub użyć innego znaku specjalnego to
poprzedzamyje backslashem - i \
document.write("Na ekranie zobaczysz<br>C:\\>")
document.write("Polecam film \"Wladca Pierścieni\"")
document.write("<b><a href=\"spis.htm\">Spis treści</a></b>")
Wartości funkcji
Funkcje nie muszą niczego wyświetlać ani wypisywać na ekranie
Funkcje mogą także służyć do przygotowywania wartości lub wykonywania obliczeń.
Funkcje zwracają wartość instrukcją return Wykonanie tej instrukcji kończy wykonywanie
funkcji.
function dodaj(a, b)
{
var w = a + b;
return w;
}
var x = dodaj(10, 15);
x = dodaj(x, 15);
document.write( dodaj(x, 12) );
Instrukcja warunkowa
Często w programie trzeba podjąć decyzję - czy wykonać jakąś instrukcję czy też nie.
Instrukcja if, while, switch:
do
instrukcja;
while (warunek);
while (warunek)
instrukcja;
switch (wyrażenie )
{
case wartość1:
instrukcja1;
break;
case wartość2:
instrukcja2;
break;
default:
instrukcja0
break;
}
if (warunek)
instrukcja;
if (warunek)
instrukcja1;
else
instrukcja2
Przykład:
if ((dzień == "sobota") || (dzień == "niedziela"))
{ alert("Uwielbiam weekendy!");
confirm("Czy Ty też?");
} else
if (dzień == "poniedziałek")
alert("Nie cierpię poniedziałków");
Plik tabliczka
Zadanie 3 Wypisz silnie kolejnych liczb naturalnych od 1 do 4
Pętla while
var i = 1;
var x = 1;
while (i < 5)
{
x = x * i;
writeln(i + "! = " + x);
i++;
}
Pętla for
nie musimy ręcznie zwiększać stanu licznika (w naszym przykładzie było to i)
var x = 1;
for (var i = 1; i < 5; i++)
{
x = x * i;
writeln(i + "! = " + x);
}
i++;
Obiekty
Obiekty w JavaScript można tworzyć samemu lub korzystać z już gotowych.
Każdy obiekt może mieć pewne własności i metody. Własność obiektu zachowuje się jak
zmienna (albo kolejny obiekt), a metoda to nic innego jak funkcja odnosząca się do obiektu.
Własności i metody obiektów wywołuje się następująco:
obiekt.własność
obiekt.metoda()
Przy odwoływaniu się do metod lub własności obiektu można użyć instrukcji with, np.:
with (obiekt)
{
wlasnosc = 'aaa';
metoda(parametr);
}
Nowy obiekt tworzy się instrukcją new. Konstruktor obiektu jest funkcją, w której do
konstruowanego obiektu odwoływać się można poprzez słowo this:
function mojObiekt()
{
this.wlasnosc1 = null;
this.wlasnosc2 = null;
return this;
}
Użycie:
nowyObiekt = new mojObiekt();
Czyli:
Obiekty to nie tylko grupy danych - dla obiektu możemy zdefiniować także funkcje które na
danym obiekcie mogą być wykonywane.
Funkcje takie nazywane są metodami
Metody mogą być wywoływana tylko dla konkretnego obiektu. Wywołujemy je podobnie jak
zwykłe funkcje ale poprzedzamy je nazwąobiektu i kropką.
Większość elementów z jakimi mamy do czynienia w programamch - to obiekty.
Przykładem obiektu jest document w którym wywoływaliśmy metodę write aby dopisać
fragment dokumentu
Napisy
Za napisy w języku JavaScript odpowiada klasa String
Jeśli chcemy zamienić dowolną wartość na obiekt typu napis - wystarczy, że potraktujemy
String jak funkcję zwracającą obiekt
Napisy pozwalają na wykonanie wielu przydatnych operacji:
charAt - wskazany znak
charCodeAt - kod wskazanego znaku
concat - łączy napisy
indexOf - zwraca miejsce podnapisu
replace - zamienia fragment w napisie
split - rozdziela na tablice w miejscach określonych separatorami
substr - zwraca fragment napisu
substring - podobnie jak poprzednia
Data
Date jest obiektem pozwalającym na zarządzanie datą i godziną
Posiada metody pozwalające na dostęp do wszystkich składników daty:
getDay - dzień tygodnia (0..6)
getDate, setDate - dzień miesiąca (1..31)
getMonth, setMonth - miesiąc (0..11)
getYear, setYear - rok (00-99)
getFullYear - rok - w pełnym zapisie (0000-9999)
getHours, setHours - godziny (0..23)
getMinutes, setMinutes - minuty (0..59)
getSeconds, setSeconds - sekundy (0..59)
getMiliseconds, setMiliseconds - milisekundy (0..999)
Date - użycie:
zmienna = new Date()
zmienna = new Date(hours, minutes, seconds)
zmienna = new Date(year, month, day)
Dostępne metody: getDate(), setDate(), getTime(), getDay(), setTime() itp.
Przykład programu
var d = new Date();
d.setDate(1);
var m = d.getMonth()
d.setDate( 1 - d.getDay() );
do
{
document.write("<tr>");
for (var i=0; i<7; ++i)
{
document.write("<td>");
document.write( d.getDate() );
document.write("</td>");
d.setDate( d.getDate() + 1 )
}
document.write("</tr>");
} while (d.getMonth() == m)
Tablice
W języku JavaScript - tablice są obiektami które muszą być utworzone instrukcją new
var tab = new Array();
Do elementów tablicy możemy się dostawać używając ich pozycji.
Elementy numerowane są od 0. Tablice mają taki rozmiar jaki jest w danej chwili potrzebny by
pomieścić wszystkie elementy.
Nie jest wymagane by wszystkie elementy były tego samego typu.
Wielkość tablicy można sprawdzić używając funkcji lenght
tab[0] = 12.9;
tab[1] = "Napis";
tab[2] = 1e-12;
document.write( tab.length; }
Inicjalizacja tablic
Tworząc tablicę, możemy od razu wypełnić ją wartościami podając je w nawiasach:
var miesiace = new Array( "styczeń", "luty",
"marzec", "kwiecień", "maj", "czerwiec",
"lipiec", "sierpień", "wrzesień",
"październik", "listopad", "grudzień");
Możemy podać ciąg wartości, lub liczbę elementów - jeśli podamy jako parametr przy tworzeniu
tablicy - liczbę - będzie potraktowana jak liczba elementów
Wartości nadane początkowo - mogą być zmieniane przez program
Zdarzenia
Na stronie WWW wiele elementów może generować zdarzenia
Zdarzenia mogą być związane z działaniami użytkownika takimi jak kliknięcie na jakimś
elemencie lub przesunięcie kursora myszki ponad elementem strony.
OnClick , onFocus, onChange
Mogą także pochodzić od systemu i informować na przykład o tym, że strona jest w całości
załadowana lub właśnie jest zmieniana
onLoad, onUnload
Przykład zdarzenia
Typowym zdarzeniem jest naciśnięcie przycisku
Możemy na przykład wyświetlić komunikat poleceniem alert
<html>
<body>
<form name=f1>
<input type=button name=b1 value="Nie dotykać"
onClick="alert('Auu !')">
</form>
</body>
</html>
Możemy także wywołać funkcję którą sami napiszemy
<script>
function zdarzenie()
{
alert('Auu !')
}
</script>
<form name=f1>
<input type=button name=b1 value="Nie dotykać"
onClick="zdarzenie()">
</form>
Możemy także modyfikować zawartość elementów dokumentu
function zdarzenie()
{
alert('Auu !');
document.f1.b1.value =
"Mowiłem, żeby nie dotykać"; }
Folder zdarzenia
<IMG SRC="coś tam" eventHandler="polecenie 1; polecenie 2; polecenie 3">
W miejsce eventHandler należy wstawić odpowiednie określenie zdarzenia.
Oto lista najużyteczniejszych zdarzeń:
Event handler
Opis
onClick klinięcie myszką na dany element
onFocus wybranie danego pola formularza
onBlur odwrotne do onFocus
onChange zmiana zawartości elementu formularza
onSelect gdy zawartość pola formularza zostaje wybrana
onMouseOver gdy kursor wejdzie nad element
onMouseOut gdy kursor opuści obszar nad elementem
onLoad gdy dokument jest ładowany (dotyczy BODY oraz obiektu window)
onUnload gdy dana strona jest opuszczana (dotyczy BODY oraz obiektu window)
Wbudowane funkcje
alert("tekst") - wyświetla okienko z tekstem
eval("kod") - oblicza i zwraca wartość wygenerowaną przez "kod" (może to być ciąg instrukcji)
parseFloat("ciąg") - konwertuje ciąg znaków na liczbę zmiennoprzecinkową
parseInt("ciąg") - konweruje ciąg znaków na liczbę całkowitą
Przykład:
<script language="JavaScript">
<!-function wyswietl() {
alert(eval("5+10"));
}
//-->
</script>
<input type="button" value="Kliknij tu" onClick="wyswietl()">
<input type="button" value="I tu też" onClick="alert('Tekścik')">