Òåìà: JavaScript
1.ßçûê ïðîãðàììèðîâàíèÿ
JavaScript: îáëàñòè èñïîëüçîâàíèÿ, îñíîâíûå îáëàñòè èñïîëüçîâàíèÿ, îïåðàöèè.
3.JavaScript îáðàáîò÷èêè ñîáûòèé.
1. ßçûê
ïðîãðàììèðîâàíèÿ JavaScript: îáëàñòè èñïîëüçîâàíèÿ, îñíîâíûå îáëàñòè
èñïîëüçîâàíèÿ, îïåðàöèè.
ßçûê ïðîãðàììèðîâàíèÿ JavaScript áûë
ðàçðàáîòàí ôèðìîé Netscape â ñîòðóäíè÷åñòâå ñ Sun Microsystems è àíàíñèðîâàí â
1995 ãîäó. JavaScript ïðåäíàçíà÷åí äëÿ ñîçäàíèÿ èíòåðàêòèâíûõ html-äîêóìåíòîâ.
Îñíîâíûå îáëàñòè èñïîëüçîâàíèÿ JavaScript:
- Ñîçäàíèå
äèíàìè÷åñêèõ ñòðàíèö, ò.å. ñòðàíèö, ñîäåðæèìîå êîòîðûõ ìîæåò ìåíÿòüñÿ ïîñëå
çàãðóçêè.
- Ïðîâåðêà
ïðàâèëüíîñòè çàïîëíåíèÿ ïîëüçîâàòåëüñêèõ ôîðì.
- Ðåøåíèå
"ëîêàëüíûõ" çàäà÷ ñ ïîìîùüþ ñöåíàðèåâ.
- JavaScript-êîä -
îñíîâà áîëüøèíñòâà Ajax-ïðèëîæåíèé.
Ïðîãðàììû (ñöåíàðèè) íà ýòîì ÿçûêå
îáðàáàòûâàþòñÿ âñòðîåííûì â áðàóçåð èíòåðïðåòàòîðîì. Ê ñîæàëåíèþ, íå âñå
ñöåíàðèè âûïîëíÿþòñÿ êîððåêòíî âî âñåõ áðàóçåðàõ, ïîýòîìó òåñòèðóéòå ñâîè
javascript-ïðîãðàììû â ðàçëè÷íûõ áðàóçåðàõ.
JavaScript ïîçâîëÿåò ñîçäàâàòü
ïðèëîæåíèÿ, âûïîëíÿåìûå íà ñòîðîíå êëèåíòà, ò.å. ýòè ïðèëîæåíèÿ âûïîëíÿþòñÿ
áðàóçåðîì íà êîìïüþòåðå ïîëüçîâàòåëÿ. ßçûê JavaScript ðåãèñòðîçàâèñèìûé, ò.å.
çàãëàâíûå è ïðîïèñíûå áóêâû àëôàâèòà ñ÷èòàþòñÿ ðàçíûìè ñèìâîëàìè.
Ïðåæäå, ÷åì ïðèñòóïèòü ê íàïèñàíèþ
ñöåíàðèåâ, íåîáõîäèìî îçíàêîìèòüñÿ ñ îñíîâíûìè ïîíÿòèÿìè, òàêèìè êàê ëèòåðàëû,
ïåðåìåííûå è âûðàæåíèÿ.
Ëèòåðàëû
Ëèòåðàëû - ýòî
ïðîñòåéøèå äàííûå ñ êîòîðûìè ìîæåò ðàáîòàòü ïðîãðàììà.
Ëèòåðàëû öåëîãî òèïà - öåëûå ÷èñëà â
ïðåäñòàâëåíèè:
- äåñÿòè÷íîì,
íàïðèìåð: 15, +5, -174.
- øåñòíàäöàòåðè÷íîì,
íàïðèìåð: 0õ25, 0õff. Øåñòíàäöàòåðè÷íûå ÷èñëà âêëþ÷àþò öèôðû 0 - 9 è áóêâû a,
b, c, d, e, f. Çàïèñûâàþòñÿ îíè ñ ñèìâîëàìè 0õ ïåðåä ÷èñëîì.
- âîñüìåðè÷íîì,
íàïðèìåð: 011, 0543. Âîñüìåðè÷íûå ÷èñëà âêëþ÷àþò òîëüêî öèôðû 0 - 7.
Âåùåñòâåííûå ëèòåðàëû - äðîáíûå öèñëà.
Öåëàÿ ÷àñòü îòäåëÿåòñÿ îò äðîáíîé òî÷êîé, íàïðèìåð: 99.15, -32.45. Âîçìîæíà
ýêñïîíåíöèàëüíàÿ ôîðìà çàïèñè, íàïðèìåð: 2.73e-7.  ïðèâû÷íîì âèäå ýòî
2.73Õ10-7, íî â javascript çíàê óìíîæåíèÿ è 10 çàìåíÿþòñÿ ñèìâîëîì -e-.
Ëîãè÷åñêèå çíà÷åíèÿ - èç äâà: èñòèíà
(true) è ëîæü (false).
Ñòðîêîâûå ëèòåðàëû - ïîñëåäîâàòåëüíîñòü
ñèìâîëîâ, çàêëþ÷åííàÿ â îäèíàðíûå èëè äâîéíûå êàâû÷êè. Íàïðèìåð: "âàøå
èìÿ", 'âàøå èìÿ'.
Ïåðåìåííûå
Ïåðåìåííûå èñïîëüçóþòñÿ äëÿ õðàíåíèÿ
äàííûõ. Ïåðåìåííûå îïðåäåëÿþòñÿ ñ ïîìîùüþ îïåðàòîðà var, ïîñëå êîòîðîãî ñëåäóåò
èìÿ ïåðåìåííîé. Èìÿ ïåðåìåííîé äîëæíî íà÷èíàòüñÿ ñ áóêâû ëàòèíñêîãî àëôàâèòà
èëè ñ ñèìâîëà ïîä÷åðêèâàíèÿ. Ñàìî èìÿ ìîæåò âêëþ÷àòü áóêâû ëàòèíñêîãî àëôàâèòà,
öèôðû è çíàê ïîä÷åðêèâàíèÿ.
Íàïðèìåð:
var test
var _test
var _my_test1
Êàæäîé ïåðåìåííîé ìîæíî ïðèñâîèòü
çíà÷åíèå ëèáî ïðè åå èíèöèàëèçàöèè (îáúÿâëåíèè), ëèáî â êîäå ñàìîé ïðîãðàììû.
Îïåðàòîð ïðèñâàèâàíèÿ îáîçíà÷àåòñÿ çíàêîì ðàâíî (=), íî çíàê ðàâåíñòâà çäåñü íå
èìååò ñâîåãî ïðÿìîãî çíà÷åíèÿ.  äàííîì ñëó÷àå îí ëèøü óêàçûâàåò íà òî, ÷òî
äàííîé ïåðåìåííîé ïðèñâîèëè çíà÷åíèå.
Íàïðèìåð:
var a=15
var b=23.15
var c='âûïîëíåíî'
var s=true
Êàæäàÿ ïåðåìåííàÿ èìååò òèï,
îïðåäåëÿåìûé çíà÷åíèåì ïåðåìåííîé. Òàê â íàøåì ïðèìåðå: ïåðåìåííûå a è b èìåþò
òèï number, ïåðåìåííàÿ c èìååò òèï string, à ïåðåìåííàÿ s - ëîãè÷åñêèé òèï.
Âûðàæåíèÿ
Âûðàæåíèÿ ñòðîÿòñÿ èç ëèòåðàëîâ,
ïåðåìåííûõ, çíàêîâ îïåðàöèé è ñêîáîê.  ðåçóëüòàòå âû÷èñëåíèÿ âûðàæåíèÿ
ïîëó÷àåòñÿ åäèíñòâåííîå çíà÷åíèå, êîòîðîå ìîæåò áûòü ÷èñëîì, ñòðîêîé èëè
ëîãè÷åñêèì çíà÷åíèåì.
 âûðàæåíèè a*b, a è b íàçûâàþòñÿ
îïåðàíäàìè, à * - çíàê îïåðàöèè. Â JavaScript îïðåäåëåíû ñëåäóþùèå îïåðàöèè:
îïåðàöèÿ |
íàçâàíèå |
+ |
ñëîæåíèå |
- |
âû÷èòàíèå |
* |
óìíîæåíèå |
/ |
äåëåíèå |
% |
îñòàòîê
îò äåëåíèÿ öåëûõ ÷èñåë |
++ |
óâåëè÷åíèå
çíà÷åíèÿ îïåðàíäà íà åäèíèöó |
-- |
óìåíüøåíèå
çíà÷åíèÿ îïåðàíäà íà åäèíèöó |
Îïåðàòîðû
â âûðàæåíèè âû÷èñëÿþòñÿ ñëåâà íàïðàâî â ñîîòâåòñòâèè ñ ïðèîðèòåòàìè
àðèôìåòè÷åñêèõ îïåðàöèé. Èçìåíèòü ïîðÿäîê âû÷èñëåíèÿ ìîæíî ñ ïîìîùüþ ñêîáîê.
Äëÿ
êàæäîãî èç àðèôìåòè÷åñêèõ îïåðàòîðîâ åñòü ôîðìà, â êîòîðîé îäíîâðåìåííî ñ
çàäàííîé îïåðàöèåé âûïîëíÿåòñÿ ïðèñâàèâàíèå:
îïåðàòîð |
ýêâèâàëåíòíûé îïåðàòîð ïðèñâàèâàíèÿ |
X+=Y |
X=X+Y |
X-=Y |
X=X-Y |
X*=Y |
X=X*Y |
X/=Y |
X=X/Y |
X%=Y |
X=X%Y |
Â
äàííîì ñëó÷àå ñíà÷àëà âû÷èñëÿåòñÿ ïðàâûé îïåðàíä, à çàòåì ïîëó÷åííîå çíà÷åíèå
ïðèñâàèâàåòñÿ ëåâîìó îïåðàíäó.
Äëÿ
òîãî, ÷òîáû ìîæíî áûëî ñðàâíèâàòü äâà çíà÷åíèÿ â javascript îïðåäåëåíû îïåðàöèè
ñðàâíåíèÿ, ðåçóëüòàòîì êîòîðûõ ìîæåò áûòü òîëüêî ëîãè÷åñêîå çíà÷åíèå: true èëè
false:
îïåðàöèÿ |
íàçâàíèå |
< |
ìåíüøå |
<= |
ìåíüøå
èëè ðàâíî |
== |
ðàâíî |
!= |
íå
ðàâíî |
>= |
áîëüøå
èëè ðàâíî |
> |
áîëüøå |
Â
javascript îïðåäåëåíû ëîãè÷åñêèå îïåðàöèè:
&&
- ëîãè÷åñêîå È (AND),
||
- ëîãè÷åñêîå ÈËÈ (OR),
!
- ëîãè÷åñêîå ÍÅ (NOT).
Ðåçóëüòàòû
âîçäåéñòâèÿ ëîãè÷åñêèõ îïåðàòîðîâ íà ðàçëè÷íûå êîìáèíàöèè çíà÷åíèé îïåðàíäîâ
ïîêàçàíû â òàáëèöå:
A |
B |
A&&B |
A||B |
!A |
true |
true |
true |
true |
false |
true |
false |
false |
true |
false |
false |
true |
false |
true |
true |
false |
false |
false |
false |
true |
Ïðîùå
ãîâîðÿ, çíà÷åíèå âûðàæåíèÿ A&&B èñòèííî, åñëè èñòèííû îáà îïåðàòîðà, è ëîæíî
â ïðîòèâíîì ñëó÷àå. Çíà÷åíèå âûðàæåíèÿ A||B èñòèííî, åñëè çíà÷åíèå õîòÿ áû
îäíîãî îïåðàíäà èñòèííî, è ëîæíî â ïðîòèâíîì ñëó÷àå. Åñëè çíà÷åíèå îïåðàíäà À
èñòèííî, òî !A - ëîæíî è íàîáîðîò.
Äëÿ
ñòðîêîâûõ ëèòåðàëîâ îïðåäåëåíà îïåðàöèÿ êîíêàòåíàöèÿ ñòðîê, ò.å. èõ
îáúåäèíåíèå. Îáîçíà÷àåòñÿ ýòà îïåðàöèÿ çíàêîì ïëþñ (+). Ðåçóëüòàòîì âûïîëíåíèÿ
îïåðàöèè ÿâëÿåòñÿ òàêæå ñòðîêà. Ïðèìåð:
var st1="Ïðèâåò";
var st2="Âàñÿ";
var st3=st1+st2;
Â
ðåçóëüòàòå â ïåðåìåííîé st3 áóäåò çíà÷åíèå "Ïðèâåò Âàñÿ".
Â
êîíöå ïðèâåäåì òàáëèöó ïðèîðèòåòîâ îïåðàöèé â ïîðÿäêå èõ óáûâàíèÿ. Ïðèîðèòåò
îïåðàöèé îïðåäåëÿåò ïîðÿäîê, â êîòîðîì âûïîëíÿþòñÿ îïåðàöèè â âûðàæåíèè.
íàçâàíèå |
îáîçíà÷åíèå |
èíêðåìåíò |
++ |
äåêðåìåíò |
-- |
îòðèöàíèå |
! |
óíàðíûé
ìèíóñ |
- |
óìíîæåíèå |
* |
äåëåíèå,
îñòàòîê îò äåëåíèÿ |
/,% |
ñëîæåíèå |
+ |
âû÷èòàíèå |
- |
ñðàâíåíèå |
<,
>, <=, >= |
ðàâåíñòâî |
== |
íå
ðàâåíñòâî |
!= |
ëîãè÷åñêîå
È |
&& |
ëîãè÷åñêîå
ÈËÈ |
|| |
ïðèñâàèâàíèå |
=,
+=, -=, *=, /=, %=, != |
Javascript-êîä ìîæåò áûòü ðàçìåùåí êàê íà ñàìîé
ñòðàíèöå, òàê è âî âíåøíåì ôàéëå.
Javascript-êîä íà ñòðàíèöå
Ñöåíàðèè,
íàïèñàííûå íà ÿçûêå javascript, ìîãóò
ðàñïîëàãàòüñÿ íà ñàìîé html-ñòðàíèöå ìåæäó
òåãàìè <script></script>, êîòîðûå â ñâîþ
î÷åðåäü îáû÷íî íàõîäÿòñÿ â òåãàõ <head></head>. Ó òåãà <script>
äîëæåí áûòü óêàçàí ïàðàìåòð language, êîòîðûé è
óêàçûâàåò ÿçûê íàïèñàíèÿ ñêðèïòà:
<html>
<head>
<title>Çàãîëîâîê äîêóìåíòà</title>
<link rel="stylesheet"
type="text/css" href="style.css">
<script
language="javascript"></script>
</head>
<body>
</body>
</html>
Òåîðåòè÷åñêè
òåãè <script></script> ìîãóò
ðàñïîëàãàòüñÿ è â òåëå äîêóìåíòà (â òåãàõ <body></body>). Âûïîëíÿòüñÿ òàêîé ñöåíàðèé áóäåò òîãäà, êîãäà
áðàóçåð "äî÷èòàåò" ñòðàíèöó äî ýòîãî ìåñòà (äî òåãîâ <script></script>).
Èñïîëüçîâàòü òàêîé ñïîñîá ñåé÷àñ íå ïðèíÿòî.
Javascript-êîä âî âíåøíåì ôàéëå
Ñîçäàéòå
â áëîêíîòå ñòðàíèöó (ïîêà ïóñòóþ) è ñîõðàíèòå åå êàê script.js â òó æå ïàïêó, ãäå ëåæèò html-ñòðàíèöà:
3. JavaScript îáðàáîò÷èêè ñîáûòèé
Äàâàéòå
íàïèøåì íàøó ïåðâóþ ïðîãðàììó. Äëÿ ýòîãî ñäåëàåì èñêëþ÷åíèå è ïîìåñòèì íàø javascript-êîä íà html-ñòðàíèöå.
Èòàê, îòêðîéòå (èëè ñîçäàéòå) html-ñòðàíèöó è
ïîìåñòèòå â íåå ñëåäóþùèé êîä:
<html>
<head>
<title>Çàãîëîâîê äîêóìåíòà</title>
<link rel="stylesheet"
type="text/css" href="style.css">
<script language="javascript">
document.write("Ìîÿ ïåðâàÿ ñòðàíèöà.");
</script>
</head>
<body>
</body>
</html>
Îòêðîéòå
ýòó ñòðàíèöó â áðàóçåðå, îíà âûãëÿäèò òàê:
Ìîÿ
ïåðâàÿ ñòðàíèöà
Äàâàéòå
ðàçáåðåìñÿ êàê ýòî ðàáîòàåò. Áðàóçåð ÷èòàåò íàøó html-ñòðàíèöó,
âèäèò îïåðàòîð äëÿ âûïîëíåíèÿ document.write("Ìîÿ ïåðâàÿ ñòðàíèöà."); è âûïîëíÿåò åãî.
Ðàññìîòðèì èç ÷åãî ñîñòîèò ñàì îïåðàòîð (èíñòðóêöèÿ)
Ïðè
èíòåðïðåòàöèè html-ñòðàíèöû áðàóçåð ñîçäàåò îáúåêòû javascript. Îíè õðàíÿòñÿ â
âèäå èåðàðõè÷åñêîé ñòðóêòóðû, îòðàæàÿ ñòðóêòóðó äîêóìåíòà, íàïðèìåð:
Íà
ñàìîì âåðõíåì óðîâíå íàõîäèòñÿ îáúåêò window, ïðåäñòàâëÿþùèé îêíî áðàóçåðà è
ÿâëÿþùèéñÿ "ðîäèòåëåì" âñåõ îñòàëüíûõ îáúåêòîâ. Ðàñïîëîæåííûå íèæå
ìîãóò èìåòü ñâîè ïîä÷èíåííûå îáúåêòû. Òàê îáúåêò document (òåêóùàÿ ñòðàíèöà)
ìîæåò èìåòü äî÷åðíèé îáúåêò form (ôîðìà) è ò.ä.
Âñå
îáúåêòû èìåþò ìåòîäû (îòäåëÿþòñÿ îò îáúåêòà òî÷êîé), íàïðèìåð:
document.write
ïîçâîëÿåò ïèñàòü òåêñò â òåêóùóþ ñòðàíèöó,
window.open
îòêðûâàåò íîâîå îêíî áðàóçåðà.
Òàêæå
îáúåêòû èìåþò ñâîéñòâà, íàïðèìåð:
document.bgcolor
ñîäåðæèò çíà÷åíèå ôîíîâîãî öâåòà òåêóùåé ñòðàíèöû,
document.title
ñîäåðæèò çàãîëîâîê ñòðàíèöû.
Âñå
èíñòðóêöèè ïðîãðàììíîãî êîäà çàêàí÷èâàþòñÿ òî÷êîé ñ çàïÿòîé. Îá ýòîì íàäî
ïîìíèòü.
Ñöåíàðèé,
êîòîðûé ìû íàïèñàëè, âûïîëíèëñÿ íåìåäëåííî ïîñëå çàãðóçêè ñòðàíèöû. Îäíàêî â
áîëüøèíñòâå ñëó÷àåâ íàì íóæíî, ÷òîáû ñöåíàðèé âûïîëíÿëñÿ ïîñëå êàêèõ-ëèáî
äåéñòâèé ïîëüçîâàòåëÿ: íàæàòèÿ íà êíîïêó èëè ââîäà òåêñòà. Ò.å. â îòâåò íà ïîëüçîâàòåëüñêîå
ñîáûòèå.
Äëÿ
ýòîãî â òåãàõ ýëåìåíòîâ ñòðàíèöû ââåäåíû ïàðàìåòðû îáðàáîòêè ñîáûòèé, çàäàþùèå
äåéñòâèÿ, âûïîëíÿåìûå ïðè âîçíèêíîâåíèè ñîáûòèÿ, ñâÿçàííîãî ñ ýëåìåíòîì.
Íàïðèìåð:
<div
onClick="addText();"></div>
Çäåñü
Click - ñîáûòèå (ùåë÷îê ïî div-ó), onClick - îáðàáîò÷èê ñîáûòèÿ, addText() -
èìÿ ôóíêöèè, êîòîðàÿ ñðàáîòàåò ïðè âîçíèêíîâåíèè ýòîãî ñîáûòèÿ (ùåë÷êà ïî
div-ó).
Ôóíêöèè
ìû áóäåì ðàññìàòðèâàòü â ñëåäóþùåì óðîêå, à ñåé÷àñ ïåðå÷èñëèì ñîáûòèÿ, êîòîðûå
ïîääåðæèâàþòñÿ javascript. Çàïîìèíàòü èõ íå ñëåäóåò, â äàëüíåéøåì ìîæåòå ïðîñòî
îáðàùàòüñÿ ê ýòîé òàáëèöå.
ñîáûòèå |
êîãäà
ïðîèñõîäèò |
îáðàáîò÷èê
ñîáûòèÿ |
Blur |
ïîòåðÿ
îáúåêòîì ôîêóñà |
onBlur |
Change |
ïîëüçîâàòåëü
èçìåíÿåò çíà÷åíèå ýëåìåíòà |
onChange |
Click |
ïîëüçîâàòåëü
ùåëêàåò ìûùüþ ïî îáúåêòó |
onClick |
DblClick |
ïîëüçîâàòåëü
äåëàåò äâîéíîé ùåë÷îê ìûøüþ ïî îáúåêòó |
onDblClick |
DragDrop |
ïîëüçîâàòåëü
ïåðåòàñêèâàåò ìûøüþ îáúåêò |
onDragDrop |
Error |
âîçíèêíîâåíèå
javascript-îøèáêè |
onError |
Focus |
îêíî
èëè ýëåìåíò ôîðìû ïîëó÷àåò ôîêóñ |
onFocus |
KeyDown |
ïîëüçîâàòåëü
íàæèìàåò êëàâèøó êëàâèàòóðû |
onKeyDown |
KeyPress |
ïîëüçîâàòåëü
óäåðæèâàåò íàæàòîé êëàâèøó êëàâèàòóðû |
onKeyPress |
KeyUp |
ïîëüçîâàòåëü
îòïóñêàåò êëàâèøó êëàâèàòóðû |
onKeyUp |
Load |
äîêóìåíò
çàãðóæàåòñÿ â áðàóçåð |
onLoad |
MouseDown |
ïîëüçîâàòåëü
íàæèìàåò êíîïêó ìûøè |
onMouseDown |
MouseOut |
óêàçàòåëü
ìûøè âûõîäèò çà ïðåäåëû ýëåìåíòà |
onMouseOut |
MouseOver |
óêàçàòåëü
ìûøè ïîìåùàåòñÿ íàä ýëåìåíòîì |
onMouseOver |
MouseUp |
ïîëüçîâàòåëü
îòïóñêàåò êíîïêó ìûøè |
onMouseUp |
Move |
ïîëüçîâàòåëü
ïåðåìåùàåò îêíî |
onMove |
Reset |
ïîëüçîâàòåëü
íàæèìàåò êíîïêó "reset" ôîðìû |
onReset |
Resize |
ïîëüçîâàòåëü
èçìåíÿåò ðàçìåðû îêíà èëè ýëåìåíòà |
onResize |
Select |
ïîëüçîâàòåëü
âûáèðàåò ýëåìåíò ôîðìû |
onSelect |
Submit |
ïîëüçîâàòåëü
íàæèìàåò êíîïêó "submit" ôîðìû |
onSubmit |
Unload |
ïîëüçîâàòåëü
çàêðûâàåò äîêóìåíò |
onUnload |
Õîðîøèì
ñòèëåì ïðîãðàììèðîâàíèÿ ÿâëÿåòñÿ îôîðìëåíèå äåéñòâèé, âûïîëíÿåìûõ ïðè îáðàáîòêå
ñîáûòèé, â âèäå ôóíêöèé. Èõ ìû è áóäåì èçó÷àòü â ñëåäóþùåì óðîêå.
Ôóíêöèÿ
- ýòî èìåíîâàííàÿ ïîñëåäîâàòåëüíîñòü îïåðàòîðîâ (èíñòðóêöèé). Ëþáàÿ ôóíêöèÿ èìååò
ñëåäóþùèé ñèíòàêñèñ:
function
èìÿ (){
îïåðàòîð;
.......
îïåðàòîð;
}
Ñíà÷àëà
èäåò êëþ÷åâîå ñëîâî function, çàòåì èìÿ ôóíêöèè, çàòåì â êðóãëûõ ñêîáêàõ
ïåðå÷èñëÿþòñÿ ïàðàìåòðû (åñëè îíè åñòü), çàòåì â ôèãóðíûõ ñêîáêàõ ïåðå÷èñëÿþòñÿ
îïåðàòîðû, ò.å. ïîñëåäîâàòåëüíîñòü âûïîëíÿåìûõ äåéñòâèé. Êàæäûé îïåðàòîð
çàêàí÷èâàåòñÿ òî÷êîé ñ çàïÿòîé.
Ðàññìîòðèì
íà ïðèìåðå. Âî âòîðîì óðîêå ìû ñîçäàëè html-ñòðàíèöó, ñòðàíèöó script.js äëÿ
ôóíêöèé è ïîäêëþ÷èëè îäíó ê äðóãîé. Ýòè ñòðàíèöû ìû è áóäåì èñïîëüçîâàòü.
Ïîìåñòèì â html-ñòðàíèöó ñëåäóþùèé êîä:
<html>
<head>
<title>Çàãîëîâîê äîêóìåíòà</title>
<link rel="stylesheet"
type="text/css" href="style.css">
<script type="text/javascript"
src="script.js"></script>
</head>
<body>
<div onClick="showMessage();">Ùåëêíè ìåíÿ</div>
</body>
</html>
Ìû
óêàçàëè, ÷òî ïðè ùåë÷êå ïîëüçîâàòåëÿ ïî div-ó (ò.å. ïî ñëîâàì "Ùåëêíè
ìåíÿ") äîëæíà áûòü âûçâàíà ôóíêöèÿ ñ èìåíåì "showMessage".
Òåïåðü íà ñòðàíèöå script.js íàäî íàïèñàòü ñàìó ôóíêöèþ
"showMessage". Îòêðûâàåì ñòðàíèöó script.js è ïèøåì:
function
showMessage(){
alert ("Âû ùåëêíóëè ïî div-ó");
}
Íàøà
ôóíêöèÿ "showMessage" áóäåò âûïîëíÿòü îäíî äåéñòâèå - îòîáðàæàòü îêíî
ïðåäóïðåæäåíèé ñ òåêñòîì "Âû ùåëêíóëè ïî div-ó". alert - ýòî
ñòàíäàðòíàÿ ôóíêöèÿ javascript, êîòîðàÿ è âûâîäèò îêíî ïðåäóïðåæäåíèé, ìû ëèøü
çàäàåì òåêñò äëÿ ýòîãî îêíà.
Â
javascript åñòü ñòàíäàðòíûé íàáîð ôóíêöèé, êîòîðûé ìîæíî èñïîëüçîâàòü
(íàïðèìåð, alert) è òàê íàçûâàåìûå ïîëüçîâàòåëüñêèå ôóíêöèè, ò.å. òå, êîòîðûå
ìû ñîçäàåì ñàìè. Íåêîòîðûå ôóíêöèè javascript ìû áóäåì èçó÷àòü ïî ìåðå
íåîáõîäèìîñòè, íåêîòîðûì æå áóäóò ïîñâÿùåíû îòäåëüíûå óðîêè.
Âåðíåìñÿ
ê íàøåìó ïðèìåðó. Îòêðîéòå âàøó html-ñòðàíèöó ñ ïîìîùüþ áðàóçåðà è ùåëêíèòå ïî
div-ó. Ìîæåòå ùåëêíóòü è â ïðèìåðå íèæå.
Ùåëêíè
ìåíÿ
Òàêèì
îáðàçîì, ìû ðàññìîòðåëè ìåõàíèçì ðàáîòû îáðàáîòêè ñîáûòèé:
Â
html-ñòðàíèöå ìû ïðèâÿçûâàåì ê íóæíîìó ýëåìåíòó îáðàáîò÷èê ñîáûòèÿ (onClick,
onMouseUp è ò.ä.), â êà÷åñòâå çíà÷åíèÿ êîòîðîãî óêàçûâàåì èìÿ ôóíêöèè, êîòîðàÿ
è äîëæíà ñðàáîòàòü, êîãäà íàñòàíåò ñîáûòèå.
Íà
ñòðàíèöå ñ ðàñøèðåíèå .js ìû ïèøåì êîä ýòîé ôóíêöèè, ò.å. èíñòðóêöèè, êîòîðûå
äîëæíû áûòü âûïîëíåíû, åñëè ôóíêöèÿ èíèöèàëèçèðîâàíà (ê íåé îáðàòèëèñü).
Äàâàéòå
óñëîæíèì çàäà÷ó è íàïèøåì ñöåíàðèé, êîòîðûé áóäåò ðàññ÷èòûâàòü ïëîùàäü
ïðÿìîóãîëüíèêà ïî ââåäåííûì ïîëüçîâàòåëåì äëèíå è øèðèíå. Äëÿ ýòîãî ñíà÷àëà
ðàçìåñòèì íà html-ñòðàíèöå íóæíûå ýëåìåíòû ôîðìû:
<html>
<head>
<title>Ðàñ÷åò
ïëîùàäè ïðÿìîóãîëüíèêà</title>
<link rel="stylesheet"
type="text/css" href="style.css">
<script type="text/javascript"
src="script.js"></script>
</head>
<body>
<form name="forma1">
Ââåäèòå äëèíó ïðÿìîóãîëüíèêà<input type="text" name="t1"
size="10"><br><br>
Ââåäèòå øèðèíó ïðÿìîóãîëüíèêà<input type="text" name="t2"
size="10"><br><br>
<input type="button"
name="button" value="Âû÷èñëèòü"><br><br>
Ïëîùàäü ïðÿìîóãîëüíèêà
ðàâíà<input type="text" name="res"
size="10">
</form>
</body>
</html>
Èòàê,
ïîëüçîâàòåëü ââîäèò çíà÷åíèÿ øèðèíû è äëèíû è íàæèìàåò íà êíîïêó
"Âû÷èñëèòü". Ïîñëå ÷åãî, â ïîëå ïëîùàäü äîëæåí ïîÿâèòüñÿ ðåçóëüòàò.
Òàêèì îáðàçîì, ñîáûòèå íàñòóïàåò ïðè íàæàòèè íà êíîïêó "Âû÷èñëèòü",
çíà÷èò èìåííî ê íåé ìû è ïðèâÿæåì îáðàáîò÷èê ñîáûòèÿ. Ôóíêöèþ âû÷èñëåíèÿ
ïëîùàäè íàçîâåì "areaRectangle":
.......
<input
type="button" name="button" value="Âû÷èñëèòü"
onClick="areaRectangle();"><br><br>
.......
Òåïåðü
ïðèøëî âðåìÿ íàïèñàòü ñàìó ôóíêöèþ "areaRectangle". Äëÿ ýòîãî îòêðîåì
ñòðàíèöó script.js è íàïèøåì çàãîòîâêó äëÿ ôóíêöèè:
function
areaRectangle(){
}
Òåïåðü
íàäî íàïèñàòü òåëî ôóíêöèè. Äëÿ íà÷àëà îáúÿâèì òðè ïåðåìåííûå: a - çíà÷åíèå
äëèíû ïðÿìîóãîëüíèêà, b - çíà÷åíèå øèðèíû ïðÿìîóãîëüíèêà, s - ïëîùàäü
ïðÿìîóãîëüíèêà:
function areaRectangle(){
var a;
var b;
var
s;
}
Çíà÷åíèå
(value) a äîëæíî áðàòüñÿ èç òåêóùåé ñòðàíèöû (document), èç ôîðìû ñ èìåíåì
"forma1", èç òåêñòîâîãî ïîëÿ ñ èìåíåì "t1". Òàê ýòî è
çàïèñûâàåòñÿ document.forma1.t1.value, ò.å. ïåðå÷èñëÿþòñÿ ÷åðåç òî÷êó èìåíà
îáúåêòîâ îò ðîäèòåëüñêîãî äî íóæíîãî (èåðàðõè÷åñêóþ ñòðóêòóðó îáúåêòîâ ìû îáñóæäàëè
â ïðåäûäóùåì óðîêå). Ïîñëåäíèì óêàçûâàåòñÿ íåîáõîäèìîå ñâîéñòâî îáúåêòà
(value).
Àíàëîãè÷íî
è äëÿ çíà÷åíèÿ b - document.forma1.t2.value.
À
íàøà ïåðåìåííàÿ s - åñòü ïðîèçâåäåíèå a íà b. Çàïèøåì ýòî â òåëî ôóíêöèè:
function areaRectangle(){
var a=document.forma1.t1.value;
var
b=document.forma1.t2.value;
var
s=a*b;
}
Îñòàëîñü
òîëüêî íàïèñàòü èíñòðóêöèþ çàïèñè âû÷èñëåííîé ïëîùàäè â òåêñòîâîå ïîëå ñ èìåíåì
"res" íàøåé ôîðìû. Ò.å íàì íàäî, ÷òîáû â òåêùóþ ñòðàíèöó, â ôîðìó ñ
èìåíåì "forma1", â òåêñòîâîå ïîëå ñ èìåíåì "res", â
êà÷åñòâå çíà÷åíèÿ (value) áûëî ïðèñâîåíî çíà÷åíèå s. Òàê è çàïèøåì:
function areaRectangle(){
var
a=document.forma1.t1.value;
var
b=document.forma1.t2.value;
var s=a*b;
document.forma1.res.value=s;
}
Ïàðàìåòðû ôóíêöèé
Îáðàòèòå
âíèìàíèå, â ôóíêöèè ìû èñïîëüçóåì èìÿ ôîðìû - forma1, åãî ìû è ñäåëàåì
ïàðàìåòðîì. Ò.å. ïåðåïèøåì íàøó ôóíêöèþ ñëåäóþùèì îáðàçîì:
function
areaRectangle(obj){
var a=obj.t1.value;
var
b=obj.t2.value;
var s=a*b;
obj.res.value=s;
}
Ò.å
ìû óêàçàëè, ÷òî ôóíêöèÿ äîëæíà ïðèíÿòü â êà÷åñòâå ïàðàìåòðà êàêîé-òî îáúåêò
(obj) è ïðîèçâîäèòü âñå äåéñòâèÿ ñ íèì. Íàì îñòàëîñü íà íàøåé html-ñòðàíèöå
óêàçàòü èìÿ îáúåêòà:
.......
<input
type="button" name="button" value="Âû÷èñëèòü"
onClick="areaRectangle(forma1);"><br><br>
.......
Òåïåðü,
êîãäà íàì ïîíàäîáèòñÿ âû÷èñëèòü ïëîùàäü íà êàêîé-ëèáî äðóãîé ñòðàíèöå, íàì
äîñòàòî÷íî áóäåò âûçâàòü ôóíêöèþ areaRectangle(), à â ñêîáêàõ óêàçàòü èìÿ
ôîðìû. Ïðîâåðüòå ðàáîòó íàøåãî ñöåíàðèÿ â áðàóçåðå.
5.Âåòâëåíèÿ â
ïðîãðàììå - îïåðàòîð if
Î÷åíü
÷àñòî âîçíèêàåò ñèòóàöèÿ, êîãäà íàì íóæíî âûïîëíèòü êàêîå-ëèáî äåéñòâèå â
çàâèñèìîñòè îò êàêîãî-ëèáî óñëîâèÿ. Íàïðèìåð, ó íàñ èíòåðíåò-ìàãàçèí îäåæäû. Ìû
ñïðàøèâàåì ó ïîëüçîâàòåëÿ êòî îí (ìóæ÷èíà èëè æåíùèíà) è â çàâèñèìîñòè îò
îòâåòà îòîáðàæàåì ñïèñîê ñîîòâåòñòâóþùèõ òîâàðîâ (ìóæñêèõ èëè æåíñêèõ). Ïðè
íàïèñàíèè ïîäîáíûõ ïðîãðàìì èñïîëüçóåòñÿ óñëîâíûé îïåðàòîð if . Ñèíòàêñèñ ó
íåãî ñëåäóþùèé:
if
B {S1}
else
{S2}
ãäå
B - âûðàæåíèå ëîãè÷åñêîãî òèïà, à S1 è S2 - îïåðàòîðû.
Ðàáîòàåò
ýòî òàê: âû÷èñëÿåòñÿ çíà÷åíèå âûðàæåíèÿ B, åñëè îíî èñòèííî, òî âûïîëíÿåòñÿ
îïåðàòîð S1, åñëè îíî ëîæíî, òî âûïîëíÿåòñÿ îïåðàòîð S2.
Ïðèìåð
function maxZnach(obj){
var
a=1*obj.zn1.value;
var
b=1*obj.zn2.value;
var
c=1*obj.zn3.value;
var m=a;
if (b>m)
m=b;
if (c>m)
m=c;
obj.res.value=m;
}
Îïåðàòîð âûáîðà
switch
Â
ïðåäûäóùåì óðîêå ìû ïîçíàêîìèëèñü ñ îïåðàòîðîì if. Îí óäîáåí, êîãäà íóæíî
ñîâåðøèòü êàêîå-ëèáî äåéñòâèå â çàâèñèìîñòè îò âûáîðà ïîëüçîâàòåëÿ. Íî ÷òî åñëè
òàêèõ âûáîðîâ áóäåò ìíîãî? Íàïðèìåð, ìû çíàåì ïðîãíîç ïîãîäû íà íåäåëþ âïåðåä.
À âûäàåì ïðîãíîç òîëüêî íà îäèí äåíü, íà òîò êîòîðûé âûáåðåò ïîëüçîâàòåëü. Êàê
ýòî ñäåëàòü?
Ñèíòàêñèñ
ó íåãî ñëåäóþùèé:
switch
(B)
{
case L1:
S1;
case L2: S2;
... ... ...
case Ln: Sn;
default:S
}
ãäå
B - âûðàæåíèå, L1, L2, ..., Ln - ëèòåðàëû, à S1, S2, ..., Sn - îïåðàòîðû.
Ðàáîòàåò
ýòî òàê: âû÷èñëÿåòñÿ çíà÷åíèå âûðàæåíèÿ B. Åñëè B ðàâíî L1, òî âûïîëíÿåòñÿ
îïåðàòîð S1. Åñëè B ðàâíî L2, òî âûïîëíÿåòñÿ îïåðàòîð S2 è ò.ä. Åñëè B íå ðàâíî
íè îäíîìó èç çíà÷åíèé, òî âûïîëíÿåòñÿ îïåðàòîð S.
Äàâàéòå
ïåðåïèøåì êîä íàøåé ïîñëåäíåé ôóíêöèè ñ ïîìîùüþ îïåðàòîðà switch.
function Vday1(obj){
var
a=obj.zn.value;
var
s;
switch (a)
{
case 'ïîíåäåëüíèê': s="Â ïîíåäåëüíèê
áóäåò âåòðåíî, òåìïåðàòóðà âîçäóõà ïîäíèìåòñÿ äî +20 ãðàäóñîâ";break;
case 'âòîðíèê': s="Âî âòîðíèê áóäåò
ñîëíå÷íî, òåìïåðàòóðà âîçäóõà ïîäíèìåòñÿ äî +25 ãðàäóñîâ"; break;
case 'ñðåäà': s="Â ñðåäó áóäåò
ïðîõëàäíî, òåìïåðàòóðà âîçäóõà îïóñòèòñÿ äî +17 ãðàäóñîâ"; break;
case '÷åòâåðã': s=" ÷åòâåðã áóäåò
ïàñìóðíî, òåìïåðàòóðà âîçäóõà îïóñòèòñÿ äî +10 ãðàäóñîâ"; break;
case 'ïÿòíèöà': s="Â ïÿòíèöó áóäåò
îáëà÷íî, òåìïåðàòóðà âîçäóõà ïîäíèìåòñÿ äî +15 ãðàäóñîâ"; break;
case 'ñóááîòà': s="Â ñóááîòó áóäåò
âåòðåíî, òåìïåðàòóðà âîçäóõà ïîäíèìåòñÿ äî +27 ãðàäóñîâ"; break;
case 'âîñêðåñåíüå': s="Â âîñêðåñåíüå
áóäåò ÿñíî, òåìïåðàòóðà âîçäóõà ïîäíèìåòñÿ äî +30 ãðàäóñîâ";break;
default: s='Óêàæèòå ïðàâèëüíî äåíü íåäåëè'
}
obj.res.value=s;
}
Ðåçóëüòàò
òîò æå, à êîä ãîðàçäî êîðî÷å, äà è ÷èòàáåëüíåå.
Îïåðàòîð
break èñïîëüçóåòñÿ, ÷òîáû îáåñïå÷èòü çàâåðøåíèå ðàáîòû ïåðåêëþ÷àòåëÿ ïîñëå
âûïîëíåíèÿ íóæíîãî âàðèàíòà. Åñëè åãî îïóñòèòü íè÷åãî íå èçìåíèòñÿ, ïðîñòî ñ
íèì ñöåíàðèé ðàáîòàåò áûñòðåå, õîòÿ â äàííîì ïðèìåðå ýòî è íåçàìåòíî.
Öèêë for
Ñàìûé
ïîïóëÿðíûé âèä öèêëîâ - öèêë for. Ñèíòàêñèñ ó íåãî ñëåäóþùèé:
for
(A; B; I){S}
ãäå
A
- ïåðâîíà÷àëüíîå âûðàæåíèå,
B
- óñëîâèå ïðîäîëæåíèÿ. Åñëè ýòî âûðàæåíèå ëîæíî, òî âûïîëíåíèå öèêëà
çàâåðøàåòñÿ,
I
- âûðàæåíèå èíêðåìåíòà,
{}
- òåëî öèêëà,
S - îïåðàòîðû.
function summa(obj) {
var
summa=0;
var
a1=1*obj.a1.value;
var
a2=1*obj.a2.value;
for (var i
= a1; i <= a2; i++) {
summa+=i;
}
obj.result.value = summa;
}
Öèêë while
Íå
ìåíåå ïîïóëÿðíûé âèä öèêëîâ - öèêë while. Ñèíòàêñèñ ó íåãî ñëåäóþùèé:
while
(B){S}
ãäå
B
- óñëîâèå ïðîäîëæåíèÿ. Åñëè ýòî âûðàæåíèå ëîæíî, òî âûïîëíåíèå öèêëà
çàâåðøàåòñÿ,
{}
- òåëî öèêëà,
S
- îïåðàòîðû.
Èíûìè
ñëîâàìè, îïåðàòîðû S, âûïîëíÿþòñÿ äî òåõ ïîð, ïîêà óñëîâèå B íå ñòàíåò ëîæíûì.
while (i < 3)
{
alert(i);
i++;
}