Uploaded by andy

7. Jon Duckett - JavaScript i jQuery – interaktywne strony WWW dla każdego

advertisement
SPIS TREŚCI
Wprowadzenie
5
Rozdział 1.
ABC programowania
17
Rozdział 2.
Podstawowe instrukcje JavaScript
59
Rozdział 3.
Funkcje, metody i obiekty
91
Rozdział 4.
Decyzje i pętle
151
Rozdział 5.
Obiektowy model dokumentu
189
Rozdział 6.
Zdarzenia
249
Rozdział 7.
jQuery
299
Rozdział 8.
Ajax i JSON
373
Rozdział 9.
API
415
Rozdział 10. Obsługa błędów i debugowanie
455
Rozdział 11. Panele zawartości
493
Rozdział 12. Filtrowanie, wyszukiwanie i sortowanie
533
Rozdział 13. Usprawnienia i weryfikacja formularzy sieciowych
573
Skorowidz
635
WPROWADZENIE
']LÚNLWHMNVLÈĝFHGRZLHV]VLÚMDNPRĝQDZ\NRU]\VWDÊ
ZSU]HJOÈGDUNDFK-DYD6FULSWDE\ZLWU\Q\LQWHUQHWRZHVWDï\
VLÚEDUG]LHMLQWHUDNW\ZQHLQWHUHVXMÈFHLSU]\MD]QHGODXĝ\WNRZQLNöZ3RQDGWRSR]QDV]ELEOLRWHNÚM4XHU\XïDWZLDMÈFÈ
WZRU]HQLHNRGX-DYD6FULSW
$E\ZSHïQLZ\NRU]\VWDÊPDWHULDïSU]HGVWDZLRQ\ZNVLÈĝFHSRZLQLHQHĂZLHG]LHÊMDNWZRU]\Ê
VWURQ\LQWHUQHWRZH]Z\NRU]\VWDQLHP+70/L&663R]DW\PQLHMHVWZ\PDJDQHĝDGQHLQQH
GRĂZLDGF]HQLHZ]DNUHVLHSURJUDPRZDQLD1DXNDSURJUDPRZDQLDZMÚ]\NX-DYD6FULSWREHMPXMH
QDVWÚSXMÈFHNURNL
1
2
3
3R]QDQLHSHZQ\FKpodstawowych koncepcji programowaniaRUD]SRMÚÊNWöU\FK
SURJUDPLĂFL-DYD6FULSW
Xĝ\ZDMÈGRLFKRSLVDQLD
3R]QDQLHVDPHJRMÚ]\ND
3RGREQLHMDNZSU]\SDGNX
ZV]\VWNLFKMÚ]\NöZNRQLHF]QHMHVWRSDQRZDQLHVNïDGQL
LVWUXNWXU\]GDñ
3R]QDQLHsposobu stosoZDQLDMÚ]\NDSU]H]DQDOL]Ú
SU]\NïDGöZXĝ\FLD-DYD6FULSW
ZWZRU]RQ\FKREHFQLH
ZLWU\QDFKLQWHUQHWRZ\FK
-HG\QDU]HF]SRWU]HEQDGRNRU]\VWDQLD]WHMNVLÈĝNLWRNRPSXWHU]SU]HJOÈGDUNÈLQWHUQHWRZÈRUD]
HG\WRUHPWHNVWXWDNLPMDN1RWDWQLN7H[W(GLW6XEOLPH7H[W&RGDLWG
6
WPROWADZENIE
UTWORZENIE OBIEKTU ZA
POMOCĄ NOTACJI LITERAŁU
1
1DSRF]ÈWNXSU]\NïDGX
QDVWÚSXMHXWZRU]HQLHRELHNWX]D
SRPRFÈQRWDFMLOLWHUDïX
2ELHNWQRVLQD]ZÚhotel
LSU]HGVWDZLDKRWHOQuay z 40
SRNRMDPL]NWöU\FK]RVWDïR
]DUH]HUZRZDQ\FK
=DQLPGRZLHV]VLÚMDNRGF]\W\ZDÊLWZRU]\ÊNRG
ZMÚ]\NX-DYD6FULSWQDMSLHUZZDUWRSR]QDÊSHZQH
NOXF]RZHNRQFHSFMHSURJUDPRZDQLD=RVWDQÈRQH
RPöZLRQHZWU]HFKF]ÚĂFLDFK
ABC
PROGRAMOWANIA
B
C
-DNNRPSXWHU\ZNRPSRQRZXMÈ
VLÚZRWDF]DMÈF\QDVĂZLDW"
-DNPRĝQDXWZRU]\ÊVNU\SW
QDVWURQÚLQWHUQHWRZÈ"
A
&]\PMHVWVNU\SWLMDN
PRĝQDJRXWZRU]\Ê"
1DVWÚSQLH]DZDUWRĂÊVWURQ\
]RVWDMHXDNWXDOQLRQDGDQ\PL
SRFKRG]ÈF\PL]RELHNWX1D]ZD
KRWHOXMHVWZ\ĂZLHWODQDSU]H]
X]\VNDQLHGRVWÚSXGRZïDĂFLZRĂFLRQD]ZLHnameQDWRPLDVW
OLF]EDZROQ\FKSRNRLMHVW
VSUDZG]DQD]DSRPRFÈPHWRG\
checkAvailability()
c3/js/object-literal.js
JAVASCRIPT
var hotel = {
name: ’Park’,
rooms: 120,
booked: 77,
checkAvailability: function() {
return this.rooms - this.booked;
}
};
var elName = document.getElementById(’hotelName’);
elName.textContent = hotel.name;
var elName = document.
getElementById(’hotelName’);
elName.textContent = hotel.name;
var elRooms = document.getElementById(’rooms’);
elRooms.textContent = hotel.checkAvailability();
1DWHMVWURQLHWZRU]\P\NROHMQ\RELHNW
-HJRQD]ZDWRUöZQLHĝhotelDOHW\PUD]HP
PRGHOSU]HGVWDZLDKRWHO]XSHïQLHLQQ\
:W\PPRPHQFLHZ\REUDěVRELHLQQÈVWURQÚ
ZWHMVDPHMZLWU\QLHLQWHUQHWRZHMSRĂZLÚFRQHMSRGUöĝRP
c03/js/object-literal2.js
JAVASCRIPT
var hotel = {
name: ’Quay’,
rooms: 40,
booked: 25,
checkAvailability: function() {
return this.rooms - this.booked;
}
};
$E\X]\VNDÊGRVWÚSGR
ZïDĂFLZRĂFLRELHNWXSR
MHJRQD]ZLHSRGDQRNURSNÚ
DQDVWÚSQLHQD]ZÚLQWHUHVXMÈFHM
QDVZïDĂFLZRĂFL
*G\RSDQXMHV]SRGVWDZ\ZNROHMQ\FKUR]G]LDïDFK]REDF]\V]MDNMÚ]\N-DYD6FULSWPRĝQD
Z\NRU]\VWDÊZFHOXQDND]DQLDSU]HJOÈGDUNRPLQWHUQHWRZ\PZ\NRQ\ZDQLDSHZQ\FK]DGDñ
UTWORZENIE DALSZYCH
OBIEKTÓW ZA POMOCĄ
NOTACJI LITERAŁU
+RWHO3DUNMHVWZLÚNV]\PDSRNRL
]NWöU\FK]RVWDïR]DUH]HUZRZDQ\FK
:NRG]LH]PLHQLï\VLÚMHG\QLHZDUWRĂFL
SRV]F]HJöOQ\FKZïDĂFLZRĂFLRELHNWXhotel:
• QD]ZDKRWHOX
• OLF]EDSRNRL
• OLF]ED]DUH]HUZRZDQ\FKSRNRL
var elRooms = document.
getElementById(’rooms’);
elRooms.textContent = hotel.
checkAvailability();
WYNIK
3R]RVWDïDF]ÚĂÊVWURQ\G]LDïDZGRNïDGQLH
WDNLVDPVSRVöE1D]ZDKRWHOXMHVWZ\ĂZLHWODQD]Xĝ\FLHPWHJRVDPHJRNRGX0HWRGD
checkAvailability()UöZQLHĝQLHXOHJD
]PLDQLHLMHVWZ\ZRï\ZDQDZGRNïDGQLHWHQ
VDPVSRVöE
WYNIK
-HĝHOLZLWU\QDLQWHUQHWRZD]DZLHUDLQIRUPDFMHRKRWHOLZWHG\MHG\Q\P]PLHQQ\P
DVSHNWHPEÚGÈZDUWRĂFLWU]HFKZ\PLHQLRQ\FKZïDĂFLZRĂFLRELHNWX3RQLHZDĝPRGHO
KRWHOXMHVWWZRU]RQ\QDSRGVWDZLHGDQ\FK
WHQVDPNRGPRĝHX]\VNDÊGRVWÚSGR
LQIRUPDFMLLZ\ĂZLHWOLÊMHGODNDĝGHJRKRWHOX
NWöUHJRGDQHVÈSU]HFKRZ\ZDQHZW\P
VDP\PPRGHOX
3RGREQLHDE\Xĝ\ÊPHWRG\
Z\VWDUF]\SRGDÊQD]ZÚ
RELHNWXNURSNÚLPHWRGÚ
GRZ\ZRïDQLDQDSU]\NïDG
hotel.checkAvailability()
-HĝHOLPHWRGDZ\PDJD
SDUDPHWUöZPRĝQDMHSRGDÊ
ZQDZLDVLH SRGREQLHMDN
SU]HND]\ZDQHVÈDUJXPHQW\GR
IXQNFML 18
110
ABC PROGRAMOWANIA
1DSRF]ÈWNXNDĝGHJRUR]G]LDïX]QDMGXMHVLÚwproZDG]HQLHNWöUHSU]HGVWDZLD]DJDGQLHQLDRPöZLRQH
ZGDQHMF]ÚĂFLNVLÈĝNL
3U]HGVWDZLRQHSRQLĝHMGU]HZRPRGHOX'20
SRND]XMHF]ÚĂÊJïöZQÈVWURQ\]OLVWÈU]HF]\GR
NXSLHQLD3RQLHZDĝQDMSLHUZNRQFHQWUXMHP\VLÚ
QDX]\VNDQLXGRVWÚSXGRHOHPHQWöZGLDJUDP
]DZLHUDW\ONRZÚ]ï\HOHPHQWöZ'LDJUDP\QD
NROHMQ\FKVWURQDFKEÚGÈMDVQRZVND]\ZDï\
HOHPHQW\]ZUDFDQHSU]H]]DS\WDQLHPRGHOX'20
3DPLÚWDMZÚ]ï\HOHPHQWöZWRUHSUH]HQWDFMD'20
GDQHJRHOHPHQWX 0HWRGDSRUD]SLHUZV]\REVïXJLZDQDZSU]HJOÈGDUNDFK,(
2SHUDZV]\VWNLHZHUVMH&KURPH)LUHIR[L6DIDUL
getElementById('one')
querySelector(’selektor css’)
:\NRU]\VWXMHVNïDGQLÚVHOHNWRUD&66Z\ELHUDMÈFHJRMHGHQHOHPHQW
OXEZLÚFHMHOHPHQWöZ0HWRGDWD]ZUDFDW\ONRSLHUZV]\]GRSDVRZDQ\FKHOHPHQWöZ
0HWRGDSRUD]SLHUZV]\REVïXJLZDQDZSU]HJOÈGDUNDFK IE8,
)LUHIR[6DIDUL&KURPHL2SHUD
c z y 0 < 10
?
querySelector('li.hot')
getElementsByClassName(’klasa’)
getElementsByClassName('hot')
h1
h2
ul
script
li
li
li
li
0HWRGDSRUD]SLHUZV]\REVïXJLZDQDZSU]HJOÈGDUNDFK IE9,
)LUHIR[6DIDUL&KURPHL2SHUD .LONDZF]HĂQLHMV]\FK
ZHUVMLSU]HJOÈGDUHNRIHUXMHF]ÚĂFLRZÈOXE]DZLHUDMÈFÈEïÚG\REVïXJÚ
WHMPHWRG\ getElementsByTagName(’nazwaZnacznika’)
GRUPY WĘZŁÓW ELEMENTÓW
NAJKRÓTSZA TRASA
-HĝHOLPHWRGDPRĝH]ZUöFLÊFRQDMPQLHMGZD
ZÚ]ï\WRMHMZDUWRĂFLÈ]ZURWQÈ]DZV]HEÚG]LH
NodeListF]\OLkolekcjaZÚ]ïöZ QDZHWZSU]\SDGNX]QDOH]LHQLDW\ONRMHGQHJRGRSDVRZDQHJR
HOHPHQWX 1DVWÚSQLH]RWU]\PDQHMOLVW\WU]HED
Z\EUDÊHOHPHQW]DSRPRFÈQXPHUXLQGHNVX
R]QDF]DWRĝHQXPHU\UR]SRF]\QDMÈVLÚRG0,
SRGREQLHMDNZNDĝGHMWDEOLF\ :\V]XNDQLHQDMV]\EV]HJRVSRVREXX]\VNDQLD
GRVWÚSXGRHOHPHQWXQDVWURQLHSRZRGXMHĝH
Xĝ\WNRZQLNRGELHUDMÈMDNRIXQNFMRQXMÈFÈVSUDZQLH
LV]\ENRUHDJXMÈFÈQDMHJRG]LDïDQLD1DMNUöWV]D
WUDVD]Z\NOHR]QDF]DDQDOL]ÚPLQLPDOQHMOLF]E\
ZÚ]ïöZQDGURG]HGRHOHPHQWX]NWöU\PVNU\SW
PDSUDFRZDÊ1DSU]\NïDGPHWRGDgetElementById()V]\ENR]ZUöFLMHGHQHOHPHQW SRQLHZDĝ
QDVWURQLHLQWHUQHWRZHMQLHSRZLQQ\]QDMGRZDÊ
VLÚGZDHOHPHQW\RWDNLHMVDPHMZDUWRĂFLDWU\EXWX
id :\PLHQLRQÈPHWRGÚPRĝQDMHGQDN]DVWRVRZDÊW\ONRZWHG\JG\HOHPHQWPD]GHğQLRZDQ\
DWU\EXWid
198 OBIEKTOWY MODEL DOKUMENTU
j 1 do 1
doda
czy 1 < 10?
j 1 do 0
doda
cz y 8 < 10
?
j 1 do 8
doda
c z y 9 < 10
?
j 1 do 9
doda
cz y 1 0 < 1
0?
METODY ZWRACAJĄCE CO NAJMNIEJ JEDEN ELEMENT (W POSTACI NODELIST)
:\ELHUDHOHPHQWOXEHOHPHQW\QDSRGVWDZLHZDUWRĂFLDWU\EXWX
class$E\HOHPHQWPRĝQDE\ïRZ\EUDÊ]QDF]QLN+70/PXVL
]DZLHUDÊDWU\EXWclass']LDïDQLHWHMPHWRG\MHVWV]\EV]HQLĝ
querySelectorAll()
div
111
for (var i = 0; i < 10; i++) {
document.write(i);
}
3RELHUDMHGHQHOHPHQWQDSRGVWDZLHZDUWRĂFLMHJRDWU\EXWXid
$E\HOHPHQWPRĝQDE\ïRZ\EUDÊ]QDF]QLN+70/PXVL]DZLHUDÊ
DWU\EXWid
body
1DSU]\NïDGNLONDHOHPHQWöZPRĝHPLHÊWDNÈ
VDPÈQD]ZÚ]QDF]QLNDDZLÚFgetElementsByTagName()]DZV]H]ZUöFLNodeList
FUNKCJE, METODY I OBIEKTY
ZAPĘTLANIE
getElementById(’id’)
=DS\WDQLDPRGHOX'20PRJÈ]ZUDFDÊW\ONRMHGHQHOHPHQWOXEWDN]ZDQ\
NodeListF]\OLNROHNFMÚZÚ]ïöZ
&]DVDPL]DFKRG]LSRWU]HEDX]\VNDQLDGRVWÚSX
GRMHGQHJRHOHPHQWX F]\OLIUDJPHQWXVWURQ\
SU]HFKRZ\ZDQHMSU]H]WHQHOHPHQW =NROHL
ZLQQ\FKV\WXDFMDFKNRQLHF]QHMHVWZ\EUDQLH
JUXS\HOHPHQWöZQDSU]\NïDGZV]\VWNLFK<h1>
QDVWURQLHOXEWHĝZV]\VWNLFK<li>ZUDPDFK
ZVND]DQHMOLVW\
FUNKCJE, METODY I OBIEKTY
6WURQ\informacyjneSU]HGVWDZLDMÈNOXF]RZH
HOHPHQW\NRGX-DYD6FULSW.RG+70/MHVWZNRORU]H
QLHELHVNLP&66ĽZNRORU]HUöĝRZ\PQDWRPLDVW
-DYD6FULSWĽZNRORU]H]LHORQ\P
METODY ZWRACAJĄCE JEDEN WĘZEŁ ELEMENTU
UZYSKANIE DOSTĘPU
DO ELEMENTÓW
-HĝHOLPDV]GZDRELHNW\QDVWURQLHWZRU]\V]
MH]DSRPRFÈWHMVDPHMQRWDFMLDOHSU]HFKRZXMHV]Z]PLHQQ\FKRUöĝQ\FKQD]ZDFK
wyświetl na stronie
wyświetl na stronie
wyświetl na stronie
0
1
8
9
POCZĄTEK i = 0
:\ELHUDZV]\VWNLHHOHPHQW\QDVWURQLHSRVLDGDMÈFH]QDF]QLN
RSRGDQHMQD]ZLH']LDïDQLHWHMPHWRG\MHVWV]\EV]HQLĝquerySelectorAll() .LONDZF]HĂQLHMV]\FKZHUVMLSU]HJOÈGDUHNRIHUXMH
F]ÚĂFLRZÈOXE]DZLHUDMÈFÈEïÚG\REVïXJÚWHMPHWRG\ 0HWRGDSRUD]SLHUZV]\REVïXJLZDQDZSU]HJOÈGDUNDFK IE6+,
)LUHIR[6DIDUL&KURPHL2SHUD
wyświetl na stronie
i=1
i=2
i=8
i=9
i = 10
END
getElementsByTagName('li')
querySelectorAll(’selektor css’)
8ĝ\ZDVNïDGQLVHOHNWRUD&66ZFHOXZ\EUDQLDMHGQHJRHOHPHQWXOXE
ZLÚNV]HMOLF]E\HOHPHQWöZDQDVWÚSQLH]ZUDFDZV]\VWNLHHOHPHQW\
GRSDVRZDQH
0HWRGDSRUD]SLHUZV]\REVïXJLZDQDZSU]HJOÈGDUNDFK IE8,
)LUHIR[6DIDUL&KURPHL2SHUD
W trakcie pierwszej iteracji
SÚWOL]PLHQQDi OLF]QLN PD
SU]\SLVDQÈZDUWRĂÊ0.
querySelectorAll('li.hot')
OBIEKTOWY MODEL DOKUMENTU 199
6WURQ\]informacjami dodatkowymiPDMÈELDïH
WïRLZ\MDĂQLDMÈNRQWHNVWWHPDWöZRPöZLRQ\FK
ZGDQ\PUR]G]LDOH
178
3RGF]DVNDĝGHMNROHMQHM
LWHUDFMLQDVWÚSXMHVSUDZG]HQLH
ZDUXQNXF]\]PLHQQDiPD
ZDUWRĂÊPQLHMV]ÈQLĝ10.
1DVWÚSQLHZ\NRQ\ZDQ\MHVW
NRGZHZQÈWU]SÚWOL SROHFHQLD
]QDMGXMÈFHVLÚZQDZLDVLH
NODPURZ\P '(&<=-(,3}7/(
=PLHQQDiPRĝHE\ÊZ\NRU]\VWDQDZHZQÈWU]SÚWOL
:RPDZLDQ\PSU]\NïDG]LHMHVW
Xĝ\ZDQDZFHOXZ\ĂZLHWOHQLD
OLF]E\QDVWURQLH
3RZ\NRQDQLXSROHFHñ
ZSÚWOLQDVWÚSXMHLQNUHPHQWDFMD
]PLHQQHMi.
']LDïDQLHSÚWOLNRñF]\VLÚJG\
ZDUXQHNQLHSU]\MPXMHGïXĝHM
ZDUWRĂFLtrue6NU\SWSU]HFKRG]LGRNROHMQHJRZLHUV]DNRGX
SREORNXSÚWOL
'(&<=-(,3}7/(
179
DiagramyLLNRQRJUDğNLVÈSU]HGVWDZLRQHQD
FLHPQ\PWOH6WDQRZLÈSURVWÈZL]XDOQÈSUH]HQWDFMÚ
RPDZLDQ\FK]DJDGQLHñ
PODSUMOWANIE
PRZYKŁAD
PODSTAWOWE INSTRUKCJE JAVASCRIPT
AJAX I JSON
f 6NU\SWVNïDGDVLÚ]VHULLSROHFHñ]NWöU\FKNDĝGHSU]\SRPLQD
NURNZSU]HSLVLHNXOLQDUQ\P
:W\PSU]\NïDG]LHZ\ĂZLHWODQHVÈLQIRUPDFMHGRW\F]ÈFHWU]HFKZ\GDU]Hñ'DQHSRFKRG]È]WU]HFK
UöĝQ\FKěUöGHï
f 6NU\SW]DZLHUDEDUG]RGRNïDGQHLQVWUXNFMH1DSU]\NïDG
QDND]XMH]DSDPLÚWDQLHZDUWRĂFLSU]HGSU]HSURZDG]HQLHP
REOLF]Hñ]MHMXĝ\FLHP
3RGF]DVZF]\W\ZDQLDVWURQ\LQIRUPDFMHGRW\F]ÈFHPLHMVF
Z\GDU]HñVÈXPLHV]F]DQHZNRG]LH+70/.LHG\Xĝ\WNRZQLNNOLNQLH
]GDU]HQLHZOHZHMNROXPQLHĂURGNRZDEÚG]LH]DZLHUDÊKDUPRQRJUDPZ\EUDQHJR]GDU]HQLD
f =PLHQQHVïXĝÈGRW\PF]DVRZHJRSU]HFKRZ\ZDQLDGDQ\FK
Z\NRU]\VW\ZDQ\FKZVNU\SFLH
:OHZHMNROXPQLHïÈF]DPDMÈDWU\EXWidNWöUHJRZDUWRĂÊWRGZXOLWHURZ\LGHQW\ğNDWRUVWDQXZ86$ZNWöU\PEÚG]LHPLDïRPLHMVFH
GDQHZ\GDU]HQLH
<a id=”tx” href=”tx.html”>... Austin, TX</a>
f 7DEOLFDWR]PLHQQDVSHFMDOQHJRW\SXĽPRĝHSU]HFKRZ\ZDÊ
ZLHOHHOHPHQWöZSRZLÈ]DQ\FK]HVREÈGDQ\FK
+DUPRQRJUDP\Z\GDU]HñVÈSU]HFKRZ\ZDQHZRELHNFLH-621
Z]HZQÚWU]Q\PSOLNXSREUDQ\PSRGF]DVZF]\W\ZDQLDPRGHOX'20
*G\Xĝ\WNRZQLNNOLNQLHZ\EUDQÈVHVMÚZĂURGNRZHMNROXPQLHMHM
RSLVSRMDZLVLÚZNROXPQLHSUDZHM
f -DYD6FULSWUR]UöĝQLDZDUWRĂFLOLF]ERZH ļ FLÈJLWHNVWRZH
WHNVW RUD]ZDUWRĂFLERRORZVNLH trueLfalse :ĂURGNRZHMNROXPQLHZ\ĂZLHWODMÈFHMKDUPRQRJUDP\Z\GDU]HñW\WXï
NDĝGHMVHVMLMHVWZVWDZLDQ\ZHZQÈWU]ïÈF]DSRZRGXMÈFHJRZ\ĂZLHWOHQLHLQIRUPDFMLRGDQHMVHVML
<a href=”descriptions.html#Circuit-Hacking”>
Circuit Hacking</a>
f 1DSRGVWDZLHZ\UDĝHQLDMHVWREOLF]DQDMHGQDZDUWRĂÊ
f 3RGF]DVREOLF]DQLDZDUWRĂFLZ\UDĝHQLDRSLHUDMÈVLÚ
QDRSHUDWRUDFK
2SLV\ZV]\VWNLFKVHVMLVÈSU]HFKRZ\ZDQHZSOLNX+70/
3RV]F]HJöOQHRSLV\VHVMLVÈZ\ELHUDQH]DSRPRFÈPHWRG\M4XHU\
RQD]ZLH.load()RUD]VHOHNWRUD#SU]HGVWDZLRQHJRZSRGUR]G]LDOH
ķ:F]\W\ZDQLH]DZDUWRĂFL+70/QDVWURQLH]Z\NRU]\VWDQLHP
M4XHU\ĵ
:SUDZHMNROXPQLHRSLVVHVMLMHVWSRELHUDQ\]SOLNX+70/.DĝGD
VHVMDMHVWSU]HFKRZ\ZDQDZHOHPHQFLHNWöUHJRDWU\EXWid]DZLHUD
W\WXïVHVML ZUD]]HVSDFMDPL]DVWÈSLRQ\PLïÈF]QLNDPL <div id=”Wprowadzenie-do-modelowania-3D”>
<h3>:SURZDG]HQLHGRĂZLDWD'</h3>
<p>3U]\MGěLSU]HNRQDMVLÚMDNWZRU]\ÊPRGHOH'</p>
</div>
3RQLHZDĝïÈF]DVÈGRGDZDQHLXVXZDQHZSU]\NïDG]LHXĝ\WR
GHOHJDFML]GDU]Hñ
406 AJAX I JSON
AJAX I JSON 407
3U]\NïDGWRSRGVXPRZDQLHLQIRUPDFMLSU]HGVWDZLRQ\FKZGDQ\PUR]G]LDOHSRND]XMHSUDNW\F]Q\
VSRVöELFK]DVWRVRZDQLD
90
PODSTAWOWE INSTRUKCJE JAVASCRIPT
1DNRñFXNDĝGHJRUR]G]LDïX]QDMG]LHV]podsumowanie=DZLHUDRQRNOXF]RZH]DJDGQLHQLDRPöZLRQH
ZGDQ\PUR]G]LDOH
WPROWADZENIE
7
JAK JAVASCRIPT ZAPEWNIA
WIĘKSZĄ INTERAKTYWNOŚĆ
STRON INTERNETOWYCH?
-DYD6FULSW
]DSHZQLDZLÚNV]È
LQWHUDNW\ZQRĂÊVWURQ
LQWHUQHWRZ\FKSRQLHZDĝ
XPRĝOLZLDPRG\ğNRZDQLH
LFK]DZDUWRĂFLRUD]
NRGX]QDF]QLNöZ
G]LÚNLNWöU\PVWURQ\WH
PRJÈE\ÊZ\ĂZLHWODQH
ZSU]HJOÈGDUNDFK
1
DOSTĘP DO ZAWARTOŚCI
-DYD6FULSWPRĝQDZ\NRU]\VWDÊGRZ\EUDQLD
GRZROQHJRHOHPHQWXDWU\EXWXOXEWHNVWX
QDVWURQLH+70/1DSU]\NïDG
• Z\ELHU]WHNVW]QDMGXMÈF\VLÚZHZV]\VW•
•
NLFKHOHPHQWDFK<h1>QDVWURQLH
Z\ELHU]ZV]\VWNLHHOHPHQW\NWöUHPDMÈ
SU]\SLVDQ\DWU\EXWclassRZDUWRĂFL
note
VSUDZGěGDQHZSURZDG]RQHZSROX
GDQ\FKZHMĂFLRZ\FKNWöUHPDSU]\SLVDQ\DWU\EXWidRZDUWRĂFLemail
2
MODYFIKACJA
ZAWARTOŚCI STRONY
-DYD6FULSWPRĝQDZ\NRU]\VWDÊZFHOXGRGDZDQLDHOHPHQWöZDWU\EXWöZRUD]WHNVWX
QDVWURQLHEÈGěWHĝZFHOXLFKXVXZDQLD
6SUöEXMQDSU]\NïDG
• GRGDÊDNDSLWWHNVWXSRSLHUZV]\P
•
•
8
WPROWADZENIE
HOHPHQFLH<h1>
]PLHQLÊZDUWRĂÊDWU\EXWöZclassZFHOX
SU]\SLVDQLDW\PHOHPHQWRPLQQ\FKVW\OöZ
&66
]PLHQLÊZLHONRĂÊOXESRïRĝHQLHHOHPHQWX
<img>
3
REGUŁY PROGRAMU
,VWQLHMHPRĝOLZRĂÊ]GHğQLRZDQLDNURNöZ
Z\NRQ\ZDQ\FKSU]H]SU]HJOÈGDUNÚLQWHUQHWRZÈ
QDZ]öUSU]HSLVXNXOLQDUQHJR NWöUHSR]ZROÈ
MHMQDX]\VNDQLHGRVWÚSXGR]DZDUWRĂFLVWURQ\
L]PLDQÚWHM]DZDUWRĂFL1DSU]\NïDG
• VNU\SWJDOHULLPRĝHVSUDZG]LÊF]\Xĝ\WNRZ•
•
QLNNOLNQÈïREUD]LMHĂOLWDNWRZ\ĂZLHWOLÊ
ZLÚNV]ÈZHUVMÚWHJRREUD]X
NDONXODWRUNRV]WXNUHG\WXKLSRWHF]QHJR
PRĝHSREUDÊZDUWRĂFL]IRUPXODU]D
SU]HSURZDG]LÊREOLF]HQLDLZ\ĂZLHWOLÊ
Z\VRNRĂÊUDW\
ZWUDNFLHDQLPDFMLDSOLNDFMDPRĝH
VSUDZG]LÊZ\PLDU\RNQDSU]HJOÈGDUNL
LQWHUQHWRZHMDQDVWÚSQLHSU]HVXQÈÊREUD]
QDGöïZLGRF]QHJRREV]DUX QD]\ZDQHJR
WDNĝHviewport :MÚ]\NX-DYD6FULSW
VWRVRZDQ\FKMHVWZLHOHWUDG\F\MQ\FK
UHJXïSURJUDPRZDQLD
']LÚNLXĝ\FLXNRGX-DYD6FULSWVWURQD
LQWHUQHWRZDPRĝHE\ÊSRVWU]HJDQD
MDNREDUG]LHMLQWHUDNW\ZQD
SRQLHZDĝUHDJXMHQDG]LDïDQLD
SRGHMPRZDQHSU]H]
Xĝ\WNRZQLND
4
REAKCJA NA ZDARZENIA
0RĝQDRNUHĂOLÊĝHVNU\SWSRZLQLHQE\Ê
Z\NRQDQ\SRZ\VWÈSLHQLXZVND]DQHJR
]GDU]HQLD1DSU]\NïDGZ\NRQDQLHVNU\SWX
PRĝHQDVWÈSLÊQDVNXWHN
• NOLNQLÚFLDSU]\FLVNX
• NOLNQLÚFLDïÈF]D
• XPLHV]F]HQLDNXUVRUDP\V]\QDG
•
•
•
HOHPHQWHP
ZSURZDG]HQLDGDQ\FKGRIRUPXODU]D
VLHFLRZHJR
XSï\ZXRNUHĂORQHJRF]DVX
]DNRñF]HQLDZF]\W\ZDQLDVWURQ\
LQWHUQHWRZHM
WPROWADZENIE
9
PRZYKŁADY UŻYCIA KODU
JAVASCRIPT W PRZEGLĄDARCE
INTERNETOWEJ
0RĝOLZRĂÊ]PLDQ\]DZDUWRĂFL
VWURQ\+70/SRMHMZF]\WDQLX
ZSU]HJOÈGDUFHLQWHUQHWRZHM
WRSRWÚĝQDIXQNFMD:\PLHQLRQH
SRQLĝHMSU]\NïDG\RSLHUDMÈVLÚQD
PRĝOLZRĂFLX]\VNDQLDGRVWÚSX
GR]DZDUWRĂFLVWURQ\
PRG\ğNDFML]DZDUWRĂFLVWURQ\
UHJXïDFKSURJUDPXOXESROHFHQLDFK
SU]H]QDF]RQ\FKGODSU]HJOÈGDUNL
LQWHUQHWRZHM
UHDNFMLQD]GDU]HQLDZ\ZRï\ZDQH
SU]H]Xĝ\WNRZQLNDOXESU]HJOÈGDUNÚ
LQWHUQHWRZÈ
POKAZ SLAJDÓW
3U]HGVWDZLRQ\ZUR]G]LDOH
3RND]VODMGöZPRĝHZ\ĂZLHWOLÊZLHOHUöĝQ\FK
REUD]öZ OXE]DZDUWRĂÊ+70/ ZW\PVDP\P
PLHMVFXQDVWURQLH6ODMG\VÈRGWZDU]DQH
DXWRPDW\F]QLHMDNRVHNZHQFMDOXEUÚF]QLHJG\
Xĝ\WNRZQLNSRUXV]DVLÚPLÚG]\SRV]F]HJöOQ\PL
VODMGDPL']LÚNLSRND]RZLVODMGöZPRĝQD
Z\ĂZLHWOLÊZLÚNV]ÈLORĂÊWUHĂFLQDRJUDQLF]RQ\P
REV]DU]HVWURQ\
5HDNFMDVNU\SWMHVWZ\ZRï\ZDQ\SRGF]DV
ZF]\W\ZDQLDVWURQ\
'RVWÚSSREUDQLHZV]\VWNLFKVODMGöZ]SRND]X
VODMGöZ
0RG\ğNDFMDZ\ĂZLHWOHQLHW\ONRSLHUZV]HJRVODMGX
XNU\FLHSR]RVWDï\FK 3URJUDPXVWDZLHQLHOLF]QLNDF]DVXRNUHĂODMÈFHJR
PRPHQWZ\ĂZLHWOHQLDNROHMQHJRVODMGX
0RG\ğNDFMD]PLDQDZ\ĂZLHWODQHJRVODMGX
5HDNFMDXĝ\WNRZQLNNOLNDSU]\FLVNR]QDF]DMÈF\
LQQ\VODMG
3URJUDPXVWDOHQLHVODMGXNWöU\SRZLQLHQE\Ê
Z\ĂZLHWORQ\
0RG\ğNDFMDZ\ĂZLHWOHQLHNOLNQLÚWHJRVODMGX
10
WPROWADZENIE
3U]\NïDG\Z\PLHQLRQHQDW\FKGZöFKVWURQDFK
GDMÈSU]HGVPDNPRĝOLZRĂFLNRGX-DYD6FULSWQD
VWURQLHLQWHUQHWRZHMRUD]WHFKQLNSUH]HQWRZDQ\FK
ZNVLÈĝFH
:NROHMQ\FKUR]G]LDïDFKGRZLHV]VLÚMDNLNLHG\
X]\VNDÊGRVWÚSOXEPRG\ğNRZDÊ]DZDUWRĂÊ
GRGDZDÊUHJXï\SURJUDPRZDQLDLUHDJRZDÊQD
]GDU]HQLD
FORMULARZE SIECIOWE
3U]HGVWDZLRQHZUR]G]LDOH
:HU\ğNDFMDIRUPXODU]\VLHFLRZ\FK VSUDZG]HQLH
F]\]RVWDï\SUDZLGïRZRZ\SHïQLRQH MHVWQLH]Z\NOH
ZDĝQDMHĂOLGDQHZHMĂFLRZHDSOLNDFMLVÈGRVWDUF]DQHSU]H]Xĝ\WNRZQLND-DYD6FULSWPRĝHSRLQIRUPRZDÊXĝ\WNRZQLNDREïÚGQLHZSURZDG]RQ\FK
GDQ\FK3RQDGWRSRWUDğSU]HSURZDG]LÊVNRPSOLNRZDQHREOLF]HQLDQDSRGVWDZLHGRZROQ\FKGDQ\FK
ZSURZDG]RQ\FKSU]H]Xĝ\WNRZQLNDDQDVWÚSQLH
SU]HND]DÊXĝ\WNRZQLNRZLZ\QLNREOLF]Hñ
ReakcjaSRZSURZDG]HQLXQD]Z\Xĝ\WNRZQLN
NOLNQÈïSU]\FLVNZ\V\ïDMÈF\IRUPXODU]
'RVWÚSVNU\SWSRELHUDZDUWRĂÊ]SRODIRUPXODU]D
VLHFLRZHJR
ProgramVSUDZG]HQLHF]\QD]ZDXĝ\WNRZQLND
MHVWZ\VWDUF]DMÈFRGïXJD
0RG\ğNDFMDZ\ĂZLHWOHQLHNRPXQLNDWXLQIRUPXMÈFHJRĝHQD]ZDXĝ\WNRZQLND]DZLHUD]E\WPDïR
]QDNöZ
ODŚWIEŻENIE FRAGMENTU
STRONY
3U]HGVWDZLRQHZUR]G]LDOH
%\ÊPRĝHQLHFKFHV]Z\PXV]DÊQDRGZLHG]DMÈF\FKRGĂZLHĝHQLD]DZDUWRĂFLFDïHMVWURQ\
LQWHUQHWRZHM]ZïDV]F]DJG\XDNWXDOQLRQ\PDE\Ê
W\ONRMHMQLHZLHONLIUDJPHQW2GĂZLHĝHQLHW\ONR
IUDJPHQWXVWURQ\PRĝHGDZDÊXĝ\WNRZQLNRZL
SRF]XFLHĝHG]LDïDRQDV]\EFLHMLSRGREQLHMDN
]Z\NïDDSOLNDFMDNRPSXWHURZD
ReakcjaNOLNQLÚFLHïÈF]DSU]H]Xĝ\WNRZQLND
SRZRGXMHZ\ZRïDQLHVNU\SWX
'RVWÚSNOLNQLÚWHïÈF]H
ProgramZF]\WDQLHQRZHM]DZDUWRĂFLZVND]\ZDQHMSU]H]NOLNQLÚWHïÈF]H
'RVWÚSZ\V]XNDQLHHOHPHQWöZGR]DVWÈSLHQLDQD
VWURQLH
0RG\ğNDFMD]DVWÈSLHQLH]DZDUWRĂFLQRZÈ
WPROWADZENIE
11
FILTROWANIE DANYCH
3U]HGVWDZLRQHZUR]G]LDOH
-HĝHOLQDVWURQLHPD]RVWDÊZ\ĂZLHWORQ\FK
ZLHOHLQIRUPDFMLWRPRĝQDSRPöFXĝ\WNRZQLNRP
ZZ\V]XNLZDQLXSRWU]HEQ\FKLPLQIRUPDFMLSU]H]
]DSHZQLHQLHREVïXJLğOWUöZ:RPDZLDQ\P
SU]\NïDG]LHEÚGÈWRSU]\FLVNLZ\JHQHURZDQHQD
SRGVWDZLHGDQ\FKZDWU\EXWDFKHOHPHQWöZ+70/
<img>.LHG\Xĝ\WNRZQLNNOLNQLHMHGHQ]SU]\FLVNöZZöZF]DVZ\ĂZLHWODQHVÈW\ONRWHREUD]\
NWöUHPDMÈSU]\SLVDQHVïRZRNOXF]RZHZVND]DQH
SU]H]NOLNQLÚW\SU]\FLVN
ReakcjaVNU\SWMHVWZ\ZRï\ZDQ\SRGF]DV
ZF]\W\ZDQLDVWURQ\
Program]HEUDQLHVïöZNOXF]RZ\FK]GHğQLRZDQ\FKZREUD]DFK
Program]DPLDQDVïöZNOXF]RZ\FKQDSU]\FLVNL
NWöUHPRJÈE\ÊNOLNDQHSU]H]Xĝ\WNRZQLND
ReakcjaXĝ\WNRZQLNNOLNDMHGHQ]SU]\FLVNöZ
ProgramZ\V]XNDQLH]ELRUXREUD]öZNWöUH
SRZLQQ\E\ÊZ\ĂZLHWORQH
0RG\ğNDFMDZ\ĂZLHWOHQLHSRG]ELRUXREUD]öZ
NWöUHXĝ\ZDMÈGDQHJRWDJX
12
WPROWADZENIE
STRUKTURA KSIĄŻKI
$E\ĂPöJïQDXF]\ÊVLÚ]WHMNVLÈĝNLMÚ]\ND-DYD6FULSW
]RVWDïDRQDSRG]LHORQDQDGZLHF]ÚĂFL
KONCEPCJE PODSTAWOWE
PRAKTYCZNE APLIKACJE
3LHUZV]HG]LHZLÚÊUR]G]LDïöZVWDQRZLZSURZDG]HQLHGRSRGVWDZSURJUDPRZDQLDZMÚ]\NX
-DYD6FULSW'RZLHV]VLÚMDNXĝ\ZDÊ-DYD6FULSWGR
XWZRU]HQLDEDUG]LHMSU]\FLÈJDMÈF\FKLQWHUDNW\ZQ\FKLXĝ\WHF]Q\FKZLWU\QLQWHUQHWRZ\FK
'RWHJRPLHMVFDNVLÈĝNLSR]QDV]MXĝZLHOHSU]\NïDGöZXĝ\FLDMÚ]\ND-DYD6FULSWZSRSXODUQ\FK
ZLWU\QDFKLQWHUQHWRZ\FK3R]QDQHGRWÈGWHFKQLNL
Z\NRU]\VWDP\ZSUDNW\F]Q\FKGHPRQVWUDFMDFK
Xĝ\FLDMÚ]\ND-DYD6FULSWSU]H]SURIHVMRQDOQ\FK
SURJUDPLVWöZ1LHW\ONRSR]QDV]SU]\NïDG\
Z\PDJDMÈFHFDïHJRUR]G]LDïXDOHUöZQLHĝGRZLHV]
VLÚZLÚFHMRSURFHVLHSURMHNWRZDQLDLWZRU]HQLD
VNU\SWöZ]XSHïQLHRGSRF]ÈWNX
:UR]G]LDOHSR]QDV]NOXF]RZHNRQFHSFMH
]ZLÈ]DQH]SURJUDPRZDQLHPNRPSXWHURZ\P
=REDF]\V]MDN]DSRPRFÈGDQ\FKNRPSXWHUWZRU]\PRGHOU]HF]\ZLVWHJRĂZLDWDRUD]MDNPRĝQD
Z\NRU]\VWDÊ-DYD6FULSWGR]PLDQ\]DZDUWRĂFL
VWURQ\+70/
:UR]G]LDïDFKRGGR]RVWDQÈRPöZLRQH
SRGVWDZ\MÚ]\ND-DYD6FULSW
:UR]G]LDOH]REDF]\V]MDNRELHNWRZ\PRGHO
GRNXPHQWX DQJDocument Object Model SR]ZDODQDX]\VNDQLHGRVWÚSXGRGRNXPHQWX
L]PLDQÚMHJR]DZDUWRĂFLJG\]RVWDQLHZF]\WDQ\
ZSU]HJOÈGDUFHLQWHUQHWRZHM
:UR]G]LDOHGRZLHV]VLÚMDN]DSRPRFÈ
]GDU]HñZ\ZRï\ZDÊNRG
:UR]G]LDOHSU]HNRQDV]VLÚĝHELEOLRWHND
M4XHU\PRĝH]QDF]QLHSU]\VSLHV]\ÊLXïDWZLÊ
SURFHVWZRU]HQLDVNU\SWöZ
:UR]G]LDOH]RVWDQLHZSURZDG]RQDWHFKQRORJLD
$MD[F]\OL]ELöUWHFKQLNSR]ZDODMÈF\FKQD]PLDQÚ
IUDJPHQWXVWURQ\LQWHUQHWRZHMEH]NRQLHF]QRĂFL
RGĂZLHĝDQLDFDïHMVWURQ\
:UR]G]LDOH]DMPLHP\VLÚREVïXJÈEïÚGöZ
GHEXJRZDQLHPDWDNĝHVSRVREDPLSU]HWZDU]DQLD
NRGX-DYD6FULSW
:UR]G]LDOHSR]QDV]WHFKQLNLWZRU]HQLD
SDQHOL]DZDUWRĂFLWDNLFKMDNSRND]\VODMGöZRNQD
PRGDOQHNDUW\LSDQHOHW\SXDFFRUGLRQ
:UR]G]LDOHSU]HGVWDZLRQ\FKEÚG]LHNLOND
WHFKQLNğOWURZDQLDLVRUWRZDQLDGDQ\FK2PöZLRQH]DJDGQLHQLDREHMPXMÈğOWURZDQLHJDOHULL
REUD]öZDWDNĝH]PLDQÚNROHMQRĂFLZLHUV]\WDEHOL
SRNOLNQLÚFLXQDJïöZNDNROXPQ\
:UR]G]LDOH]DMPLHP\VLÚXVSUDZQLHQLDPL
RUD]ZHU\ğNDFMÈSöOIRUPXODU]DVLHFLRZHJR
-HĂOLQLHMHVWHĂSURJUDPLVWÈQDMOHSV]\PUR]ZLÈ]DQLHPEÚG]LHOHNWXUDWHMNVLÈĝNLRGSRF]ÈWNX
GRNRñFD3R]GRE\FLXSHZQHJRGRĂZLDGF]HQLD
PRĝHV]SRWUDNWRZDÊMÈMDNRXĝ\WHF]Q\SU]HZRGQLN
SRGF]DVWZRU]HQLDZïDVQ\FKVNU\SWöZ
:UR]G]LDOH]DMPLHP\VLÚLQWHUIHMVDPLSURJUDPRZDQLDDSOLNDFML $3, PLÚG]\LQQ\PLQRZ\P
$3,EÚGÈF\PF]ÚĂFLÈVWDQGDUGX+70/LZLWU\Q
WDNLFKMDN*RRJOH0DSV
WPROWADZENIE
13
KRÓTKIE WPROWADZENIE
DO HTML I CSS
=DQLPSU]HMG]LHP\GRMÚ]\ND-DYD6FULSWZDUWRZ\MDĂQLÊSHZQHSRMÚFLD
]ZLÈ]DQH]+70/L&66=ZUöÊXZDJÚMDNDWU\EXW\+70/LZïDĂFLZRĂFL&66
Xĝ\ZDMÈSDUQD]ZDZDUWRĂÊ
ELEMENTY HTML
(OHPHQW\+70/VÈGRGDZDQH
GR]DZDUWRĂFLVWURQ\ZFHOX
RSLVDQLDMHMVWUXNWXU\(OHPHQW
VNïDGDVLÚ]H]QDF]QLNöZ
RWZLHUDMÈFHJRL]DP\NDMÈFHJR
RUD]]MHJR]DZDUWRĂFL
=QDF]QLNL]Z\NOHSRMDZLDMÈVLÚ
SDUDPLRWZLHUDMÈF\L]DP\NDMÈF\,VWQLHMHWDNĝHNLONDSXVW\FK
HOHPHQWöZSR]EDZLRQ\FK
]DZDUWRĂFLQDSU]\NïDG<img>
:öZF]DVVÈWRSRMHG\QF]H
VDPR]DP\NDMÈFHVLÚ]QDF]QLNL
Znacznik otwierający
=QDF]QLNRWZLHUDMÈF\PRĝH
]DZLHUDÊDWU\EXW\GRVWDUF]DMÈFHGRGDWNRZ\FKLQIRUPDFML
RGDQ\PHOHPHQFLH$WU\EXWPD
QD]ZÚLZDUWRĂÊNWöUDQDMF]ÚĂFLHMMHVWXMÚWDZFXG]\VïöZ
Znacznik zamykający
<p class=”owoce”>brzoskwinie</p>
Nazwa atrybutu
14
WPROWADZENIE
Wartość atrybutu
REGUŁY CSS
5HJXï\&66VÈXĝ\ZDQHGR
ZVND]DQLDZMDNLVSRVöE
]DZDUWRĂÊHOHPHQWX HOHPHQWöZ PDE\ÊZ\ĂZLHWODQDSU]H]
SU]HJOÈGDUNÚLQWHUQHWRZÈ
.DĝGDUHJXïDPDVHOHNWRULEORN
GHNODUDFML
6HOHNWRURNUHĂODGRNWöUHJR
HOHPHQWXOXEGRNWöU\FK
HOHPHQWöZPD]DVWRVRZDQLH
GDQDUHJXïD1DWRPLDVWEORN
GHNODUDFML]DZLHUDUHJXï\
RNUHĂODMÈFHVSRVöEZ\ĂZLHWODQLD
HOHPHQWXSU]H]SU]HJOÈGDUNÚ
LQWHUQHWRZÈ
Selektor
.DĝGDGHNODUDFMDZEORNXPD
ZïDĂFLZRĂÊ NRQWURORZDQ\
DVSHNW LZDUWRĂÊSU]\SLVDQÈ
GDQHMZïDĂFLZRĂFL
Blok deklaracji
.owoce {color: pink;}
Nazwa właściwości
Wartość właściwości
WPROWADZENIE
OBSŁUGA W PRZEGLĄDARKACH
INTERNETOWYCH
1LHNWöUH]SLHUZV]\FKSU]\NïDGöZZNVLÈĝFHQLHG]LDïDMÈZSU]HJOÈGDUFH
,QWHUQHW([SORUHULMHMZF]HĂQLHMV]\FKZHUVMDFK DOWHUQDW\ZQHSU]\NïDG\
NRGXG]LDïDMÈFHZ,(PRĝQDSREUDÊ]ZLWU\Q\http://javascriptbook.com/ :SöěQLHMV]\FKUR]G]LDïDFK]RVWDQÈSU]HGVWDZLRQHWHFKQLNLXĝ\FLD-DYD6FULSW
ZVWDUV]\FKZHUVMDFKSU]HJOÈGDUHNLQWHUQHWRZ\FK
:NDĝGHMZHUVMLSU]HJOÈGDUNLLQWHUQHWRZHM
GRGDZDQHVÈQRZHIXQNFMH%DUG]RF]ÚVWRWH
QRZHIXQNFMHXïDWZLDMÈZ\NRQ\ZDQLH]DGDñOXEVÈ
X]QDZDQH]DOHSV]HQLĝVWDUV]HWHFKQLNL
$E\XïDWZLÊ&LQDXNÚ-DYD6FULSWZSLHUZV]\FK
NLONXUR]G]LDïDFKXĝ\WRSHZQ\FKIXQNFML
WHJRMÚ]\NDNWöUHQLHVÈREVïXJLZDQHZ,(
1DV]F]ÚĂFLH
2GZLHG]DMÈF\ZLWU\Q\LQWHUQHWRZHQLH]DZV]H
Xĝ\ZDMÈQDMQRZV]\FKZHUVMLSU]HJOÈGDUHNLGODWHJR
SURJUDPLĂFLQLHPRJÈRSLHUDÊVLÚW\ONRLZ\ïÈF]QLH
QDQDMQRZV]\FKWHFKQRORJLDFK
• :SöěQLHMV]\FKUR]G]LDïDFKGRZLHV]VLÚMDN
-DN]REDF]\V]PLÚG]\SU]HJOÈGDUNDPLLQWHUQHWRZ\PLZ\VWÚSXMHZLHOHQLHVSöMQRĂFLZSï\ZDMÈF\FK
QDSUDFÚSURJUDPLVWöZ-DYD6FULSW%LEOLRWHND
M4XHU\SRPDJDZSRNRQDQLXZVSRPQLDQ\FK
QLHVSöMQRĂFL WRWDNĝHMHGHQ]QDMZDĝQLHMV]\FK
SRZRGöZGODNWöU\FKELEOLRWHNDM4XHU\]GRE\ïD
WDNGXĝÈSRSXODUQRĂÊZĂUöGSURJUDPLVWöZ
::: -HGQDN]DQLP]DF]QLHV]SR]QDZDÊ
M4XHU\ZF]HĂQLHMZDUWRXVWDOLÊMDNLHIHNWFKFHV]
X]\VNDÊ
16
WPROWADZENIE
•
SUDFRZDÊ],(LVWDUV]\PLZHUVMDPLSU]HJOÈGDUHNLQWHUQHWRZ\FKSRQLHZDĝZLHOXNOLHQWöZ
RF]HNXMHĝHZLWU\Q\LQWHUQHWRZHEÚGÈG]LDïDï\
Z,(7RZ\PDJDSRSURVWXXWZRU]HQLDGRGDWNRZHJRNRGXLĂZLDGRPRĂFLQLHEH]SLHF]HñVWZD
Z\VWÈSLHQLDSHZQ\FKSUREOHPöZ
:Z\PLHQLRQHMZF]HĂQLHMZLWU\QLH]QDMG]LHV]
DOWHUQDW\ZQHZHUVMHSU]\NïDGöZG]LDïDMÈFH
WDNĝHZ,(8SHZQLMVLÚĝHSU]HF]\WDïHĂ
NRPHQWDU]H]DPLHV]F]RQHZDOWHUQDW\ZQ\FK
ZHUVMDFKSRQLHZDĝGRW\F]ÈRQHSUREOHPöZ
NWöUHPRJÈVLÚSRMDZLÊSRGF]DVXĝ\FLDWHJR
NRGX
1
ABC
PROGRAMOWANIA
=DQLPGRZLHV]VLÚMDNRGF]\W\ZDÊLWZRU]\ÊNRG
ZMÚ]\NX-DYD6FULSWQDMSLHUZZDUWRSR]QDÊSHZQH
NOXF]RZHNRQFHSFMHSURJUDPRZDQLD=RVWDQÈRQH
RPöZLRQHZWU]HFKF]ÚĂFLDFK
A
&]\PMHVWVNU\SWLMDN
PRĝQDJRXWZRU]\Ê"
B
C
-DNNRPSXWHU\ZNRPSRQRZXMÈ
VLÚZRWDF]DMÈF\QDVĂZLDW"
-DNPRĝQDXWZRU]\ÊVNU\SW
QDVWURQÚLQWHUQHWRZÈ"
*G\RSDQXMHV]SRGVWDZ\ZNROHMQ\FKUR]G]LDïDFK]REDF]\V]MDNMÚ]\N-DYD6FULSWPRĝQD
Z\NRU]\VWDÊZFHOXQDND]DQLDSU]HJOÈGDUNRPLQWHUQHWRZ\PZ\NRQ\ZDQLDSHZQ\FK]DGDñ
18
ABC PROGRAMOWANIA
1/a
CZYM JEST SKRYPT
I JAK MOŻNA GO
UTWORZYĆ?
ABC PROGRAMOWANIA
19
SKRYPT TO SERIA POLECEŃ
Skrypt to seria poleceń wydawanych komputerowi, aby wykonał pewne
=
zadanie. Skrypt można porównać do dowolnego z poniższych elementów.
PRZEPIS KULINARNY
Wykonując we wskazanej
PRZEWODNIK
Duże firmy bardzo często
PODRĘCZNIK
kolejności polecenia podane =
opracowują przewodniki dla =
stają z podręcznika samochodu =
podczas naprawy nieznanego =
Mechanicy bardzo często korzy­
w przepisie, można po raz =
nowych pracowników, w któ-=
pierwszy przygotować nieznaną =
rych przedstawione są proce-=
im modelu. Wspomniany =
wcześniej potrawę.
dury stosowane w konkretnych =
podrę
sytuacjach.
serii
Pewne przepisy są łatwe i do-=
tyczą tylko "jednowątkowego" =
scenariusza, takiego jak prosty =
opracowany dla pracownika =
posiłek. Z kolei inne wymagają =
hotelu może zawierać omó
wykonania wielu zadań, których =
nie kroków podejmowanych
wynikiem ma być przygotowanie =
podczas meldowania
posiłku złożonego z trzech dań.
sprzątania pokoju, o
�
e
�
�;t
�
k zawiera omówienie =
'
przep
Na przykład przewodnik =
"'-
��
�
��
��
Jeżeli stawiasz pierwsze kroki =
�e
�
otyczące sposobów usunięcia =
=
=
Na przykład mogą to być infor-=
macje o sposobie sprawdzenia =
hamulców. Jeżeli test zostanie =
w programowaniu lub gotowa-=
W każdej
niu, będziesz musiał opanować =
sytuacji
dużo nowych terminów.
wykony �roki związane =
�
kluczowych funkcji =
ochodu, a także informacje =
ewentualnych problemów.
��
alarmu pożarowe
""\..
�i
które należy =
dzić, aby sprawdzić
onych =
cy muszą =
��ret4Mym typem zdarzenia. =
�no nie chcesz, aby =
z
�
"""'- racownik przeglądał każdy=
�ok omówiony w przewodniku, =
"""'-'\ podczas gdy gość hotelu czeka =
� w recepcji). Podobna sytuacja =
zaliczony, mechanik przechodzi =
do kolejnego testu bez koniecz-=
ności naprawy hamulców. =
Natomiast niepowodzenie testu
działania hamulców oznacza, =
że mechanik musi wykonywać=
polecenia pozwalające na ich =
naprawę.
ma miejsce w skomplikowanym =
Po przeprowadzeniu naprawy =
skrypcie- przeglądarka =
ponownie wykonuje test hamul-=
internetowa może używać tylko =
ców i sprawdza, czy znaleziona =
podzbioru kodu dostępnego =
wcześniej usterka została =
w danej chwili.
usunięta. Jeżeli test zostaje =
zaliczony, to mechanik wie, że =
hamulce są naprawione, i może =
przejść do kolejnego testu.
Podobnie skrypty mogą pozwo-=
lić przeglądarce internetowej na =
sprawdzenie aktualnej sytuacji =
i wykonanie zestawu kroków =
tylko wtedy, gdy dana akcja jest =
odpowiednia.
@
ABC PROGRAMOWANIA
UTWORZENIE
SKRYPTU
W celu utworzenia skryptu należy
=
najpierw zdefiniować cel, a następnie
zastanowić się nad zadaniami, które
muszą być wykonane, aby ten cel
osiągnąć.
Ludzie potrafią osiągać skomplikowane cele bez zbyt =
długiego zastanawiania się nad tym. Na przykład =
możesz prowadzić samochód, przygotować śniadanie =
lub wysłać wiadomość e- mail i nie potrzebujesz do =
tego zestawu dokładnych instrukcji. Jednak w trakcie =
pierwszego wykonania dowolnego z wymienionych =
zadań wydaje się ono skomplikowane. Dlatego też =
podczas zdobywania nowych umiejętności nauka =
jest często dzielona na mniejsze zadania, które =
o
�
w wykonywaniu poszczególnych zadań, osiągni�
wyznaczonego celu wydaje się łatwiejsze.
0V
trzeba poznawać po kolei. Mając doświadczeni
���
�
Pewne skrypty, które będziesz odczytyv�:ub,worzyć =
po zakończeniu lektury niniejsze· ks·
całkiem skomplikowane i na poc
budzić grozę. Jednak skryp t
poleceń, z których każde s
z
konkretnego problemu. Dlateg
o
ogą być =
będą zapewne =
stu seria krótkich =
rozwiązania =
też utworzenie skryptu =
przypomina przygotowanie przepisu lub podręcznika =
pozwalającego komputerowi na rozwiązanie układanki =
krok po kroku.
Warto w tym miejscu wspomnieć, że w przeciwień-=
stwie do człowieka komputer nie uczy się sposobu =
wykonywania zadań. Wymaga zestawu instrukcji =
za każdym razem, gdy wykonuje dane zadanie. =
Program musi dostarczyć komputerowi wystarczającej =
ilości informacji szczegółowych, jakby zadanie za =
każdym razem było wykonywane po raz pierwszy.
@
ABC PROGRAMOWANIA
Rozpocznij od określenia
=
ostatecznego celu, a następnie
=
podziel go na kilka mniejszych .
1:
WYZNACZENIE CELU
� określić zadanie do
�� można się posłużyć=
Przede wszystkim trz
� �
�
Ol��tJ�ANIE SKRYPTU
wykonania. W tym
analogią do
je do ułoże
2:
łóżmy, że komputer ma =
li
•
��
�
A�
acowania skryptu wyznaczony cel
odzielić na serię zadań wymaganych =
� wykonania, aby ułożyć puzzle wspomniane =
w poprzednim punkcie. Można się posiłkować =
diagramem.
Należy zapisać poszczególne kroki, które =
muszą być wykonane przez komputer w celu =
zakończenia zadań cząstkowych. (Nie zapomnij =
tutaj o informacjach wymaganych do wykonania =
zadań). To jest podejście odmienne od na przykład =
opracowania przepisu, którego kolejne kroki są =
wykonywane.
UTWORZENIE KODU
POSZCZEGÓLNYCH KROKÓW
3:
Każdy krok należy zapisać w języku programowa­
nia zrozumiałym dla komputera. W omawianym =
przypadku to będzie JavaScript.
Być może korci Cię, aby od razu przystąpić do =
tworzenia kodu. O wiele lepszym rozwiązaniem =
będzie poświęcenie chwili na zastanowienie się =
nad projektem skryptu przed faktycznym rozpo­
częciem jego tworzenia.
ABC PROGRAMOWANIA
@
OD KROKÓW DO KODU
Każdy krok właściwy dla danego zadania
wymienionego na diagramie musi być
zapisany w języku zrozumiałym
dla komputera.
W tej książce koncentrujemy się na języku =
JavaScript i sposobie jego użycia w przeglądar-=
kach internetowych.
Podobnie jak w przypadku nauki dowolnego =
nowego języka konieczne jest poznanie:
•
' ·
'-.�
słownictwa, czyli słów zrozumiałych dla =
komputera;
•
składni, czyli sposobu łączenia poszczególnych =
słów, aby utworzyć instrukcje dla komputera.
OV
O
�
n�
Jeżeli stawiasz pierwsze kroki na polu programo-=
wania, to podczas nauki języka musisz również =
poznać sposoby osiągania przez komputer =
różnego rodzaju celów. Odbywa się to za po-
�
�
�
średnictwem programistycznego podejścia =
do rozwiązywania problemów.
X-1
o
Komputery zachowują się niezwykle logicznie i są =
bardzo posłuszne. Konieczne jest podanie każdego
szczegółu operacji, które mają do wykonania. =
Zrobią to wszystko bez słowa sprzeciwu. Ponieważ =
w przeciwieństwie do człowieka potrzebują =
różnego typu poleceń, każdy, kto rozpoczyna =
naukę programowania, na początku popełnia =
wiele błędów. Nie zniechęcaj się! W rozdziale l O. =
poznasz kilka sposobów odkrywania potencjalnych =
problemów- programiści nazywają to =
debugowaniem.
@
ABC PROGRAMOWANIA
�
�
'-�
0XVLV]QDXF]\ÊVLÚķP\ĂOHÊMDN
NRPSXWHUĵSRQLHZDĝNRPSXWHU\
Z\NRQXMÈ]DGDQLD]XSHïQLHLQDF]HM
QLĝP\
.RPSXWHU\UR]ZLÈ]XMÈSUREOHP\ZVSRVöESURJUDPLVW\F]Q\Z\NRQXMÈVHULÚSROHFHñMHGQRSR
GUXJLP7\S\QLH]EÚGQ\FKLQVWUXNFMLEDUG]RF]ÚVWR
VÈRGPLHQQHRGSROHFHñZ\GDZDQ\FKF]ïRZLHNR
ZL'ODWHJRWHĝQDVWURQDFKWHMNVLÈĝNLSR]QDV]QLH
W\ONRZ\NRU]\VW\ZDQHZ-DYD6FULSWVïRZQLFWZR
LVNïDGQLÚDOHUöZQLHĝVSRVöESU]\JRWRZ\ZDQLD
LQVWUXNFMLNWöUHPRJÈE\ÊZ\NRQ\ZDQHSU]H]
NRPSXWHU
6SöMU]QDU\VXQHNSROHZHMVWURQLH&]\PRĝHV]
SRZLHG]LHÊNWöUD]SRND]DQ\FKQDQLPRVöEMHVW
QDMZ\ĝV]D".RPSXWHUSRWU]HEXMHV]F]HJöïRZ\FK
LQVWUXNFMLNWöUHEÚG]LHZ\NRQ\ZDïNURNSRNURNX
1. 2NUHĂOZ\VRNRĂÊSLHUZV]HMRVRE\
2. 3U]\MPLM]DïRĝHQLHĝHWRMHVWQDMZ\ĝV]DRVRED
3. 6SUDZGěZ\VRNRĂÊSR]RVWDï\FKRVöESRNROHL
LSRUöZQXMLFKZ\VRNRĂÊ]H]QDOH]LRQÈGRWÈG
ķQDMZ\ĝV]ÈRVREÈĵ
4. -HĂOL]QDMG]LHV]RVREÚNWöUHMZ\VRNRĂÊMHVW
ZLÚNV]DQLĝZ\VRNRĂÊDNWXDOQHMķQDMZ\ĝV]HM
RVRE\ĵWRVWDMHVLÚRQDQRZÈķQDMZ\ĝV]È
RVREÈĵ
5. 3RVSUDZG]HQLXZV]\VWNLFKRVöESRLQIRUPXM
NWöUD]QLFKMHVWQDMZ\ĝV]D
-DNZLG]LV]NRPSXWHUPXVLSU]HDQDOL]RZDÊ
SRNROHLZV]\VWNLHRVRE\LSU]HSURZDG]LÊWHVW
F]\DNWXDOQLHDQDOL]RZDQDRVREDMHVWZ\ĝV]D
RG]QDOH]LRQHMGRWÈGQDMZ\ĝV]HM .RPSXWHUPRĝH
XG]LHOLÊRGSRZLHG]LGRSLHURZWHG\JG\Z\NRQD
WR]DGDQLHDQDOL]XMÈFZ\VRNRĂÊZV]\VWNLFKRVöE
ABC PROGRAMOWANIA
27
ZDEFINIOWANIE CELU
I OPRACOWANIE SKRYPTU
7HUD]]DSR]QDV]VLÚ]Z\MDĂQLHQLHPMDNPRĝQDSU]\JRWRZDÊ
UöĝQHJRURG]DMXVNU\SW\:RPDZLDQ\PSU]\NïDG]LHREOLF]DQ\
MHVWNRV]WWDEOLF]NL]LPLHQLHPĽNOLHQWSïDFL]DNDĝGÈOLWHUÚ
3LHUZV]\P]DGDQLHPMHVWRNUHĂOHQLHFHOXVNU\SWX
FRFKFHV]RVLÈJQÈÊ" .OLHQWPRĝH]DNXSLÊWDEOLF]NÚ]LPLHQLHPĽ
NDĝGDOLWHUDNRV]WXMH]ï*G\Xĝ\WNRZQLNSRGD
LPLÚZ\ĂZLHWONRV]WSU]\JRWRZDQLDWDEOLF]NL
1DVWÚSQLHG]LHOLP\FHOQDVHULÚ]DGDñNWöUH
WU]HEDSRNROHLZ\NRQDÊDE\RVLÈJQÈÊZ\]QDF]R
Q\FHO
1. 8UXFKRPLHQLHVNU\SWXQDVWÚSXMHSRNOLNQLÚFLX
SU]\FLVNX
2. 6NU\SWSRELHUDLPLÚZSURZDG]RQHZSROX
IRUPXODU]DVLHFLRZHJR
3. 6NU\SWVSUDZG]DF]\Xĝ\WNRZQLNZSURZDG]Lï
GDQHZHMĂFLRZH
4. -HĝHOLXĝ\WNRZQLNQLHSRGDïĝDGQ\FKGDQ\FK
QDHNUDQLHZ\ĂZLHWOLVLÚNRPXQLNDW]DFKÚFDMÈ
F\GRSRGDQLDLPLHQLD
5. -HĝHOLXĝ\WNRZQLNSRGDïLPLÚQDOHĝ\REOLF]\Ê
NRV]WSU]\JRWRZDQLDWDEOLF]NLPQRĝÈFOLF]EÚ
OLWHUSU]H]NRV]WMHGQHMOLWHU\
6. :\ĂZLHWOHQLHNRV]WXSU]\JRWRZDQLDWDEOLF]NL
:\PLHQLRQHSRZ\ĝHMSXQNW\RGSRZLDGDMÈGLDJUD
PRZLSU]HGVWDZLRQHPXQDVWURQLHSRSUDZHM 28
ABC PROGRAMOWANIA
UMIESZCZENIE ZADAŃ
NA DIAGRAMIE
%DUG]RF]ÚVWRVLÚ]GDU]DĝHVNU\SW\PXV]ÈZ\NRQ\ZDÊUöĝQH]DGDQLD
ZUR]PDLW\FKV\WXDFMDFK']LÚNLGLDJUDPRZLPRĝQDRNUHĂOLÊVSRVöE
SRZLÈ]DQLD]DGDñ]HVREÈ'LDJUDPSRND]XMHWDNĝHSRïÈF]HQLDPLÚG]\
SRV]F]HJöOQ\PLNURNDPL
1
Po kliknięciu przycisku
2
Pobierz imię podane w polu formularza
3
Czy są jakiekolwiek
dane do pobrania?
4
N
T
6WU]DïNLSRND]XMÈMDNVNU\SWSU]HFKRG]LRG
MHGQHJR]DGDQLDGRGUXJLHJR5öĝQHNV]WDïW\
SUH]HQWXMÈRGPLHQQHW\S\]DGDñ&]DVDPL
VÈWRGHF\]MHNWöUHSRZRGXMÈ]PLDQÚĂFLHĝNL
Z\NRQ\ZDQHJRNRGX
6SRVöE]DPLDQ\RPDZLDQHJRWXWDMSU]\NïDGX
QDNRGSR]QDV]ZUR]G]LDOH1DVWURQDFKNVLÈĝNL
]REDF]\V]WDNĝHZLHOHLQQ\FKSU]\NïDGöZUöĝQ\FK
GLDJUDPöZDSRQDGWR]DSR]QDV]VLÚ]NRGHP
SRPDJDMÈF\PZV\WXDFMLGDQHJRW\SX
Poproś użytkownika o podanie imienia
5
Oblicz koszt przygotowania tabliczki (litery · cena)
6
Wyświetl na ekranie koszt przygotowania tabliczki
=DDZDQVRZDQLSURJUDPLĂFLXĝ\ZDMÈ
RZLHOHEDUG]LHMVNRPSOLNRZDQ\FKGLDJUDPöZ
]DSURMHNWRZDQ\FKGRSU]HGVWDZLDQLDNRGX
-HGQDNGRRGF]\WDQLDWDNLFKGLDJUDPöZ
Z\PDJDQHVÈRGSRZLHGQLHXPLHMÚWQRĂFL
3U]HGVWDZLDQHWXWDMQLHIRUPDOQHGLDJUDP\SRPRJÈ
&LZSR]QDQLXVSRVREöZG]LDïDQLDVNU\SWöZ
ZWUDNFLHQDXNLMÚ]\ND
LEGENDA DIAGRAMU
Ogólny krok
Zdarzenie
Dane wejściowe
lub wyjściowe
Decyzja
ABC PROGRAMOWANIA
29
PODSUMOWANIE
ABC PROGRAMOWANIA
A. Czym jest skrypt i jak można go utworzyć?
f 6NU\SWWRVHULDLQVWUXNFMLNWöUHNRPSXWHUPRĝHZ\NRQDÊ
DE\RVLÈJQÈÊZ\]QDF]RQ\FHO
f :WUDNFLHNDĝGHJRXUXFKRPLHQLDVNU\SWXPRĝHE\ÊZ\NRQDQ\
MHG\QLHSRG]ELöUZV]\VWNLFKGRVWÚSQ\FKLQVWUXNFML
f :\NRU]\VW\ZDQHSU]H]NRPSXWHU\SRGHMĂFLHZ]DNUHVLH
Z\NRQ\ZDQLD]DGDñUöĝQLVLÚRGSRGHMĂFLDVWRVRZDQHJRSU]H]
F]ïRZLHND:\GDZDQHLQVWUXNFMHPXV]ÈSR]ZROLÊNRPSXWHURZL
QDSURJUDPLVW\F]QHZ\NRQDQLH]DGDQLD
f $E\SU]\JRWRZDÊVNU\SWSRG]LHOFHOQDVHULÚ]DGDñ
DQDVWÚSQLHRSUDFXMSRV]F]HJöOQHNURNLQLH]EÚGQHGR
XNRñF]HQLD]DGDQLD WXWDMGLDJUDPPRĝHRND]DÊVLÚSRPRFQ\ 30
ABC PROGRAMOWANIA
1/b
JAK KOMPUTERY
WKOMPONOWUJĄ SIĘ
W OTACZAJĄCY NAS
ŚWIAT?
ABC PROGRAMOWANIA
31
KOMPUTERY TWORZĄ
MODELE ŚWIATA
NA PODSTAWIE DANYCH
2WRPRGHOKRWHOXZUD]]GU]HZDPLOXGěPLLVDPRFKRGDPL
'ODF]ïRZLHNDMHVW]XSHïQLHMDVQHMDNLURG]DMU]HF]\ZLVWHJR
RELHNWXSU]HGVWDZLDMÈSRV]F]HJöOQHPRGHOH
32
ABC PROGRAMOWANIA
=NROHLNRPSXWHUQLHSRVLDGD
SUHGHğQLRZDQHMNRQFHSFML
F]\PMHVWKRWHOOXEVDPRFKöG
=XSHïQLHQLH]QDLFKSU]H
]QDF]HQLD8ĝ\ZDQ\SU]H]
&LHELHODSWRSOXEWHOHIRQQLHPD
XOXELRQHMPDUNLVDPRFKRGX
DWDNĝHQLHZLHLOHJZLD]GHN
PDKRWHOZNWöU\PVLÚ
]DWU]\PDïHĂ
:MDNLZLÚFVSRVöEZ\NRU]\
VWXMHP\NRPSXWHU\ZFHOX
XWZRU]HQLDDSOLNDFMLSR]ZDOD
MÈFHMQDGRNRQDQLHUH]HUZDFML
ZKRWHOXOXEZFHOXVWZRU]HQLD
JLHUZLGHRZNWöU\FKJUDF]H
ĂFLJDMÈVLÚVDPRFKRGDPL"
2GSRZLHGěMHVWQDVWÚSXMÈFD
SURJUDPLĂFLWZRU]ÈUöĝQHJR
URG]DMXPRGHOH]ZïDV]F]DGOD
NRPSXWHUöZ
:VSRPQLDQHPRGHOHSRWU]HEXMÈ
GDQ\FK1LHPDZW\PQLF
G]LZQHJRĽGDQHWRZV]\VWNR
F]HJRNRPSXWHUSRWU]HEXMHDE\
Z\NRQDÊZ\GDQHPXLQVWUXNFMH
SURZDG]ÈFHGRUHDOL]RZDQLD
]DGDñ
TYP OBIEKTU: HOTEL
TYP OBIEKTU: SAMOCHÓD
TYP OBIEKTU: SAMOCHÓD
ABC PROGRAMOWANIA
33
OBIEKTY I WŁAŚCIWOŚCI
-HĝHOLQLHZLG]LV]REUD]XSRND]XMÈFHJRKRWHOLVDPRFKRG\
WRPLPRZV]\VWNRGDQHSU]HGVWDZLRQHZUDPNDFK
GRVWDUF]DMÈZLHOHLQIRUPDFMLRVFHQLH
OBIEKTY (RZECZY)
:ĂZLHFLHSURJUDPRZDQLDNRPSXWHURZHJRNDĝGÈ
U]HF]ĂZLDWDğ]\F]QHJRPRĝQDSU]HGVWDZLÊ
ZSRVWDFLRELHNWX,VWQLHMÈUöĝQHW\S\RELHNWöZ
WXWDMWRKRWHOLVDPRFKöG
3URJUDPLĂFLSRZLHG]LHOLE\ĝHZRPDZLDQ\P
SU]\NïDG]LHPDP\MHGHQHJ]HPSODU]RELHNWXKRWHO
i dwa HJ]HPSODU]HRELHNWXVDPRFKöG
.DĝG\RELHNWSRVLDGDZïDVQH
•
• ]GDU]HQLD
• PHWRG\
ZïDĂFLZRĂFL
5D]HPSR]ZDODMÈRQHQDXWZRU]HQLHG]LDïDMÈFHJR
PRGHOXGDQHJRRELHNWX
WŁAŚCIWOŚCI (CECHY
CHARAKTERYSTYCZNE)
2EDSRND]DQHVDPRFKRG\PDMÈWHVDPHFHFK\
FKDUDNWHU\VW\F]QH:U]HF]\ZLVWRĂFLNDĝG\
VDPRFKöGPDSURGXFHQWDNRORULSRMHPQRĂÊ
VLOQLND,VWQLHMHQDZHWPRĝOLZRĂÊRNUHĂOHQLD
MHJRDNWXDOQHMV]\ENRĂFL RLOHVLÚSRUXV]D :\PLHQLRQHFHFK\FKDUDNWHU\VW\F]QHVÈSU]H]
SURJUDPLVWöZQD]\ZDQHZïDĂFLZRĂFLDPLRELHNWX
.DĝGDZïDĂFLZRĂÊPDQD]ZÚ i ZDUWRĂÊ
SRV]F]HJöOQHSDU\QD]ZDZDUWRĂÊGRVWDUF]DMÈ
SHZQ\FKLQIRUPDFMLRHJ]HPSODU]XRELHNWX
1DMEDUG]LHMRF]\ZLVWÈZïDĂFLZRĂFLÈKRWHOX
MHVWZïDĂFLZRĂÊname:DUWRĂÊZ\PLHQLRQHM
ZïDĂFLZRĂFLWRQuay/LF]EÚSRNRLZW\PKRWHOX
PRĝHV]SR]QDÊSDWU]ÈFQDZDUWRĂÊZïDĂFLZRĂFL
rooms
,GHDSDUQD]ZDZDUWRĂÊMHVWVWRVRZDQD]DUöZQRZ+70/MDNL&66:NRG]LH]QDF]QLNöZ+70/DWU\EXW
SU]\SRPLQDZïDĂFLZRĂÊSRV]F]HJöOQHDWU\EXW\PDMÈUöĝQHQD]Z\DNDĝGHPXDWU\EXWRZLPRĝHE\Ê
SU]\SLVDQDZDUWRĂÊ3RGREQLHZVW\ODFK&66PRĝQD]PLHQLÊNRORUQDJïöZNDSU]H]XWZRU]HQLHUHJXï\
SU]\SLVXMÈFHMZïDĂFLZRĂFLcolorRGSRZLHGQLÈZDUWRĂÊOXE]PLHQLÊF]FLRQNÚSU]H]SU]\SLVDQLHZïDĂFLZRĂFL
font-familyQD]Z\Z\EUDQHMF]FLRQNL3DU\QD]ZDZDUWRĂÊVÈZSURJUDPRZDQLXSRZV]HFKQH
34
ABC PROGRAMOWANIA
OBIEKT HOTEL
OBIEKT SAMOCHÓD
2ELHNWKRWHOZ\NRU]\VWXMHQD]Z\ZïDĂFLZRĂFL
LLFKZDUWRĂFLZFHOXGRVWDUF]HQLDLQIRUPDFML
RGDQ\PKRWHOXWDNLFKMDNMHJRQD]ZDOLF]ED
JZLD]GHNOLF]EDSRNRLOLF]EDZROQ\FKSRNRLLWG
1DSRGVWDZLHW\FKLQIRUPDFMLPRĝQDWDNĝHXVWDOLÊ
F]\KRWHOXGRVWÚSQLDRNUHĂORQHDWUDNFMH
2EDHJ]HPSODU]HRELHNWXVDPRFKöGZVSöïG]LHOÈ
WHVDPHZïDĂFLZRĂFLFKRÊLFKZDUWRĂFLPRJÈE\Ê
LQQH1DSRGVWDZLHZDUWRĂFLZïDĂFLZRĂFLPRĝQD
XVWDOLÊSURGXFHQWDSRMD]GXMHJRDNWXDOQÈV]\E
NRĂÊ RLOHZïDĂQLHVLÚSRUXV]D NRORUNDURVHULL
LW\SSDOLZDNWöUHJRSRWU]HEXMH
TYP OBIEKTU: HOTEL
WŁAŚCIWOŚCI
name
name
Quay
rating
rating
4
rooms
rooms
42
bookings
bookings
21
gym
gym
false
pool
pool
true
TYP OBIEKTU: SAMOCHÓD
TYP OBIEKTU: SAMOCHÓD
WŁAŚCIWOŚCI
WŁAŚCIWOŚCI
make
make
BMW
make
make
Porsche
currentSpeed
currentSpeed
30 km/h
currentSpeed
currentSpeed
20 km/h
color
color
srebrny
color
color
srebrny
fuel
fuel
diesel
fuel
fuel
benzyna
ABC PROGRAMOWANIA
35
ZDARZENIA
:U]HF]\ZLVW\PĂZLHFLHOXG]LHXĝ\ZDMÈU]HF]\ RELHNWöZ =DFKRG]ÈFH
LQWHUDNFMHPRJÈVSRZRGRZDÊ]PLDQÚZDUWRĂFLZïDĂFLZRĂFLRELHNWöZ
CO TO JEST ZDARZENIE?
CO ROBI ZDARZENIE?
,VWQLHMHZLHOHSRZV]HFKQLH]QDQ\FKVSRVREöZ
LQWHUDNFMLOXG]L]UöĝQ\PLRELHNWDPL1D
SU]\NïDGNLHURZFDVDPRFKRGXQDMF]ÚĂFLHMXĝ\ZD
SU]\QDMPQLHMGZöFKSHGDïöZ6DPRFKöG]RVWDï
]EXGRZDQ\WDNDE\RGSRZLHGQLRUHDJRZDÊ
JG\NLHURZFDMHQDFLVND
3URJUDPLĂFLZ\ELHUDMÈ]GDU]HQLDQDNWöUHEÚGÈ
UHDJRZDÊWZRU]RQHSU]H]QLFKDSOLNDFMH'DQH
]GDU]HQLHPRĝQDZ\NRU]\VWDÊGRXUXFKRPLHQLD
RNUHĂORQHJRIUDJPHQWXNRGX
•
SHGDïJD]XSRZRGXMH]ZLÚNV]HQLHV]\ENRĂFL
VDPRFKRGX
• SHGDïKDPXOFD]PQLHMV]DV]\ENRĂÊVDPRFKRGX
3RGREQLHSURJUDP\VÈ]DSURMHNWRZDQHGRZ\NR
Q\ZDQLDUöĝQ\FKU]HF]\Z]DOHĝQRĂFLRGVSRVREX
LQWHUDNFMLXĝ\WNRZQLND]NRPSXWHUHP*G\
Xĝ\WNRZQLNNOLNQLHQDSU]\NïDGïÈF]HKontakt na
VWURQLHLQWHUQHWRZHMVSRZRGXMHWRZ\ĂZLHWOHQLH
IRUPXODU]DNRQWDNWRZHJRQDWRPLDVWJG\ZSLV]H
WHNVWZSROXZ\V]XNLZDQLD]RVWDQLHDXWRPDW\F]
QLHXUXFKRPLRQDIXQNFMDZ\V]XNLZDQLD
=GDU]HQLHSR]ZDODNRPSXWHURZLQDVWZLHUG]HQLH
ķ+HMWRVLÚZïDĂQLH]GDU]\ïRĵ
36
ABC PROGRAMOWANIA
:VNU\SWDFKEDUG]RF]ÚVWRUöĝQH]GDU]HQLD
VÈZ\NRU]\VW\ZDQHGRXUXFKDPLDQLDUöĝQ\FK
IXQNFMRQDOQRĂFL
6NU\SWZLÚFUHDJXMHQD]GDU]HQLD ]DZLHUDNRG
NWöU\EÚG]LHXUXFKDPLDQ\SRZ\VWÈSLHQLXGDQHJR
]GDU]HQLD OBIEKT HOTEL
OBIEKT SAMOCHÓD
:KRWHOXUHJXODUQLHEÚGÈUH]HUZRZDQHSRNRMH
:WUDNFLHNDĝGHMRSHUDFMLUH]HUZDFMLSRNRMX
]GDU]HQLHRQD]ZLHbookPRĝQDZ\NRU]\VWDÊ
GRZ\NRQDQLDNZRGX]ZLÚNV]DMÈFHJRZDUWRĂÊ
ZïDĂFLZRĂFLbookings3RGREQLH]GDU]HQLHcancel
PRĝHZ\ZRïDÊNRGRGSRZLHG]LDOQ\]D]PQLHMV]H
QLHZDUWRĂFLZïDĂFLZRĂFLbookings
.LHURZFDZWUDNFLHMD]G\VDPRFKRGHPEÚG]LH
]ZLÚNV]DïL]PQLHMV]DïV]\ENRĂÊ=GDU]HQLH
acceleratePRĝHZ\ZRïDÊNRG]ZLÚNV]DMÈF\
ZDUWRĂÊZïDĂFLZRĂFLcurrentSpeedQDWRPLDVW
]GDU]HQLHbrakeZ\ZRïDÊNRG]PQLHMV]DMÈF\ZDU
WRĂÊZ\PLHQLRQHMZïDĂFLZRĂFL1DNROHMQHMVWURQLH
GRZLHV]VLÚQLHFRZLÚFHMRNRG]LHUHDJXMÈF\PQD
]GDU]HQLDL]PLHQLDMÈF\PZDUWRĂÊZïDĂFLZRĂFL
TYP OBIEKTU: HOTEL
ZDARZENIE
występuje gdy:
book
book
tworzona jest nowa rezerwacja
cancel
cancel
rezerwacja jest anulowana
TYP OBIEKTU: SAMOCHÓD
TYP OBIEKTU: SAMOCHÓD
ZDARZENIE
występuje gdy:
ZDARZENIE
występuje gdy:
brake
brake
kierowca zwalnia
brake
brake
kierowca zwalnia
accelerate
accelerate
kierowca przyspiesza
accelerate
accelerate
kierowca przyspiesza
ABC PROGRAMOWANIA
37
METODY
0HWRG\WRLQDF]HMWRFROXG]LHURELÈ]RELHNWDPL0RĝHWRE\ÊQDSU]\NïDG
SREUDQLHOXEXDNWXDOQLHQLHZDUWRĂFLZïDĂFLZRĂFLRELHNWX
CZYM JEST METODA?
JAKIE SĄ ZADANIA METODY?
0HWRGDWRVSRVöESURZDG]HQLDSU]H]OXG]L OXE
FRNROZLHNLQQHJR LQWHUDNFML]RELHNWHPZĂZLHFLH
U]HF]\ZLVW\P
.RGPHWRG\PRĝH]DZLHUDÊZLHOHLQVWUXNFML
NWöUHUD]HPSU]HGVWDZLDMÈMHGQR]DGDQLH
0HWRG\PRĝQDSRUöZQDÊGRS\WDñLLQVWUXNFML
NWöUH
• GRVWDUF]DMÈLQIRUPDFMLRRELHNFLH QDSRGVWDZLH
GDQ\FKSU]HFKRZ\ZDQ\FKZMHJRZïDĂFLZRĂ
FLDFK • ]PLHQLDMÈZDUWRĂÊFRQDMPQLHMMHGQHMZïDĂFLZR
ĂFLGDQHJRRELHNWX
38
ABC PROGRAMOWANIA
.LHG\Xĝ\ZDV]PHWRG\QLH]DZV]HPXVLV]
ZLHG]LHÊjakiMHVWMHMVSRVöEG]LDïDQLD7U]HED
ZLHG]LHÊMDNLHS\WDQLH]DGDÊPHWRG]LHLMDN
]LQWHUSUHWRZDÊXG]LHORQÈSU]H]QLÈRGSRZLHGě
OBIEKT HOTEL
OBIEKT SAMOCHÓD
:KRWHOXEDUG]RF]ÚVWRSRMDZLDVLÚS\WDQLHRGR
VWÚSQRĂÊSU]\QDMPQLHMMHGQHJRZROQHJRSRNRMX
$E\XG]LHOLÊRGSRZLHG]LQDWDNLHS\WDQLHPRĝQD
SU]\JRWRZDÊPHWRGÚNWöUHMNRGRGHMPLHOLF]EÚ
UH]HUZDFMLRGRJöOQHMOLF]E\SRNRL0HWRG\PRĝQD
UöZQLHĝZ\NRU]\VWDÊGR]ZLÚNV]HQLDOXE]PQLHM
V]HQLDZDUWRĂFLZïDĂFLZRĂFLbookingsSRGF]DV
UH]HUZDFMLOXEDQXORZDQLDUH]HUZDFMLSRNRL
:DUWRĂÊZïDĂFLZRĂFLcurrentSpeedPXVLE\Ê
]ZLÚNV]DQDOXE]PQLHMV]DQDJG\NLHURZFD
]ZLÚNV]DOXE]PQLHMV]DV]\ENRĂÊVDPRFKRGX
.RGRGSRZLHG]LDOQ\]D]PLDQÚZDUWRĂFLZïDĂFLZR
ĂFLcurrentSpeedPRĝH]QDMGRZDÊVLÚZPHWR
G]LHNWöUHMPRĝQDQDGDÊQD]ZÚchangeSpeed()
TYP OBIEKTU: HOTEL
METODA
jej działanie polega na:
makeBooking()
makeBooking()
zwiększeniu wartości właściwości bookings
cancelBooking()
cancelBooking()
zmniejszeniu wartości właściwości bookings
checkAvailability()
checkAvailability()
odjęciu wartości właściwości bookings od
wartości właściwości rooms i podaniu liczby
wolnych pokoi
TYP OBIEKTU: SAMOCHÓD
TYP OBIEKTU: SAMOCHÓD
METODA
jej działanie polega na:
METODA
changeSpeed()
changeSpeed()
zmniejszeniu lub
zwiększeniu wartości
właściwości currentSpeed
changeSpeed() zmniejszeniu lub
changeSpeed()
zwiększeniu wartości
właściwości currentSpeed
jej działanie polega na:
ABC PROGRAMOWANIA
39
ZEBRANIE WSZYSTKIEGO
W CAŁOŚĆ
.RPSXWHU\Xĝ\ZDMÈGDQ\FKZFHOXWZRU]HQLDPRGHOLU]HF]\SRFKRG]ÈF\FK
]HĂZLDWDU]HF]\ZLVWHJR=GDU]HQLDPHWRG\LZïDĂFLZRĂFLRELHNWXVÈ]HVREÈ
ĂFLĂOHSRZLÈ]DQH=GDU]HQLDPRJÈZ\ZRï\ZDÊPHWRG\NWöUH]NROHLPRJÈ
SRELHUDÊOXEXDNWXDOQLDÊZïDĂFLZRĂFLRELHNWX
TYP OBIEKTU: HOTEL
ZDARZENIE
1
występuje gdy:
method called:
WŁAŚCIWOŚCI
book
book
tworzona jest nowa rezerwacja
makeBooking()
name
Quay
cancel
cancel
rezerwacja jest anulowana
cancelBooking()
rating
4
rooms
42
METODA
2
40
jej działanie polega na:
bookings
22
makeBooking()
makeBooking()
zwiększeniu wartości właściwości bookings
gym
false
cancelBooking()
cancelBooking()
zmniejszeniu wartości właściwości bookings
pool
true
checkAvailability()
checkAvailability()
odjęciu wartości właściwości bookings
od wartości właściwości rooms i podaniu
liczby wolnych pokoi
ABC PROGRAMOWANIA
3
OBIEKT HOTEL
OBIEKTY SAMOCHÓD
1. 3RGRNRQDQLXUH]HUZDFMLQDVWÚSXMHZ\ZRïDQLH
]GDU]HQLDbook
2. =GDU]HQLHbookZ\ZRïXMHPHWRGÚmakeBooking()NWöUD]ZLÚNV]DZDUWRĂÊZïDĂFLZRĂFL
bookings
3. :DUWRĂÊZïDĂFLZRĂFLbookings]RVWDïD
]PLHQLRQDLRG]ZLHUFLHGODOLF]EÚZROQ\FKSRNRL
ZKRWHOX
1. .LHG\NLHURZFDSU]\VSLHV]DQDVWÚSXMH
Z\ZRïDQLH]GDU]HQLDaccelerate
2. =GDU]HQLHaccelerateZ\ZRïXMHPHWRGÚ
changeSpeed()NWöUD]NROHL]ZLÚNV]DZDUWRĂÊ
ZïDĂFLZRĂFLcurrentSpeed
3. :DUWRĂÊZïDĂFLZRĂFLcurrentSpeedRG]ZLHU
FLHGODDNWXDOQÈV]\ENRĂÊVDPRFKRGX
TYP OBIEKTU: SAMOCHÓD
1
2
ZDARZENIE
występuje gdy:
wywołuje metodę:
brake
brake
kierowca zwalnia
changeSpeed()
make
make
BMW
accelerate
accelerate
kierowca przyspiesza
changeSpeed()
currentSpeed
currentSpeed
45 km/h
color
color
srebrny
fuel
fuel
diesel
METODA
jej działanie polega na:
changeSpeed()
changeSpeed()
zwiększeniu lub zwiększeniu wartości
właściwości currentSpeed
WŁAŚCIWOŚCI
3
ABC PROGRAMOWANIA
41
PRZEGLĄDARKI INTERNETOWE
SĄ PROGRAMAMI
ZBUDOWANYMI
NA PODSTAWIE OBIEKTÓW
=REDF]\ïHĂMDNGDQHPRĝQDZ\NRU]\VWDÊGRSU]\JRWRZDQLDPRGHOLKRWHOX
LVDPRFKRGX3U]HJOÈGDUNLLQWHUQHWRZHWZRU]ÈSRGREQHPRGHOHZ\ĂZLHWODQHM
VWURQ\LQWHUQHWRZHMLRNQDSURJUDPXZNWöU\PGDQDVWURQDMHVWZ\ĂZLHWODQD
42
OBIEKT WINDOW
OBIEKT DOCUMENT
1DVWURQLHSRSUDZHMSRND]DQRPRGHONRPSXWHUD
]Z\ĂZLHWORQ\PQDHNUDQLHRNQHPSU]HJOÈGDUNL
LQWHUQHWRZHM
6WURQDLQWHUQHWRZDDNWXDOQLHZF]\WDQDZRNQLH
MHVWPRGHORZDQD]Z\NRU]\VWDQLHPRELHNWX
document
.DĝGHRNQROXENDUWÚSU]HJOÈGDUNDLQWHUQHWRZD
SU]HGVWDZLD]DSRPRFÈRELHNWXwindow:ïDĂFLZRĂÊlocationRELHNWXwindowZVND]XMHDGUHV
85/ELHĝÈFHMVWURQ\
:ïDĂFLZRĂÊtitleRELHNWXdocumentZVND]XMH
]DZDUWRĂÊ]QDMGXMÈFÈVLÚPLÚG]\]QDF]QLNDPL
<title>L</title>GDQHMVWURQ\LQWHUQHWRZHM
=NROHLZïDĂFLZRĂÊODVW0RGLğHGRELHNWXdocument
SRGDMHGDWÚRVWDWQLHMDNWXDOL]DFMLVWURQ\
ABC PROGRAMOWANIA
TYP OBIEKTU: WINDOW
WŁAŚCIWOŚCI
location
location
http://www.javascriptbook.com/
TYP OBIEKTU: DOCUMENT
WŁAŚCIWOŚCI
URL
http://www.javascriptbook.com/
lastModified
09/04/2014 15:33:37
title
Learn JavaScript & jQuery —
A book that teaches you
in a nicer way
ABC PROGRAMOWANIA
43
OBIEKT DOCUMENT
PRZEDSTAWIA STRONĘ HTML
=DSRPRFÈRELHNWXdocumentPRĝQDX]\VNDÊGRVWÚS
GR]DZDUWRĂFLZ\ĂZLHWODQHMXĝ\WNRZQLNRP L]PLHQLDÊMÈ QDVWURQLHRUD]UHDJRZDÊQDSRGHMPRZDQHSU]H]QLFKG]LDïDQLD
3RGREQLHMDNLQQHRELHNW\SU]HGVWDZLDMÈFHU]HF]\
]HĂZLDWDU]HF]\ZLVWHJRRELHNWdocumentPD
WŁAŚCIWOŚCI
:ïDĂFLZRĂFLRSLVXMÈFHFHFK\FKDUDNWHU\VW\F]QH
DNWXDOQHMVWURQ\LQWHUQHWRZHMQDSU]\NïDGMHMW\WXï
METODY
0HWRG\Z\NRQXMÈFH]DGDQLD]ZLÈ]DQH]GRNX
PHQWHPDNWXDOQLHZF]\WDQ\PZSU]HJOÈGDUFH
LQWHUQHWRZHMQDSU]\NïDGSRELHUDQLHLQIRUPDFML
]HZVND]DQHJRHOHPHQWXOXEGRGDQLHQRZHM
]DZDUWRĂFL
ZDARZENIA
,VWQLHMHPRĝOLZRĂÊUHDJRZDQLDQD]GDU]HQLDWDNLH
MDNNOLNQLÚFLHHOHPHQWXSU]H]Xĝ\WNRZQLND
44
ABC PROGRAMOWANIA
3RQLHZDĝZV]\VWNLHQDMZDĝQLHMV]HSU]HJOÈGDUNL
LQWHUQHWRZHLPSOHPHQWXMÈRELHNWdocument w do
NïDGQLHWDNLVDPVSRVöESURJUDPLĂFLWZRU]ÈF\
SU]HJOÈGDUNLLQWHUQHWRZHPDMÈMXĝ
• ]DLPSOHPHQWRZDQHZïDĂFLZRĂFLGRNWöU\FK
PRĝQDX]\VNDÊGRVWÚSPRĝQDSRQDGWR]HEUDÊ
ZLÚFHMLQIRUPDFMLRDNWXDOQLHZ\ĂZLHWODQHM
VWURQLHLQWHUQHWRZHM
• JRWRZHPHWRG\GRZ\NRQ\ZDQLDSHZQ\FK
QDMF]ÚĂFLHMSRMDZLDMÈF\FKVLÚ]DGDñNWöUH
SUDZGRSRGREQLHWU]HEDEÚG]LHZ\NRQDÊQD
VWURQLH+70/
'RZLHV]VLÚZLÚFMDNSUDFRZDÊ]RELHNWHP
document2ELHNWdocumentWRZLVWRFLHMHGHQ]H
]ELRUXRELHNWöZREVïXJLZDQ\FKSU]H]ZV]\VWNLH
QDMZDĝQLHMV]HSU]HJOÈGDUNLLQWHUQHWRZH.LHG\
SU]HJOÈGDUNDWZRU]\PRGHOVWURQ\LQWHUQHWRZHM
WRSU]\JRWRZXMHQLHW\ONRRELHNWdocumentDOH
UöZQLHĝQRZ\RELHNWGODNDĝGHJRHOHPHQWX
]QDMGXMÈFHJRVLÚQDVWURQLH7HZV]\VWNLHRELHNW\
VWDQRZLÈRELHNWRZ\PRGHOGRNXPHQWXNWöU\
]RVWDQLHRPöZLRQ\ZUR]G]LDOH
TYP OBIEKTU: DOCUMENT
WŁAŚCIWOŚCI
URL
http://www.javascriptbook.com/
lastModified
09/04/2014 15:33:37
title
Learn JavaScript & jQuery —
A book that teaches you
in a nicer way
ZDARZENIE
występuje, gdy:
load
nastąpiło zakończenie wczytywania
strony i jej zasobów
click
użytkownik kliknął myszą na stronie
użytkownik nacisnął klawisz
METODA
jej działanie polega na:
write()
dodaniu nowej zawartości
do dokumentu
getElementById() uzyskaniu dostępu do elementu
wskazywanego przez atrybut id
ABC PROGRAMOWANIA
45
JAK PRZEGLĄDARKA
INTERNETOWA „WIDZI”
STRONĘ INTERNETOWĄ?
:FHOX]UR]XPLHQLDMDNPRĝQD]PLHQLÊ]DZDUWRĂÊVWURQ\+70/
]Z\NRU]\VWDQLHPMÚ]\ND-DYD6FULSWWU]HEDZLHG]LHÊMDNSU]HJOÈGDUND
LQWHUQHWRZDLQWHUSUHWXMHNRG+70/LVWRVXMHZQLPVW\OH
1. POBRANIE STRONY
JAKO KODU HTML
.DĝGDVWURQDZLWU\Q\LQWHUQHWR
ZHMPRĝHE\ÊSRVWU]HJDQDMDNR
RGG]LHOQ\GRNXPHQW'ODWHJR
WHĝVLHÊVNïDGDVLÚ]ZLHOX
ZLWU\QLQWHUQHWRZ\FK]NWöU\FK
NDĝGDPDFRQDMPQLHMMHGHQ
GRNXPHQW
2. UTWORZENIE
MODELU STRONY
I PRZECHOWYWANIE
GO W PAMIĘCI
0RGHOSRND]DQ\QDVWURQLHSR
SUDZHMVWDQRZLUHSUH]HQWDFMÚ
EDUG]RSURVWHMVWURQ\LQWHUQH
WRZHM6WUXNWXUDWDSU]\SRPLQD
GU]HZRJHQHDORJLF]QH1DJöU]H
PRGHOXPDP\RELHNW document
SU]HGVWDZLDMÈF\GRNXPHQWMDNR
FDïRĂÊ
3RQLĝHMRELHNWXdocumentSR
V]F]HJöOQHUDPNLVÈQD]\ZDQH
ZÚ]ïDPL.DĝG\]W\FKZÚ]ïöZ
WRNROHMQ\RELHNW:RPDZLD
Q\PSU]\NïDG]LHPDP\WU]\
W\S\ZÚ]ïöZSU]HGVWDZLDMÈF\FK
HOHPHQW\WHNVWZHOHPHQWDFK
RUD]DWU\EXW
46
ABC PROGRAMOWANIA
3. UŻYCIE SILNIKA
PRZEGLĄDARKI
INTERNETOWEJ DO
WYŚWIETLENIA STRONY
NA EKRANIE
-HĝHOLVWURQDQLH]DZLHUDVW\OöZ
&66WRVLOQLNSU]HJOÈGDUNLLQWHU
QHWRZHM]DVWRVXMHZHOHPHQWDFK
+70/VW\OHGRP\ĂOQH-HGQDN
ZNRG]LH+70/RPDZLDQHJR
SU]\NïDGX]QDMGXMHVLÚSROHFH
QLHZF]\WXMÈFHDUNXV]VW\OöZ
&66'ODWHJRWHĝSU]HJOÈGDUND
LQWHUQHWRZDSRELHUDZVND]DQ\
SOLNDQDVWÚSQLHZ\ĂZLHWOD
VWURQÚ]Xĝ\FLHPGRïÈF]RQ\FK
VW\OöZ
.LHG\SU]HJOÈGDUNDLQWHUQHWRZD
RWU]\PXMHUHJXï\&66WR
VLOQLNSU]HWZDU]DMHLVWRVXMH
NDĝGÈUHJXïÚGRRGSRZLHGQLFK
HOHPHQWöZ:WHQVSRVöESU]H
JOÈGDUNDLQWHUQHWRZDXPLHV]F]D
SRV]F]HJöOQHHOHPHQW\QD
ZïDĂFLZ\FKPLHMVFDFKZUD]
]RGSRZLHGQLPLNRORUDPL
F]FLRQNDPLLWG
:V]\VWNLHQRZRF]HVQHSU]HJOÈGDUNLLQWHUQHWRZHXĝ\ZDMÈLQWHUSUHWHUD
-DYD6FULSWGRSU]HNV]WDïFHQLDLQVWUXNFMLSURJUDPLVW\ ZMÚ]\NX
-DYD6FULSW QDLQVWUXNFMHPRĝOLZHGRZ\NRQDQLDSU]H]NRPSXWHU
.LHG\Xĝ\ZDV]NRGX-DYD6FULSW
ZSU]HJOÈGDUFHLQWHUQHWRZHM
]DMPXMHVLÚW\PMHMF]ÚĂÊ
QD]\ZDQDLQWHUSUHWHUHP OXE
VLOQLNLHPVNU\SWRZ\P ,QWHUSUHWHUELHU]HSU]\JR
WRZDQHSU]H]SURJUDPLVWÚ
SROHFHQLD ZMÚ]\NX-DYD6FULSW L]DVWÚSXMHMHLQVWUXNFMDPL
NWöUHSU]HJOÈGDUNDLQWHUQHWRZD
PRĝHZ\NRU]\VWDÊGRZ\NR
QDQLD]DGDñ]OHFRQ\FKSU]H]
Xĝ\WNRZQLND
W LQWHUSUHWRZDQ\PMÚ]\NX
SURJUDPRZDQLDWDNLPMDN
-DYD6FULSWNDĝG\ZLHUV]NRGX
MHVWSU]HNV]WDïFDQ\SRNROHL
ZWUDNFLHZ\NRQ\ZDQLDVNU\SWX
1
<!DOCTYPE html>
<html>
<head>
Przeglądarka
<title>Constructive & Co.</title>
internetowa otrzymuje
stronę HTML.
<link rel=”stylesheet” href=”css/c01.css” />
</head>
<body>
<h1>Constructive & Co.</h1>
<p>6NïDGDQLH]DPöZLHñLZV]HONLHLQIRUPDFMHVÈGRVWÚSQHSRGQXPHUHPWHOHIRQX
<em>555-3344</em>.</p>
</body>
</html>
2
document
Tworzy model
strony i przechowuje
go w pamięci.
<html>
<head>
<title>
Constructive
& Co.
<link>
rel stylesheet
href css/c01.css
<body>
<h1>
Constructive
& Co.
OBIEKT
ELEMENT
TEKST
ATRYBUTY
<p>
Składanie zamówień i wszelkie
informacje są
dostępne pod
numerem telefonu
<em>
555-3344
3
Wyświetlenie
strony na ekranie
z wykorzystaniem
silnika przeglądarki
internetowej.
ABC PROGRAMOWANIA
47
PODSUMOWANIE
ABC PROGRAMOWANIA
B. Jak komputery wkomponowują się w otaczający
nas świat?
f :\NRU]\VWXMÈFGDQHNRPSXWHU\WZRU]ÈPRGHOHU]HF]\
]HĂZLDWDU]HF]\ZLVWHJR
f 0RGHOHRSLHUDMÈVLÚQDRELHNWDFKZFHOXSU]HGVWDZLDQLD
ğ]\F]Q\FKU]HF]\2ELHNW\PRJÈPLHÊZïDĂFLZRĂFLNWöUH
GRVWDUF]DMÈGDQ\FKRQLFKPHWRG\Z\NRQXMÈFH]DGDQLD
]DSRPRFÈZïDĂFLZRĂFLGDQHJRRELHNWXRUD]]GDU]HQLD
Z\ZRï\ZDQHSRGF]DVSUDF\Xĝ\WNRZQLND]NRPSXWHUHP
f 3URJUDPLĂFLPRJÈWZRU]\ÊNRGR]QDF]DMÈF\ķ.LHG\Z\VWÈSL
WR]GDU]HQLHQDOHĝ\XUXFKRPLÊWHQNRGĵ
f 3U]HJOÈGDUNLLQWHUQHWRZHXĝ\ZDMÈNRGX]QDF]QLNöZ+70/
ZFHOXXWZRU]HQLDPRGHOXVWURQ\LQWHUQHWRZHM3RV]F]HJöOQH
HOHPHQW\WZRU]ÈZïDVQHZÚ]ï\ ZÚ]HïWRURG]DMRELHNWX f $E\]DSHZQLÊLQWHUDNW\ZQRĂÊVWURQLQWHUQHWRZ\FKSURJUDPLVWD
WZRU]\NRGZ\NRU]\VWXMÈF\PRGHOGDQHMVWURQ\SU]\JRWRZDQ\
SU]H]SU]HJOÈGDUNÚLQWHUQHWRZÈ
48
ABC PROGRAMOWANIA
1/c
JAK MOŻNA UTWORZYĆ
SKRYPT NA STRONĘ
INTERNETOWĄ?
ABC PROGRAMOWANIA
49
JAK POŁĄCZYĆ HTML,
CSS I JAVASCRIPT?
=DQLP]DJïÚELP\VLÚZMÚ]\N-DYD6FULSWQDMSLHUZ
SRZLQLHQHĂGRZLHG]LHÊVLÚMDNSRïÈF]\ÊJR
]NRGHP+70/L&66QDVWURQDFKLQWHUQHWRZ\FK
3URJUDPLĂFLDSOLNDFMLLQWHUQHWR
Z\FK]Z\NOHZ\PLHQLDMÈWU]\
MÚ]\NLSURJUDPRZDQLDZ\NR
U]\VW\ZDQHSRGF]DVWZRU]HQLD
VWURQLQWHUQHWRZ\FK+70/
&66L-DYD6FULSW
<html>
WARSTWA ZAWARTOŚCI
PLIKI .HTML
-HVWWRZDUVWZD]DZDUWRĂFL
Z\ĂZLHWODQHMQDVWURQDFK
LQWHUQHWRZ\FK.RG+70/
QDGDMHVWURQLHVWUXNWXUÚRUD]
VHPDQW\NÚ
-HĝHOLWRPRĝOLZHNRGZ\
PLHQLRQ\FKMÚ]\NöZSRZLQLHQ
]QDMGRZDÊVLÚZRGG]LHOQ\FK
SOLNDFKSU]\F]\PZGRNX
PHQFLH+70/XPLHV]F]DQHVÈ
SROHFHQLDZF]\WXMÈFH]DZDUWRĂÊ
SOLNöZ&66L-DYD6FULSW
{css}
WARSTWA
PREZENTACYJNA
PLIKI .CSS
6W\OH&66XVSUDZQLDMÈVWURQÚ
+70/]DSRPRFÈUHJXïRNUH
ĂODMÈF\FKVSRVöESUH]HQWDFML
]DZDUWRĂFL+70/ NRORUWïD
REUDPRZDQLHZ\PLDU\HOHPHQ
WöZNRORUWHNVWXF]FLRQNLLWG 3U]HGVWDZLRQHSRGHMĂFLHSURJUDPLĂFLEDUG]RF]ÚVWRRNUHĂODMÈ
mianem VHSDUDFML]DGDñ DQJseparation on concerns 50
ABC PROGRAMOWANIA
.DĝG\MÚ]\NWZRU]\RGG]LHOQÈ
ZDUVWZÚVïXĝÈFÈGR]XSHïQLH
LQQHJRFHOX3RV]F]HJöOQH
ZDUVWZ\ RGOHZHMGRSUDZHM
VWURQ\ VÈ]EXGRZDQHQD
SRSU]HGQLFK
MDYDVFULSW
WARSTWA ZACHOWANIA
PLIKI .JS
7DZDUVWZDSR]ZDODQD]PLDQÚ
]DFKRZDQLDVWURQ\LQWHUQHWRZHM
LGRGDQLHMHMLQWHUDNW\ZQRĂFL
1DOHĝ\]URELÊZV]\VWNRDE\
NRG-DYD6FULSW]QDMGRZDïVLÚ
ZRGG]LHOQ\FKSOLNDFK
STOPNIOWE ULEPSZANIE
:\PLHQLRQHZF]HĂQLHMWU]\ZDUVWZ\VWDQRZLÈSRGVWDZÚSRSXODUQHJRSR
GHMĂFLDZ]DNUHVLHEXGRZ\VWURQLQWHUQHWRZ\FKQD]\ZDQHJRVWRSQLRZ\P
XOHSV]DQLHP DQJprogressive enhancement 1DU\QNXSRMDZLDVLÚFRUD]
ZLÚFHMXU]ÈG]Hñ]GRVWÚSHPGR
LQWHUQHWXLGODWHJRNRQFHSFMD
VWRSQLRZHJRXOHSV]DQLD]\VNDïD
GXĝÈSRSXODUQRĂÊ
8U]ÈG]HQLDUöĝQLÈVLÚQLHW\ONR
ZLHONRĂFLÈHNUDQXDOHWDNĝH
V]\ENRĂFLÈSRïÈF]HQLD]LQWHUQH
WHPLVZRLPLPRĝOLZRĂFLDPL
3RQDGWRQLHNWöU]\Xĝ\WNRZQLF\
Z\ïÈF]DMÈZSU]HJOÈGDUNDFKLQ
WHUQHWRZ\FKREVïXJÚ-DYD6FULSW
1DOHĝ\VLÚZLÚFXSHZQLÊĝH
VWURQDLQWHUQHWRZDQDGDOEÚG]LH
G]LDïDïDSRPLPREUDNXREVïXJL
-DYD6FULSWX
TYLKO HTML
HTML + CSS
HTML + CSS + JAVASCRIPT
5R]SRF]ÚFLHSUDF\RGZDUVWZ\
+70/SR]ZDODVNRQFHQWURZDÊ
VLÚQDQDMZDĝQLHMV]\PDVSHNFLH
ZLWU\Q\LQWHUQHWRZHMMDNLPMHVW
MHM]DZDUWRĂÊ
8PLHV]F]HQLHUHJXï&66
ZRGG]LHOQ\PSOLNXSR]ZDODQD
RGG]LHOHQLHVSRVREXSUH]HQWDFML
RGVDPHM]DZDUWRĂFLVWURQ\
.RG-DYD6FULSWMHVWGRGDZDQ\
QDNRñFXZFHOXSRSUDZLHQLD
Xĝ\WHF]QRĂFLVWURQ\OXE
ZUDĝHñMDNLHXĝ\WNRZQLNRGQRVL
SRGF]DVLQWHUDNFML]ZLWU\QÈ
LQWHUQHWRZÈ
=Z\Nï\NRG+70/SRZLQLHQE\Ê
SUDZLGïRZRREVïXJLZDQ\ZH
ZV]\VWNLFKURG]DMDFKXU]ÈG]Hñ
GRVWÚSQ\GODZV]\VWNLFK
Xĝ\WNRZQLNöZRUD]ZF]\W\ZDQ\
V]\ENRQDZHWZSU]\SDGNXZRO
QHJRSRïÈF]HQLD]LQWHUQHWHP
7HQVDPDUNXV]VW\OöZPRĝQD
Z\NRU]\VW\ZDÊZHZV]\VWNLFK
ZLWU\QDFKFRSR]ZDODQDLFK
V]\EV]HZF]\W\ZDQLHLïDWZLHM
V]ÈNRQVHUZDFMÚ2F]\ZLĂFLH
PRĝQDVWRVRZDÊUöĝQHDUNXV]H
VW\OöZGODWHMVDPHM]DZDUWRĂFL
DW\PVDP\PSU]\JRWRZDÊ
RGPLHQQ\Z\JOÈGGODW\FK
VDP\FKGDQ\FK
=DFKRZDQLHVHSDUDFMLPLÚG]\
SRV]F]HJöOQ\PLZDUVWZDPL
R]QDF]DĝHVWURQDQDGDOEÚG]LH
IXQNFMRQRZDïDQDZHWSRPLPR
EUDNXPRĝOLZRĂFLZF]\WDQLDOXE
XUXFKRPLHQLDNRGX-DYD6FULSW
3RQDGWRWHJRVDPHJRNRGX
-DYD6FULSWPRĝQDXĝ\ÊQDZLHOX
VWURQDFKFRSU]HNïDGDVLÚQD
V]\EV]HZF]\W\ZDQLHZLWU\Q\
LQWHUQHWRZHMLMHMïDWZLHMV]È
NRQVHUZDFMÚ
ABC PROGRAMOWANIA
51
TWORZENIE PROSTEGO KODU
JAVASCRIPT
3RGREQLHMDN+70/L&66WDNĝHNRG-DYD6FULSWPDSRVWDÊ]Z\NïHJR
WHNVWX'ODWHJRWHĝGRMHJRSU]\JRWRZDQLDQLHSRWU]HEXMHV]ĝDGQHJRQRZHJR
QDU]ÚG]LD:RPDZLDQ\PSU]\NïDG]LHGRGDMHP\SRZLWDQLHQDVWURQLH+70/
7HNVWSRZLWDQLDEÚG]LH]DOHĝDïRGSRU\GQLD
8WZöU]NDWDORJSU]H]QDF]R
Q\QDSOLNLSU]\NïDGXLQDGDM
PXQD]ZÚc011DVWÚSQLH
XUXFKRPXOXELRQ\HG\WRUWHNVWX
LZSURZDGěNRGSU]HGVWDZLRQ\
SRSUDZHMVWURQLH
1
3OLN-DYD6FULSWWR]Z\Nï\
SOLNWHNVWRZ\ SRGREQLHMDN
SOLNL+70/L&66 DOHSRVLDGD
UR]V]HU]HQLH.js'ODWHJRWHĝ
QRZ\SOLN]DSLV]SRGQD]ZÈ
add-content.js
var today = new Date();
var hourNow = today.getHours();
var greeting;
if (hourNow > 18) {
JUHHWLQJ ij'REU\ZLHF]öUij
} else if (hourNow > 12) {
JUHHWLQJ ij']LHñGREU\ij
} else if (hourNow > 0) {
JUHHWLQJ ij']LHñGREU\ij
} else {
greeting = ’Witamy!’;
}
document.write(’<h3>’ + greeting + ’</h3>’);
1LHSU]HMPXMVLÚMHĂOLNRG
VNU\SWXMHVWGOD&LHELHQLH
]UR]XPLDï\:W\PPRPHQFLH
NRQFHQWUXMHP\VLÚQDWZRU]HQLX
VNU\SWXLMHJRGRïÈF]HQLXGR
VWURQ\+70/
2 1DVWURQLHhttp://www.javascriptbook.com/]QDMG]LHV]VW\OH
&66LLOXVWUDFMHGRRPDZLDQHJR
SU]\NïDGX
$E\]DFKRZDÊRUJDQL]DFMÚ
SOLNöZSOLNLDUNXV]\VW\OöZ
VÈEDUG]RF]ÚVWRXPLHV]F]DQH
ZNDWDORJXRQD]ZLHstylesOXE
cssQDWRPLDVWSOLNL-DYD6FULSW
ZNDWDORJXRQD]ZLHscripts
javascriptOXEjs:RPDZLD
Q\PSU]\NïDG]LHQRZ\SOLN
]DSLVXMHP\ZNDWDORJXjs
52
ABC PROGRAMOWANIA
1DU\VXQNXPRĝHV]]REDF]\ÊVWUXNWXUÚSOLNöZMDNÈRWU]\PDV]
SR]UHDOL]RZDQLXRPDZLDQHJRWXWDMSU]\NïDGX=DZV]HWUDNWXMQD]Z\
SOLNöZWDNMDNE\ZLHONRĂÊOLWHUPLDïDZQLFK]QDF]HQLH
DOŁĄCZENIE PLIKU JAVASCRIPT
NA STRONIE HTML
.LHG\QDVWURQLHLQWHUQHWRZHMFKFHV]Xĝ\ÊNRGX-DYD6FULSWPXVLV]
Z\NRU]\VWDÊHOHPHQW+70/<script>LQDND]DÊSU]HJOÈGDUFHLQWHUQHWRZHM
ZF]\WDQLHVNU\SWX$WU\EXWsrcZVND]XMHPLHMVFHSU]HFKRZ\ZDQLDSOLNX
-DYD6FULSW
<!DOCTYPE html>
<html>
<head>
<title>Constructive & Co.</title>
<link rel=”stylesheet” href=”css/c01.css” />
</head>
<body>
<h1>Constructive & Co.</h1>
VFULSWVUF ĵMVDGGFRQWHQWMVĵ!VFULSW!
<p>6NïDGDQLH]DPöZLHñLZV]HONLHLQIRUPDFMHVÈ
GRVWÚSQHSRGQXPHUHPWHOHIRQX
<em>555-3344</em></p>
</body>
</html>
3 :HG\WRU]HNRGXěUöGïR
ZHJRZSURZDGěNRG+70/
SU]HGVWDZLRQ\SROHZHMVWURQLH
1DVWÚSQLH]DSLV]SOLNSRG
QD]ZÈadd-content.html
(OHPHQW+70/<script>MHVW
Xĝ\ZDQ\ZFHOXZF]\WDQLDSOLNX
-DYD6FULSWQDVWURQLH(OHPHQW
WHQSRVLDGDDWU\EXWsrc
NWöUHJRZDUWRĂFLÈMHVWĂFLHĝND
GRVWÚSXGRGRïÈF]DQHJRSOLNX
:WHQVSRVöEQDND]XMHP\
SU]HJOÈGDUFHLQWHUQHWRZHM
RGV]XNDQLHLZF]\WDQLHSOLNX
VNU\SWX GRNïDGQLHWDNVDPR
MDNZSU]\SDGNXDWU\EXWXsrc
Z]QDF]QLNX<img> 4 :SU]HJOÈGDUFHLQWHUQHWR
ZHMRWZöU]SU]\JRWRZDQ\SOLN
+70/3RZLQLHQHĂ]REDF]\Ê
ĝHNRG-DYD6FULSWXPLHĂFLïQD
VWURQLHSRZLWDQLH WXWDMDobry
wieczór! 3RZLWDQLHWR]RVWDïR
Z\JHQHURZDQHSU]H]NRG
-DYD6FULSWLQLH]QDMGXMHVLÚ
ZSOLNX+70/
=ZUöÊXZDJÚĝHSU]HJOÈGDUND,QWHUQHW([SORUHUF]DVDPLXQLHPRĝOLZLDZ\NRQDQLHNRGX-DYD6FULSW
SRGF]DVRWZLHUDQLDVWURQ\SU]HFKRZ\ZDQHMORNDOQLHQDG\VNX-HĝHOLVSRWNDV]VLÚ]WDNÈV\WXDFMÈ
Z\SUöEXMLQQÈSU]HJOÈGDUNÚLQWHUQHWRZÈQDSU]\NïDG&KURPH)LUHIRNVD2SHUÚOXE6DIDUL
ABC PROGRAMOWANIA
53
KOD ŹRÓDŁOWY NIE JEST
MODYFIKOWANY
-HĝHOLVSRMU]\V]QDNRGěUöGïRZ\RPDZLDQHJRSU]\NïDGX
WRSU]HNRQDV]VLÚĝH]QDF]QLNL+70/SR]RVWDï\GRNïDGQLHWDNLHVDPH
5 *G\Z\SUöEXMHV]ZSU]H
JOÈGDUFHLQWHUQHWRZHMSU]\JR
WRZDQ\SU]\NïDGZ\ĂZLHWONRG
ěUöGïRZ\VWURQ\ 2GSRZLHGQLÈ
RSFMÚQDMF]ÚĂFLHM]QDMG]LHV]
ZPHQXWidok1DU]ÚG]LDOXE
Programowanie 6 .RGěUöGïRZ\Z\ĂZLHWORQHM
VWURQ\LQWHUQHWRZHMQLH]DZLHUD
QRZHJRHOHPHQWXXPLHV]
F]RQHJRQDVWURQLH3RND]XMH
SROHFHQLHZF]\WXMÈFHSOLN
-DYD6FULSW
:GDOV]\FKUR]G]LDïDFK]RED
F]\V]ĝHZLÚNV]RĂÊVNU\SWöZ
MHVWGRïÈF]DQ\FKSU]HG]QDF]
QLNLHP]DP\NDMÈF\P</body>
7RPLHMVFHMHVWEDUG]R
F]ÚVWRXZDĝDQH]DQDMOHSV]H
GRGRïÈF]DQLDVNU\SWöZ 54
ABC PROGRAMOWANIA
UMIESZCZENIE SKRYPTU
NA STRONIE
=DSHZQHZLG]LDïHĂNRG-DYD6FULSWXPLHV]F]RQ\ZGRNXPHQFLH+70/PLÚG]\
]QDF]QLNDPLRWZLHUDMÈF\P<script>L]DP\NDMÈF\P</script> QDMOHSV]\P
UR]ZLÈ]DQLHPMHVWXPLHV]F]DQLHVNU\SWöZZRGG]LHOQ\FKSOLNDFK <!DOCTYPE html>
<html>
<head>
<title>Constructive & Co.</title>
<link rel=”stylesheet” href=”css/c01.css” />
</head>
<body>
<h1>Constructive & Co.</h1>
<script>document.write(’<h3>Witamy!</h3>’);</script>
<p>6NïDGDQLH]DPöZLHñLZV]HONLHLQIRUPDFMHVÈ
GRVWÚSQHSRGQXPHUHPWHOHIRQX
<em>555-3344</em></p>
</body>
</html>
7 7HUD]RWZöU]SOLN+70/
ZHG\WRU]HXVXñDWU\EXWsrc
]H]QDF]QLNDRWZLHUDMÈFHJR
<script>DQDVWÚSQLHPLÚG]\
]QDF]QLNDPL<script>
i </script>GRGDMQRZ\NRGSR
ND]DQ\SROHZHMVWURQLH$WU\EXW
srcQLHMHVWGïXĝHMSRWU]HEQ\
SRQLHZDĝNRG-DYD6FULSW
]QDMGXMHVLÚQDVWURQLH+70/
-DNZVSRPQLDQRZSRGUR]
G]LDOHķ-DNSRïÈF]\Ê+70/
&66L-DYD6FULSW"ĵQDMOHSLHM
MHVWXQLNDÊXPLHV]F]DQLDNRGX
-DYD6FULSWQDVWURQDFK+70/
7DNLHUR]ZLÈ]DQLHSRND]DQR
WXWDMSRQLHZDĝPRĝHV]VLÚ
VSRWNDÊ]WÈWHFKQLNÈ
8 2WZöU]SOLN+70/
ZSU]HJOÈGDUFHLQWHUQHWRZHM
1DVWURQLH]RVWDïRZ\ĂZLHWORQH
SRZLWDQLH
-DNSHZQLH]JDGïHĂSROHFHQLH
document.write() zapisuje
]DZDUWRĂÊZRELHNFLHdocument
VWURQDLQWHUQHWRZD 7RMHVW
EDUG]RSURVW\VSRVöEGRGDZD
QLD]DZDUWRĂFLQDVWURQLHFKRÊ
QLH]DZV]HQDMOHSV]\:UR]
G]LDOHEÚGÈSU]HGVWDZLRQH
UöĝQHVSRVRE\XDNWXDOQLDQLD
]DZDUWRĂFLVWURQ\
ABC PROGRAMOWANIA
55
JAK UŻYWAĆ OBIEKTÓW
I METOD?
3U]HGVWDZLRQ\SRQLĝHMMHGHQZLHUV]NRGX-DYD6FULSWSRND]XMHMDNXĝ\ZDÊ
RELHNWöZLPHWRG3URJUDPLĂFLQD]\ZDMÈWRZ\ZRïDQLHPPHWRG\RELHNWX
2ELHNWdocumentSU]HGVWDZLD
FDïÈVWURQÚLQWHUQHWRZÈ
:V]\VWNLHSU]HJOÈGDUNLLQWHUQH
WRZHLPSOHPHQWXMÈWHQRELHNW
LPRĝQDJRZ\NRU]\VW\ZDÊSR
SURVWXSRGDMÈFMHJRQD]ZÚ
OBIEKT
0HWRGDwrite()RELHNWXdocumentSR]ZDODQDXPLHV]F]HQLH
QRZHM]DZDUWRĂFLQDVWURQLH
ZPLHMVFXXĝ\FLDHOHPHQWX
<script>
METODA
document.write(IJ'REU\ZLHF]öUij);
OPERATOR ELEMENTU
SKŁADOWEGO
2ELHNWdocumentSRVLDGDZLHOHPHWRG
LZïDĂFLZRĂFL6ÈRQHQD]\ZDQHHOHPHQWDPL
VNïDGRZ\PLRELHNWX
'RVWÚSGRHOHPHQWöZVNïDGRZ\FKRELHNWX
PRĝQDX]\VNDÊ]Z\NRU]\VWDQLHPNURSNL
XPLHV]F]DQHMPLÚG]\QD]ZÈRELHNWXLQD]ZÈ
HOHPHQWXVNïDGRZHJRNWöUHJRFKFHV]Xĝ\Ê
.URSNDMHVWQD]\ZDQDRSHUDWRUHPHOHPHQWX
VNïDGRZHJR
3U]HJOÈGDUNDLQWHUQHWRZDXĝ\ZD
ZWOH]QDF]QLHZLÚNV]HMLORĂFL
NRGXDE\]DZDUWRĂÊSRMDZLïD
VLÚQDHNUDQLH1DV]F]ÚĂFLHQLH
PXVLV]ZLHG]LHÊMDNSU]HJOÈ
GDUNDWRUREL
56
ABC PROGRAMOWANIA
PARAMETRY
-HĝHOLGRSUDZLGïRZHJRG]LDïDQLD
PHWRGDZ\PDJDSHZQ\FKLQIRUPDFML
GRGDWNRZ\FKWRGDQHVÈSU]HND]\ZDQH
ZQDZLDVLH
.DĝG\IUDJPHQWLQIRUPDFMLQRVLQD]ZÚ
SDUDPHWUXPHWRG\:RPDZLDQ\P
SU]\NïDG]LHPHWRGDwrite()PXVL
ZLHG]LHÊMDNÈ]DZDUWRĂÊPDXPLHĂFLÊQD
VWURQLHLQWHUQHWRZHM
-HGQDNWU]HEDZLHG]LHÊMDN
Z\ZRï\ZDÊRELHNWLPHWRGÚ
DWDNĝHMDNSU]HND]\ZDÊLQIRU
PDFMHQLH]EÚGQHGRZ\NRQDQLD
]OHFRQHJRSU]H]&LHELH]DGDQLD
3U]HJOÈGDUNDLQWHUQHWRZD
]DMPXMHVLÚUHV]WÈ
,VWQLHMH]QDF]QLHZLÚFHM
RELHNWöZSRGREQ\FKGR
SU]HGVWDZLRQHJRRELHNWX
documentRUD]ZLHOHPHWRG
WDNLFKMDNwrite()NWöUHRNDĝÈ
VLÚSRPRFQHSRGF]DVWZRU]HQLD
VNU\SWöZ
KOD JAVASCRIPT JEST
URUCHAMIANY W MIEJSCU,
GDZIE JEST UMIESZCZONY
W DOKUMENCIE HTML
.LHG\SU]HJOÈGDUNDLQWHUQHWRZDQDSRWNDHOHPHQW<script>]DWU]\PXMH
G]LDïDQLHZFHOXZF]\WDQLDVNU\SWXDQDVWÚSQLHVSUDZG]DF]\PXVL
FRNROZLHN]URELÊ
<!DOCTYPE html>
<html>
<head>
<title>Constructive & Co.</title>
<link rel=”stylesheet” href=”css/c01.css” />
</head>
<body>
<h1>Constructive & Co.</h1>
<p>6NïDGDQLH]DPöZLHñLZV]HONLHLQIRUPDFMHVÈGRVWÚSQHSRGQXPHUHPWHOHIRQX
<em>555-3344</em></p>
VFULSWVUF ĵMVDGGFRQWHQWMVĵ!VFULSW!
</body>
</html>
=ZUöÊXZDJÚQDPRĝOLZRĂÊSU]HQLHVLHQLDHOHPHQ
WX<script>ZPLHMVFH]DSLHUZV]\PDNDSLWHPFR
ZSï\ZDQDPLHMVFHZ\ĂZLHWOHQLDWHNVWXSRZLWDQLD
QDVWURQLH
0LHMVFHZ\ĂZLHWODQLDGDQ\FKJHQHURZDQ\FKSU]H]
VNU\SWZSï\ZDQDXPLHMVFRZLHQLHHOHPHQWöZ
<script>QDVWURQLHLQWHUQHWRZHMRUD]QDRJöOQ\
F]DVMHMZF]\W\ZDQLDSDWU]SRGUR]G]LDïķ*G]LH
XPLHV]F]DÊVNU\SW\"ĵ
ABC PROGRAMOWANIA
57
PODSUMOWANIE
ABC PROGRAMOWANIA
C. Jak można utworzyć skrypt na stronę
internetową?
f 1DMOHSV]\PUR]ZLÈ]DQLHPMHVWXPLHV]F]HQLHNRGX-DYD6FULSW
ZRGG]LHOQ\PSOLNX-DYD6FULSW7REÚG]LH]Z\Nï\SOLNWHNVWRZ\
SRGREQLHMDNSOLNLVWURQ+70/LDUNXV]\VW\OöZ&66 DOH
]UR]V]HU]HQLHP.js
f (OHPHQW+70/<script>MHVWXĝ\ZDQ\QDVWURQDFK+70/
ZFHOXZVND]DQLDSU]HJOÈGDUFHLQWHUQHWRZHMNRQLHF]QRĂFL
ZF]\WDQLDSOLNX-DYD6FULSW SRGREQLHMDNHOHPHQW<link>PRĝH
E\ÊXĝ\W\GRZF]\WDQLDSOLNX&66 f *G\Z\ĂZLHWOLV]ZSU]HJOÈGDUFHLQWHUQHWRZHMNRGěUöGïRZ\
VWURQ\WR]DXZDĝ\V]ĝH-DYD6FULSWQLHPRG\ğNXMH]QDF]QLNöZ
+70/6NU\SWG]LDïDQDXWZRU]RQ\PSU]H]SU]HJOÈGDUNÚ
PRGHOXVWURQ\LQWHUQHWRZHM
58
ABC PROGRAMOWANIA
2
PODSTAWOWE
INSTRUKCJE
JAVASCRIPT
:W\PUR]G]LDOH]DF]QLHV]XF]\ÊVLÚRGF]\WXLWZRU]HQLD
NRGX-DYD6FULSW3RQDGWR]REDF]\V]MDNZ\GDZDÊSROHFHQLD
SU]HJOÈGDUFHLQWHUQHWRZHM
JĘZYK — SŁOWNICTWO I SKŁADNIA
3RGREQLHMDNZSU]\SDGNXNDĝGHJRQRZHJR
MÚ]\NDSU]\QDXFH-DYD6FULSWGRRSDQRZDQLD
MHVWZLHOHQRZ\FKVïöZ VïRZQLFWZR LUHJXï
GRW\F]ÈF\FKLFKXĝ\FLD VNïDGQLD WYDAWANIE POLECEŃ
PRZEGLĄDARCE INTERNETOWEJ
3U]HJOÈGDUNLLQWHUQHWRZH LRJöOQLHNRPSXWHU\ Z\NRQXMÈ]DGDQLDZ]XSHïQLHRGPLHQQ\
VSRVöEQLĝF]ïRZLHN:\GDZDQHSU]H]&LHELH
SROHFHQLDPXV]ÈRG]ZLHUFLHGODÊVSRVöE
G]LDïDQLDNRPSXWHUD
1DXNÚUR]SRF]QLHP\RGNLONXNOXF]RZ\FKHOHPHQWöZNRQVWUXNF\MQ\FKMÚ]\ND'RZLHV]VLÚ
MDNPRĝQDMHZ\NRU]\VWDÊGRRSUDFRZDQLDEDUG]RSURVW\FKVNU\SWöZ VNïDGDMÈF\FKVLÚ]NLONX
NURNöZ DGRSLHURZNROHMQ\FKUR]G]LDïDFK]DMPLHP\VLÚQLHFREDUG]LHMVNRPSOLNRZDQ\PL
koncepcjami.
60
PODSTAWOWE INSTRUKCJE JAVASCRIPT
PODSTAWOWE INSTRUKCJE JAVASCRIPT
61
POLECENIA
6NU\SWWRVHULDLQVWUXNFMLZ\NRQ\ZDQ\FKNROHMQRSU]H]NRPSXWHU
.DĝGDSRMHG\QF]DLQVWUXNFMD NURN MHVWQD]\ZDQDpoleceniem.
1DNRñFXSROHFHQLDSRZLQLHQ]QDMGRZDÊVLÚĂUHGQLN
']LDïDQLHNRGXNWöU\SU]HGVWDZLRQRSRSUDZHM
VWURQLHZNUöWFH]RVWDQLHRPöZLRQHDOHWHUD]
]ZUöÊXZDJÚQDQDVWÚSXMÈFHNZHVWLH
• .DĝG\ZLHUV]NRGXZNRORU]Hzielonym jest
poleceniem.
• 1DZLDV\NODPURZHZNRORU]HUöĝRZ\P
R]QDF]DMÈSRF]ÈWHNLNRQLHFbloku kodu.
%ORNNRGXPRĝH]DZLHUDÊZLHOHSROHFHñ • .RGZNRORU]HğROHWRZ\PXVWDODNWöU\
IUDJPHQWNRGXSRZLQLHQ]RVWDÊZ\NRQDQ\MDN
VLÚSU]HNRQDV]ZUR]G]LDOHZSRGUR]G]LDOH
ķ2FHQDZDUXQNXLSROHFHñZDUXQNRZ\FKĵ
var today = new Date();
var hourNow = today.getHours();
var greeting;
if (hourNow > 18) {
greeting = ’Dobry wieczór!’;
} else if (hourNow > 12) {
JUHHWLQJ ij']LHñGREU\ij
} else if (hourNow > 0) {
JUHHWLQJ ij']LHñGREU\ij
} else {
greeting = ’Witamy!’;
}
document.write(’<h3>’ + greeting + ’</h3>’);
W JĘZYKU JAVASCRIPT
WIELKOŚĆ LITER MA ZNACZENIE
:LHONRĂÊOLWHUZNRG]LH-DYD6FULSWPD]QDF]HQLH
'ODWHJRWHĝhourNowR]QDF]D]XSHïQLHFRLQQHJR
QLĝHourNow lub HOURNOW.
POLECENIA SĄ INSTRUKCJAMI,
KAŻDE Z NICH ROZPOCZYNA SIĘ
W NOWYM WIERSZU
3ROHFHQLHWRSRMHG\QF]DLQVWUXNFMDNWöUDSRZLQQD
E\ÊZ\NRQDQDSU]H]NRPSXWHU.DĝGHSROHFHQLH
SRZLQQRUR]SRF]\QDÊVLÚZQRZ\PZLHUV]X
LNRñF]\ÊVLÚĂUHGQLNLHP.RGěUöGïRZ\XWZRU]RQ\
ZWDNLVSRVöEMHVWïDWZ\ZRGF]\FLH
¥UHGQLNZVND]XMHLQWHUSUHWHURZL-DYD6FULSWNRQLHF
NURNXLSU]HMĂFLHGRNROHMQHJR
62
PODSTAWOWE INSTRUKCJE JAVASCRIPT
POLECENIA MOGĄ BYĆ ORGANIZOWANE
W BLOKI KODU
3HZQHSROHFHQLDVÈXMÚWHZQDZLDV\NODPURZH
LQRV]ÈQD]ZÚEORNöZNRGX3R]DP\NDMÈF\P
QDZLDVLHNODPURZ\PQLHXPLHV]F]DVLÚĂUHGQLND
:SU]HGVWDZLRQ\PSRZ\ĝHMSU]\NïDG]LHNDĝG\
EORNNRGX]DZLHUDMHGQRSROHFHQLHGRW\F]ÈFH
DNWXDOQHMJRG]LQ\%ORNLNRGXVÈF]ÚVWRXĝ\ZDQH
GR]JUXSRZDQLDZLHOXSROHFHñFRSRPDJD
SURJUDPLĂFLHZRUJDQL]DFMLNRGXNWöU\]NROHL
VWDMHVLÚ]QDF]QLHF]\WHOQLHMV]\
KOMENTARZE
:NRG]LHQDOHĝ\XPLHV]F]DÊNRPHQWDU]HZ\MDĂQLDMÈFHVSRVöEMHJRG]LDïDQLD
']LÚNLNRPHQWDU]RPNRGVWDMHVLÚïDWZLHMV]\GRRGF]\WXL]UR]XPLHQLD
.RPHQWDU]HPRJÈSRPöF]DUöZQR7RELHMDNLLQQ\PZRGF]\FLHNRGX
7HQVNU\SWZ\ĂZLHWODXĝ\WNRZQLNRZLWHNVWSRZLWDQLDZ\EUDQ\QDSRGVWDZLHDNWXDOQHM
JRG]LQ\3U]\NïDGSRFKRG]L]NVLÈĝNL-DYD6FULSW M4XHU\ var today = new Date();
8WZRU]HQLHQRZHJRRELHNWXGDW\
var hourNow = today.getHours(); 8VWDOHQLHDNWXDOQHMJRG]LQ\
var greeting;
:\ĂZLHWOHQLHRGSRZLHGQLHJRWHNVWXSRZLWDQLDQDSRGVWDZLHDNWXDOQHMJRG]LQ\
if (hourNow > 18) {
greeting = ’Dobry wieczór!’;
} else if (hourNow > 12) {
JUHHWLQJ ij']LHñGREU\ij
Kolor zielony — kod JavaScript.
} else if (hourNow > 0) {
JUHHWLQJ ij']LHñGREU\ij
} else {
greeting = ’Witamy!’;
}
document.write(’<h3>’ + greeting
Kolor UöĝRZ\ĽNRPHQWDU]ZLHORZLHUV]RZ\
Kolor V]DU\ĽNRPHQWDU]MHGQRZLHUV]RZ\
+ ’</h3>’);
KOMENTARZ WIELOWIERSZOWY
KOMENTARZ JEDNOWIERSZOWY
-HĝHOLNRPHQWDU]PDREHMPRZDÊZLÚFHMQLĝ
W\ONRMHGHQZLHUV]WRQDOHĝ\Xĝ\ÊNRPHQWDU]D
ZLHORZLHUV]RZHJR. W takim przypadku komentarz
UR]SRF]\QDVLÚ]QDNDPL/*LNRñF]\VLÚ]QDNDPL
*/:V]\VWNRWRFR]QDMGXMHVLÚPLÚG]\W\PL
R]QDF]HQLDPLQLHEÚG]LHSU]HWZDU]DQHSU]H]
interpreter JavaScript.
W komentarzu MHGQRZLHUV]RZ\PZV]\VWNR
FR]QDMGXMHVLÚ]DGZRPDXNRĂQLNDPL // ZGDQ\PZLHUV]XQLHEÚG]LHSU]HWZDU]DQH
przez interpreter JavaScript. Komentarze
MHGQRZLHUV]RZHVÈF]ÚVWRVWRVRZDQH
ZFKDUDNWHU]HNUöWNLFKRSLVöZZ\MDĂQLDMÈF\FK
G]LDïDQLHNRGX
.RPHQWDU]HZLHORZLHUV]RZHF]ÚVWRVÈZ\NRU]\VW\ZDQHGRRSLVDQLDVSRVREXG]LDïDQLDVNU\SWXOXE
XQLHPRĝOLZLHQLDXUXFKRPLHQLDGDQHJRIUDJPHQWX
VNU\SWXSRGF]DVMHJRWHVWRZDQLD
.RPHQWDU]HRNDĝÈVLÚV]F]HJöOQLHFHQQHMHĂOL
GRNRGXSRZUöFLV]SRZLHOXGQLDFKOXEPLHVLÈFDFK3RPDJDMÈUöZQLHĝRVRERPNWöUHGRSLHUR
]DSR]QDMÈVLÚ]XWZRU]RQ\PSU]H]&LHELHNRGHP
PODSTAWOWE INSTRUKCJE JAVASCRIPT
63
CO TO JEST ZMIENNA?
6NU\SWPXVLPLHÊPRĝOLZRĂÊ
W\PF]DVRZHJRSU]HFKRZ\ZDQLD
LQIRUPDFMLQLH]EÚGQ\FKGRZ\NRQDQLD]DGDQLD'DQHPRJÈE\Ê
SU]HFKRZ\ZDQHZzmiennych.
.LHG\WZRU]\V]NRG-DYD6FULSWPXVLV]ZVND]DÊ
LQWHUSUHWHURZLNDĝG\NURNSU]H]QDF]RQ\GR
Z\NRQDQLD&]DVDPLR]QDF]DWRRZLHOHZLÚFHM
LQIRUPDFMLV]F]HJöïRZ\FKQLĝSU]\SXV]F]DV]
5R]ZDĝQDSU]\NïDGREOLF]HQLHSRZLHU]FKQL
ĂFLDQ\:PDWHPDW\FHREOLF]HQLHSRZLHU]FKQL
SURVWRNÈWDZ\PDJDSRPQRĝHQLDGZöFKOLF]E
V]HURNRĂÊĿZ\VRNRĂÊ SRZLHU]FKQLD
7HJRURG]DMXREOLF]HQLDPRĝHV]SU]HSURZDG]LÊ
ZSDPLÚFL-HGQDNSRGF]DVWZRU]HQLDVNU\SWX
SU]H]QDF]RQHJRGRREOLF]HQLDSRZLHU]FKQL
PXVLV]GRVWDUF]\ÊNRPSXWHURZLGRNïDGQH
LQVWUXNFMH0RĝHV]ZLÚFQDND]DÊZ\NRQDQLH
SRNROHLF]WHUHFKZ\PLHQLRQ\FKQLĝHMNURNöZ
1. =DSDPLÚWDMZDUWRĂÊV]HURNRĂÊ.
2. =DSDPLÚWDMZDUWRĂÊZ\VRNRĂÊ.
3. 3RPQöĝZDUWRĂÊV]HURNRĂÊ przez Z\VRNRĂÊ,
REOLF]DMÈFW\PVDP\PSRZLHU]FKQLÚ.
4. 3U]HNDĝZ\QLNXĝ\WNRZQLNRZL
:WDNLPSU]\SDGNXGRķ]DSDPLÚWDQLDĵZDUWRĂFL
V]HURNRĂFL i Z\VRNRĂFLVÈXĝ\ZDQH]PLHQQH
7RLOXVWUXMHUöZQLHĝĝHVNU\SW]DZLHUDGRNïDGQH
LQVWUXNFMHRG]LDïDQLDFKMDNLHPDSRGHMPRZDÊ
NRPSXWHU =PLHQQÈPRĝQDSRUöZQDÊGR
SDPLÚFLNUöWNRWUZDïHMSRQLHZDĝSRRSXV]F]HQLX
GDQHMVWURQ\SU]HJOÈGDUNDLQWHUQHWRZDķ]DSRPQLĵ
ZV]\VWNLH]ZLÈ]DQH]QLÈLQIRUPDFMH
PODSTAWOWE INSTRUKCJE JAVASCRIPT
=PLHQQDWRGREUDQD]ZDGOD
SU]HGVWDZLRQHMNRQFHSFMLSRQLHZDĝ
GDQHSU]HFKRZ\ZDQHZ]PLHQQHM
PRJÈXOHJDÊ]PLDQLH OXEUöĝQLÊVLÚ ZWUDNFLHNDĝGHJRXUXFKDPLDQLD
skryptu.
1LH]DOHĝQLHRGZ\PLDUöZĂFLDQ\GRVNRQDOHZLHV]
ĝHMHMSRZLHU]FKQLÚPRĝHV]REOLF]\ÊSU]H]SRPQRĝHQLHV]HURNRĂFLĂFLDQ\SU]H]MHMZ\VRNRĂÊ.
3RGREQLHWHVDPHVNU\SW\F]ÚVWRVÈXĝ\ZDQHGR
Z\NRQDQLDWHJRVDPHJR]DGDQLDQDZHWSRPLPR
LFKXUXFKDPLDQLD]LQQ\PLGDQ\PL'ODWHJRWHĝ
]PLHQQHPRĝQDZ\NRU]\VWDÊGRSU]HGVWDZLHQLD
ZVNU\SWDFKW\FKZDUWRĂFLNWöUHXOHJDMÈ]PLDQLH
0öZLP\ZLÚFĝHZ\QLNEÚG]LHobliczony na podVWDZLHGDQ\FKSU]HFKRZ\ZDQ\FKZ]PLHQQ\FK
:\NRU]\VWDQLH]PLHQQ\FKGRSU]HGVWDZLHQLDOLF]E
OXELQQHJRURG]DMXGDQ\FKMHVWEDUG]RSRGREQH
GRNRQFHSFMLVWRVRZDQ\FKZDOJHEU]HJG]LHGR
SU]HGVWDZLHQLDOLF]EVïXĝÈOLWHU\-HGQDNLVWQLHMH
MHGQDNOXF]RZDUöĝQLFD=QDNUöZQRĂFLPD]XSHïQLHLQQH]QDF]HQLHZSURJUDPRZDQLXRF]\PVLÚ
SU]HNRQDV]QDGZöFKNROHMQ\FKVWURQDFK
PODSTAWOWE INSTRUKCJE JAVASCRIPT
65
ZMIENNE — JAK JE
DEKLAROWAĆ?
=DQLPEÚG]LHV]PöJïXĝ\Ê]PLHQQHMQDMSLHUZPXVLV]]JïRVLÊWDNÈFKÚÊ
7RR]QDF]DNRQLHF]QRĂÊXWZRU]HQLD]PLHQQHMLQDGDQLDMHMQD]Z\
3URJUDPLĂFLQD]\ZDMÈWRGHNODURZDQLHP zmiennej.
var quantity;
SŁOWO KLUCZOWE
OZNACZAJĄCE
ZMIENNĄ
varWRSU]\NïDGWHJRFR
SURJUDPLĂFLQD]\ZDMÈVïRZHP
NOXF]RZ\P. Interpreter
-DYD6FULSWZLHĝHWRVïRZR
MHVWXĝ\ZDQHGRXWZRU]HQLD
zmiennej.
66
NAZWA ZMIENNEJ
:FHOXXĝ\FLD]PLHQQHM
WU]HEDQDGDÊMHMQD]ZÚ
F]DVDPLRNUHĂODQÈPLDQHP
LGHQW\ğNDWRUD :RPDZLDQ\P
SU]\SDGNX]PLHQQDQRVLQD]ZÚ
quantity.
PODSTAWOWE INSTRUKCJE JAVASCRIPT
-HĝHOLQD]ZD]PLHQQHMWRZLÚFHM
QLĝW\ONRMHGQRVïRZRWRGRMHM
]DSLVDQLDQDMF]ÚĂFLHMVWRVXMH
VLÚVW\ORQD]ZLHFDPHO&DVH
2]QDF]DWRĝHSLHUZV]HVïRZR
UR]SRF]\QDVLÚPDïÈOLWHUÈ
DNDĝGHNROHMQHGXĝÈ
ZMIENNE — JAK PRZYPISYWAĆ
IM WARTOŚĆ?
3RXWZRU]HQLX]PLHQQHMPRĝQDRNUHĂOLÊMDNLHLQIRUPDFMHPDMÈE\Ê
ZQLHMSU]HFKRZ\ZDQH3URJUDPLĂFLPöZLÈZöZF]DV
o SU]\SLVDQLXZDUWRĂFL zmiennej.
OPERATOR PRZYPISANIA
quantity = 3;
NAZWA ZMIENNEJ
:W\PPRPHQFLHPRĝQD
]DVWRVRZDÊ]PLHQQÈSRSU]H]
Xĝ\FLHMHMQD]Z\:RPDZLDQ\PSU]\SDGNXXVWDZLOLĂP\
ZDUWRĂÊ]PLHQQHMRQD]ZLH
quantity. Kiedy istnieje taka
PRĝOLZRĂÊQD]ZD]PLHQQHM
SRZLQQDZVND]\ZDÊURG]DM
SU]HFKRZ\ZDQ\FKSU]H]QLÈ
GDQ\FK
WARTOŚĆ ZMIENNEJ
=QDNUöZQRĂFL = MHVWRSHUDtorem przypisania. Informuje
RQRSU]\SLVDQLXZDUWRĂFL
]PLHQQHM3RQDGWRMHVWXĝ\ZDQ\
GRXDNWXDOQLHQLDZDUWRĂFLGDQHM
]PLHQQHM SDWU]SRGUR]G]LDï
ķ=PLDQDZDUWRĂFL]PLHQQHMĵ 'RSöNL]PLHQQHMQLHMHVW
SU]\SLVDQDZDUWRĂÊRNUHĂODP\
ZDUWRĂÊ]PLHQQHMMDNRQLH]GHğQLRZDQÈ.
0LHMVFH]DGHNODURZDQLD]PLHQQHMPRĝHPLHÊZSï\ZQDWRZNWöU\FKIUDJPHQWDFKVNU\SWXPRĝQDXĝ\ZDÊ
WHM]PLHQQHM3URJUDPLĂFLPöZLÈZöZF]DVR]DVLÚJX]PLHQQHMFR]RVWDQLHRPöZLRQHZUR]G]LDOH
ZSRGUR]G]LDOHķ=DNUHV]PLHQQHMĵ
PODSTAWOWE INSTRUKCJE JAVASCRIPT
67
TYPY DANYCH
-DYD6FULSWUR]UöĝQLDOLF]E\FLÈJLWHNVWRZH
RUD]ZDUWRĂFLtrue i falseRNUHĂODQHPLDQHP
ZDUWRĂFLERRORZVNLFK
68
TYPY LICZBOWE
TYPY TEKSTOWE
TYPY BOOLOWSKIE
7\S\OLF]ERZHVÈSU]H]QDF]RQH
GRREVïXJLOLF]E
'DQHZSRVWDFLFLÈJöZ
WHNVWRZ\FKVNïDGDMÈVLÚ]OLWHU
RUD]LQQ\FK]QDNöZ
7\SERRORZVNLPRĝHSU]\MPRZDÊMHGQÈ]GZöFKZDUWRĂFL
true lub false.
0.75
’Witaj, Janku!’
true
:SU]\SDGNX]DGDñREHMPXMÈF\FKREOLF]HQLDEÚG]LHV]Xĝ\ZDï
F\IURGGR1DSU]\NïDG
OLF]EDSLÚÊW\VLÚF\GZLHĂFLH
VLHGHPG]LHVLÈWGZDMHVW
]DSLV\ZDQDZSRVWDFL
]ZUöÊXZDJÚQDEUDNVHSDUDWRUDW\VLÚF]QHJR 2F]\ZLĂFLH
PRĝQDUöZQLHĝXĝ\ZDÊOLF]E
XMHPQ\FK QDSU]\NïDG L]DZLHUDMÈF\FKF]ÚĂÊG]LHVLÚWQÈ
QDSU]\NïDGWU]\F]ZDUWH
]DSLVDQHZSRVWDFL =ZUöÊXZDJÚQDXMÚFLHFLÈJX
WHNVWRZHJRZDSRVWURI\7R
UöZQLHĝPRĝHE\ÊFXG]\VïöZ
DOHRWZLHUDMÈF\L]DP\NDMÈF\
]QDNF\WRZDQLDPXV]ÈE\ÊWDNLH
same.
%\ÊPRĝHQDUD]LHZ\GDMH
VLÚWRQLHFRDEVWUDNF\MQHDOH
ZU]HF]\ZLVWRĂFLW\SERRORZVNL
MHVWQLH]Z\NOHXĝ\WHF]Q\
/LF]E\VÈZ\NRU]\VW\ZDQH
QLHW\ONRZNDONXODWRUDFKDOH
UöZQLHĝZ]DGDQLDFKWDNLFK
MDNXVWDOHQLHZLHONRĂFLHNUDQX
SU]HVXQLÚFLHHOHPHQWXGR
ZVND]DQHMSR]\FMLQDVWURQLH
OXEXVWDZLHQLHLORĂFLF]DVX
ZWUDNFLHNWöUHJRHOHPHQWPD
]QLNQÈÊ
3R]DZ\PLHQLRQ\PLWU]HPDW\SDPLGDQ\FK-DYD6FULSWREVïXJXMH
WDNĝHLQQH WDEOLFHRELHNW\XQGHğQHG i null ĽSR]QDV]MH
ZGDOV]\FKUR]G]LDïDFK
&LÈJLWHNVWRZHVÈXĝ\ZDQH
podczas pracy z tekstem doZROQHJRURG]DMX%DUG]RF]ÚVWR
VÈZ\NRU]\VW\ZDQHZFHOX
GRGDZDQLDQRZHM]DZDUWRĂFLQD
VWURQLHPRJÈUöZQLHĝ]DZLHUDÊ
znaczniki HTML.
3RWUDNWXMJRMDNZïÈF]QLN
ĂZLDWïDĽ]QDMGXMHVLÚ
ZSR]\FMLķZïÈF]RQ\ĵOXE
ķZ\ïÈF]RQ\ĵ-DNVLÚSU]HNRQDV]
ZUR]G]LDOHW\SERRORZVNL
MHVWQLH]Z\NOHXĝ\WHF]Q\
SRGF]DVXVWDODQLDNWöUD
F]ÚĂÊVNU\SWXSRZLQQDE\Ê
XUXFKRPLRQD
,QDF]HMQLĝMHVWZLQQ\FKMÚ]\NDFKSURJUDPRZDQLDZMÚ]\NX
-DYD6FULSWSRGF]DVGHNODURZDQLD]PLHQQHMQLHPDNRQLHF]QRĂFL
ZVND]DQLDW\SXSU]HFKRZ\ZDQ\FKSU]H]QLÈGDQ\FK
PODSTAWOWE INSTRUKCJE JAVASCRIPT
UŻYCIE ZMIENNEJ
DO PRZECHOWYWANIA LICZBY
JAVASCRIPT
c02/js/numeric-variable.js
var price;
var quantity;
var total;
• zmienna priceSU]HFKRZXMH
FHQÚMHGQHMOLWHU\
• zmienna quantitySU]HFKR-
price = 5;
quantity = 14;
total = price * quantity;
•
var el = document.getElementById(’cost’);
HOWH[W&RQWHQW WRWDOij]ïij
HTML
:SU]HGVWDZLRQ\PSU]\NïDG]LH
XWZRU]RQRWU]\]PLHQQH
LSU]\SLVDQRLPZDUWRĂFL
c02/numeric-variable.html
<h1>(OGHUĠRZHU</h1>
<div id=”content”>
<h2>:ïDVQDWDEOLF]ND</h2>
<div id=”cost”>.RV]W]ï]DOLWHUÚ</div>
<img src=”images/preview.jpg”
DOW ĵ3U]\NïDGWDEOLF]NLĵ!
</div>
<script src=”js/numeric-variable.js”></script>
WYNIK
8ZDJD,VWQLHMHZLHOHVSRVREöZXPLHV]F]DQLD]DZDUWRĂFLQDVWURQLH
LZLHOHPLHMVFZNWöU\FKPRĝQDXPLHĂFLÊVNU\SW:DG\L]DOHW\
SRV]F]HJöOQ\FKWHFKQLNEÚGÈRPöZLRQHZUR]G]LDOHZSRGUR]G]LDOHķ3RUöZQDQLHWHFKQLNĽXDNWXDOQLHQLH]DZDUWRĂFL+70/ĵ
3U]HGVWDZLRQDWXWDMWHFKQLNDQLHG]LDïDZSU]HJOÈGDUFH,(
ZXMHOLF]EÚOLWHU]DPöZLRQ\FKSU]H]NOLHQWD
zmienna totalSU]HFKRZXMH
FDïNRZLW\NRV]W]DPöZLRQ\FK
liter.
=ZUöÊXZDJÚĝHOLF]E\QLHVÈ
XMPRZDQHZ]QDNLF\WRZDQLD
Gdy zmiennej zostanie przypiVDQDZDUWRĂÊQD]Z\]PLHQQHM
PRĝQDXĝ\ZDÊZFHOXSU]HGVWDZLHQLDWHMZDUWRĂFL SRGREQLH
MDNPDWRPLHMVFHZDOJHEU]H :RPDZLDQ\PSU]\NïDG]LH
NRV]WFDïNRZLW\MHVWREOLF]DQ\
SU]H]SRPQRĝHQLHFHQ\MHGQHM
OLWHU\SU]H]OLF]EÚOLWHU]DPöZLRQ\FKSU]H]Xĝ\WNRZQLND
8PLHV]F]HQLHPZ\QLNXQD
VWURQLH]DMPXMÈVLÚGZD
RVWDWQLHSROHFHQLD6]F]HJöïRZHRPöZLHQLHWHMWHFKQLNL
]QDMG]LHV]ZUR]G]LDOH
ZSRGUR]G]LDïDFKķ0HWRG\
Z\ELHUDMÈFHSRV]F]HJöOQH
HOHPHQW\ĵLķ8]\VNDQLHGRVWÚSX
i uaktualnienie tekstu za
SRPRFÈZïDĂFLZRĂFLWH[W&RQWHQW LLQQHU7H[W ĵ3LHUZV]H
]Z\PLHQLRQ\FKSROHFHñZ\V]XNXMHHOHPHQWNWöUHJRDWU\EXW
idPDZDUWRĂÊcost. Natomiast
GUXJLH]DVWÚSXMH]DZDUWRĂÊWHJR
HOHPHQWXQRZÈ
PODSTAWOWE INSTRUKCJE JAVASCRIPT
69
UŻYCIE ZMIENNEJ
DO PRZECHOWYWANIA
CIĄGU TEKSTOWEGO
3U]H]PRPHQWVNRQFHQWUXMHP\VLÚQD
SLHUZV]\FKF]WHUHFKZLHUV]DFKNRGX
-DYD6FULSW=DGHNODURZDQRZQLFKGZLH
]PLHQQH username i message SU]H]QDF]RQH
GRSU]HFKRZ\ZDQLDFLÈJöZWHNVWRZ\FK
QD]ZDXĝ\WNRZQLNDRUD]Z\ĂZLHWODQ\PX
NRPXQLNDW .RGRGSRZLHG]LDOQ\]DXDNWXDOQLHQLHVWURQ\
RVWDWQLHF]WHU\ZLHUV]H EÚG]LHZSHïQL
RPöZLRQ\ZUR]G]LDOH.RGWHQSRELHUD
GZDHOHPHQW\QDSRGVWDZLHZDUWRĂFLLFK
DWU\EXWöZid7HNVWZHOHPHQWDFKEÚG]LH
XDNWXDOQLRQ\ZDUWRĂFLDPLSU]HFKRZ\ZDQ\PL
Z]DGHNODURZDQ\FKZF]HĂQLHM]PLHQQ\FK
=ZUöÊXZDJÚQDVSRVöEXMÚFLDFLÈJX
WHNVWRZHJRZ]QDNLF\WRZDQLD0RJÈWRE\Ê
DSRVWURI\OXEFXG]\VïöZDOH]QDNLRWZLHUDMÈF\L]DP\NDMÈF\PXV]ÈE\ÊWDNLHVDPH
-HĝHOL]DF]QLHV]RGDSRVWURIXQDNRñFXWDNĝH
PXVLV]XPLHĂFLÊDSRVWURI7RVDPRGRW\F]\
FXG]\VïRZX
”witaj”
’witaj’
”witaj’
’witaj”
=QDNLF\WRZDQLDPXV]ÈE\Ê]Z\NïHQLH
GUXNDUVNLH
“ ”
’ ’
“”
‘’
&LÈJLWHNVWRZH]DZV]HPXV]ÈE\Ê]DSLVDQH
ZMHGQ\PZLHUV]X
ij=DSR]QDMVLÚ]QDV]\PDVRUW\PHQWHPij
ij=DSR]QDMVLÚ
z naszym nowym asortymentem’
70
PODSTAWOWE INSTRUKCJE JAVASCRIPT
c02/js/string-variable.js
JAVASCRIPT
var username;
var message;
username = ’Marta’;
PHVVDJH ij=DSR]QDMVLÚ]QDV]\PDVRUW\PHQWHPij
var elName = document.getElementById(’name’);
elName.textContent = username;
var elNote = document.getElementById(’note’);
elNote.textContent = message;
c02/string-variable.html
HTML
<h1>(OGHUĠRZHU</h1>
<div id=”content”>
<div id=”title”>Witaj,
<span id=”name”>przyjacielu</span>!</
div>
<div id=”note”>5R]HMU]\MVLÚ</div>
</div>
<script src=”js/string-variable.js”></
script>
WYNIK
UŻYCIE ZNAKÓW
CYTOWANIA W CIĄGU
TEKSTOWYM
JAVASCRIPT
c02/js/string-with-quotes.js
var title;
var message;
title = “Oferta specjalna w Molly’s”;
message = ’<a href=\”sale.html\”>Rabat 25%!</a>’;
var elTitle = document.getElementById(’title’);
elTitle.innerHTML = title;
var elNote = document.getElementById(’note’);
elNote.innerHTML = message;
HTML
c02/string-with-quotes.html
<h1>(OGHUĠRZHU</h1>
<div id=”content”>
<div id=”title”>Oferty specjalne</div>
<div id=”note”>=DSLV]VLÚDE\RWU]\P\ZDÊRIHUW\
przygotowane specjalnie dla Ciebie!</div>
</div>
<script src=”js/string-with-quotes.js”></script>
WYNIK
&]DVDPL]DFKRG]LSRWU]HEDXĝ\FLD
DSRVWURIXOXEFXG]\VïRZXZHZQÈWU]
FLÈJXWHNVWRZHJR
3RQLHZDĝFLÈJWHNVWRZ\PRĝHE\Ê
XMÚW\ZDSRVWURI\OXEFXG]\VïöZWR
MHĂOLFKFHV]ZW\PFLÈJXXĝ\Ê]QDNX
FXG]\VïRZXXMPLMFDï\FLÈJWHNVWRZ\
ZDSRVWURI\
3RGREQLHMHĂOLFKFHV]Xĝ\ÊDSRVWURIX
ZFLÈJXWHNVWRZ\PFDï\FLÈJ
WHNVWRZ\XMPLMZFXG]\VïöZMDN
SRND]DQRZWU]HFLPZLHUV]XRPDZLDQHJRSU]\NïDGX
,VWQLHMHUöZQLHĝWHFKQLNDSROHJDMÈFD
QDXĝ\FLXV\PEROLVSHFMDOQ\FK.
Polega ona na umieszczeniu XNRĂQLND
SU]HG]QDNLHPF\WRZDQLDZHZQÈWU]
FLÈJXWHNVWRZHJRMDNSRND]DQR
ZF]ZDUW\PZLHUV]XRPDZLDQHJR
SU]\NïDGX8NRĂQLNLQIRUPXMHLQWHUSUHWHUĝH]QDN]QDMGXMÈF\VLÚSRQLP
MHVWF]ÚĂFLÈFLÈJXWHNVWRZHJRDQLH
R]QDF]HQLHPMHJRNRñFD
7HFKQLNLSR]ZDODMÈFHQDXPLHV]F]DQLH
]DZDUWRĂFLQDVWURQLHLQWHUQHWRZHM
EÚGÈSU]HGVWDZLRQHZUR]G]LDOH
:RPDZLDQ\PSU]\NïDG]LHZ\NRU]\VWDOLĂP\ZïDĂFLZRĂÊRQD]ZLH
innerHTMLZFHOXGRGDQLDNRGX
+70/QDVWURQLH:SHZQ\FKV\WXDFMDFKXĝ\FLHZ\PLHQLRQHMZïDĂFLZRĂFL
PRĝHE\ÊU\]\NRZQHRF]\PGRZLHV]
VLÚZUR]G]LDOHZSRGUR]G]LDïDFK
ķ$WDNLW\SX;66ĵķ2FKURQDSU]HG
DWDNDPLW\SX;66ĵķ;66ĽZHU\ğNDFMDLV]DEORQ\ĵķ;66ĽXQLHV]NRGOLZLHQLHLNRQWUROD]QDF]QLNöZĵ
PODSTAWOWE INSTRUKCJE JAVASCRIPT
71
UŻYCIE ZMIENNEJ
DO PRZECHOWYWANIA
WARTOŚCI BOOLOWSKIEJ
:SUDZG]LH]PLHQQDERRORZVNDPRĝH
SU]HFKRZ\ZDÊMHG\QLHZDUWRĂFLtrue lub
falseDOHWHQW\SGDQ\FKMHVWEDUG]R
Xĝ\WHF]Q\
:SU]\NïDG]LHSRSUDZHMVWURQLHZDUWRĂFL
true i falseVÈXĝ\ZDQHZDWU\EXWDFK
classHOHPHQWöZ+70/:DUWRĂFLWH
SRZRGXMÈSU]\SLVDQLHUöĝQ\FKNODV&66
trueZ\ĂZLHWODķSWDV]NDĵQDWRPLDVWfalse
NU]\ĝ\N 6SRVREDPLXVWDZLDQLDDWU\EXWX
class]DMPLHP\VLÚZUR]G]LDOH 5]DGNR]GDU]DVLÚSRWU]HEDZ\ĂZLHWOHQLD
VïöZtrue lub false na stronie internetoZHMDOHRPDZLDQ\WXWDMW\SGDQ\FKPD
GZDSRSXODUQH]DVWRVRZDQLD
c02/js/boolean-variable.js
JAVASCRIPT
var inStock;
var shipping;
inStock = true;
shipping = false;
var elStock = document.
getElementById(’stock’);
elStock.className = inStock;
var elShip = document.
getElementById(’shipping’);
elShip.className = shipping;
c02/boolean-variable.html
3LHUZV]HW\SERRORZVNLMHVWVWRVRZDQ\
JG\ZDUWRĂFLÈPRĝHE\ÊW\ONRtrue lub
false7HZDUWRĂFLPRĝQDSRWUDNWRZDÊ
jako ZïÈF]RQ\ i Z\ïÈF]RQ\ lub 0 i 1true
RGSRZLDGDZïÈF]RQ\ lub 1, natomiast
falseRGSRZLDGDZ\ïÈF]RQ\ lub 0.
'UXJLHW\SERRORZVNLMHVWXĝ\ZDQ\NLHG\
NRGPRĝHPLHÊZLÚFHMQLĝW\ONRMHGQÈ
ĂFLHĝNÚG]LDïDQLD3DPLÚWDMĝHZ]DOHĝQRĂFLRGRNROLF]QRĂFLPRĝQDZ\NRQ\ZDÊ
LQQ\NRGMDN]RVWDïRWRSRND]DQHQD
GLDJUDPDFKZNVLÈĝFH
N
test został wykonany
T
¥FLHĝNDZ\NRQ\ZDQLDNRGX]DOHĝ\
RGZ\QLNXWHVWXOXEZDUXQNX
72
PODSTAWOWE INSTRUKCJE JAVASCRIPT
HTML
<h1>(OGHUĠRZHU</h1>
<div id=”content”>
<div class=”message”>'RVWÚSQ\
<span id=”stock”></span></div>
<div class=”message”>:\VïDQ\
<span id=”shipping”></span></div>
</div>
<script src=”js/boolean-variable.js”></
script>
WYNIK
SKRÓTY PODCZAS TWORZENIA
ZMIENNYCH
JAVASCRIPT
1
2
c02/js/shorthand-variable.js
var price = 5;
var quantity = 14;
var total = price * quantity;
var price, quantity, total;
price = 5;
quantity = 14;
total = price * quantity;
3
var price = 5, quantity = 14;
var total = price * quantity;
4
:\ĂZLHWOHQLHZDUWRĂFLFDïNRZLWHM
ZHOHPHQFLHNWöUHJRZDUWRĂÊDWU\EXWXLG
Z\QRVLFRVW var el = document.getElementById(’cost’);
HOWH[W&RQWHQW WRWDOij]ïij
WYNIK
3URJUDPLĂFLF]DVHPVWRVXMÈVNUöW\
SRGF]DVWZRU]HQLD]PLHQQ\FK3RQLĝHM
SU]HGVWDZLRQRWU]\VSRVRE\GHNODURZDQLD
]PLHQQ\FKLSU]\SLV\ZDQLDLPZDUWRĂFL
1. =DGHNODURZDQLH]PLHQQHMLSU]\SLVDQLH
MHMZDUWRĂFLRGE\ZDVLÚZW\PVDP\P
SROHFHQLX
2. 7U]\]PLHQQH]RVWDï\]DGHNODURZDQH
ZMHGQ\PZLHUV]X:NROHMQ\FKZLHUV]DFK
SU]\SLVDQRLPZDUWRĂFL
3. =DGHNODURZDQLHGZöFK]PLHQQ\FK
LSU]\SLVDQLHLPZDUWRĂFLQDVWÈSLïR
ZMHGQ\PZLHUV]X:GUXJLPZLHUV]XMHVW
]DGHNODURZDQDNROHMQD]PLHQQDNWöUHM
UöZQLHĝSU]\SLVDQRZDUWRĂÊ
:SU]\NïDG]LHWU]HFLPSRND]DQRGZLH
OLF]E\DOHZMHGQ\PZLHUV]XPRĝQD
]DGHNODURZDÊ]PLHQQHSU]HFKRZXMÈFH
GDQHLQQ\FKW\SöZQDSU]\NïDGFLÈJ
WHNVWRZ\LOLF]EÚ 4. 7XWDM]PLHQQD]RVWDïDZ\NRU]\VWDQD
ZFHOXSU]HFKRZ\ZDQLDRGQLHVLHQLDGR
HOHPHQWXQDVWURQLH+70/']LÚNLWHPX
PRĝQDSUDFRZDÊEH]SRĂUHGQLR]HOHPHQWHPSU]HFKRZ\ZDQ\PZWHM]PLHQQHM
:LÚFHMLQIRUPDFMLQDWHQWHPDW]QDMG]LHV]
ZUR]G]LDOHZSRGUR]G]LDOHķ%XIRURZDQLH]DS\WDñPRGHOX'ĵ :SUDZG]LHVNUöWPRĝH]DRV]F]ÚG]LÊ
SURJUDPLĂFLHQLHFRSLVDQLDDOHMHGQRF]HĂQLHXWUXGQLDRGF]\WNRGX-HĝHOLUR]SRF]\QDV]QDXNÚSURJUDPRZDQLDOHSV]\P
UR]ZLÈ]DQLHPEÚG]LHXPLHV]F]HQLHNRGX
ZZLÚNV]HMOLF]ELHZLHUV]\SRQLHZDĝ
ZöZF]DVMHVWïDWZLHMV]\GRRGF]\WX
L]UR]XPLHQLD
PODSTAWOWE INSTRUKCJE JAVASCRIPT
73
ZMIANA WARTOŚCI ZMIENNEJ
3RSU]\SLVDQLXZDUWRĂFL]PLHQQHMPRĝHV]
SöěQLHMZW\PVDP\PVNU\SFLH]PLHQLÊWÚ
ZDUWRĂÊ
c02/js/update-variable.js
3RXWZRU]HQLX]PLHQQHMQLHWU]HED
SRQRZQLHXĝ\ZDÊVïRZDNOXF]RZHJRvar,
DE\SU]\SLVDÊMHMQRZÈZDUWRĂÊ:\VWDUF]\
Xĝ\ÊQD]Z\]PLHQQHM]QDNXUöZQRĂFL
QD]\ZDQHJRWDNĝHRSHUDWRUHPSU]\SLVDQLD LQRZHMZDUWRĂFLGODGDQHM]PLHQQHM
inStock = true;
shipping = false;
1DSU]\NïDGSRF]ÈWNRZDZDUWRĂÊ]PLHQQHM
shippingPRĝHZ\QRVLÊfalse1DVWÚSQLH
QDVNXWHNSHZQHM]PLDQ\RND]XMHVLÚ
ĝHSURGXNWPRĝHE\ÊZ\VïDQ\'ODWHJR
WHĝZNRG]LHZDUWRĂÊ]PLHQQHMshipping
ulega zmianie na true.
inStock = false;
shipping = true;
:RPDZLDQ\PSU]\NïDG]LHZDUWRĂFLREX
]PLHQQ\FK]PLHQLDMÈVLÚQDSU]HFLZQH
JAVASCRIPT
var inStock;
var shipping;
:W\PPLHMVFXPRJÈE\ÊSU]HWZDU]DQHGDQH
6NXWNLHPSU]HWZDU]DQLDPRĝHE\ÊSRWU]HED
]PLDQ\ZDUWRĂFL]PLHQQ\FK var elStock = document.
getElementById(’stock’);
elStock.className = inStock;
var elShip = document.
getElementById(’shipping’);
elShip.className = shipping;
WYNIK
PODSTAWOWE INSTRUKCJE JAVASCRIPT
REGUŁY DOTYCZĄCE
NADAWANIA NAZW ZMIENNYM
3RQLĝHMSU]HGVWDZLRQRV]HĂÊUHJXïNWöU\FKQDOHĝ\SU]HVWU]HJDÊSRGF]DV
QDGDZDQLDQD]Z]PLHQQ\P
1
1D]ZDPXVLUR]SRF]\QDÊVLÚ
OLWHUÈ]QDNLHPGRODUD $ OXE
SRGNUHĂOHQLHP _ QDWRPLDVW
QLHPRĝHUR]SRF]\QDÊVLÚRG
cyfry.
2
3
1D]ZD]PLHQQHMPRĝH]DZLHUDÊ
]QDNGRODUD $ OXESRGNUHĂOHQLH
_ DOHQLHZROQRXĝ\ZDÊ
P\ĂOQLND - OXENURSNL . 1LHZROQRXĝ\ZDÊVïöZ
NOXF]RZ\FK lub ]DUH]HUZRZDnych6ïRZDNOXF]RZHWRVïRZD
VSHFMDOQHQDND]XMÈFHLQWHUSUHWHURZLZ\NRQ\ZDQLHRNUHĂORQ\FK]DGDñ1DSU]\NïDGVïRZR
NOXF]RZHvarMHVWXĝ\ZDQHGR
]DGHNODURZDQLD]PLHQQHM=NROHLVïRZD]DUH]HUZRZDQHPRJÈ
E\ÊZ\NRU]\VWDQHZSU]\V]ï\FK
ZHUVMDFK-DYD6FULSW
WIĘCEJ W SIECI
3HïQÈOLVWÚVïöZNOXF]RZ\FK
L]DUH]HUZRZDQ\FKZ-DYD6FULSWPRĝQD]QDOHěÊQDVWURQLH
SRĂZLÚFRQHMWHMNVLÈĝFH
5
6
:HZV]\VWNLFK]PLHQQ\FK
ZLHONRĂÊOLWHUPD]QDF]HQLH
'ODWHJRWHĝscore i Score to zuSHïQLHUöĝQHQD]Z\]PLHQQ\FK
=ïÈSUDNW\NÈMHVWWZRU]HQLH
GZöFK]PLHQQ\FKRWHMVDPHM
QD]ZLHDOHUöĝQLÈF\FKVLÚW\ONR
ZLHONRĂFLÈOLWHU
8ĝ\ZDMQD]Z\ZVND]XMÈFHMQD
URG]DMLQIRUPDFMLSU]HFKRZ\ZDQ\FKSU]H]GDQÈ]PLHQQÈ
1DSU]\NïDG]PLHQQDğUVW1DPH
PRĝHSU]HFKRZ\ZDÊLPLÚ
Xĝ\WNRZQLNDlastName jego
QD]ZLVNRQDWRPLDVWage jego
ZLHN
-HĝHOLQD]ZD]PLHQQHMVNïDGD
VLÚ]ZLÚFHMQLĝW\ONRMHGQHJR
VïRZDWRSRF]ÈZV]\RG
GUXJLHJRVïRZDSLHUZV]DOLWHUD
SRZLQQDE\ÊGXĝD1DSU]\NïDGQDGDM]PLHQQHMQD]ZÚ
ğUVW1DPH zamiast ğUVWQDPH.
7DNLVW\OQD]ZMHVWRNUHĂODQ\
mianem camelCase. Istnieje
UöZQLHĝPRĝOLZRĂÊUR]G]LHODQLD
VïöZ]QDNLHPSRGNUHĂOHQLD QLH
ZROQRXĝ\ZDÊP\ĂOQLNöZ PODSTAWOWE INSTRUKCJE JAVASCRIPT
75
TABLICE
Tablica to zmienna specjalnego typu.
1LHSU]HFKRZXMHW\ONRMHGQHMZDUWRĂFLDOHLFKOLVWÚ
8ĝ\FLHWDEOLF\QDOHĝ\UR]ZDĝ\Ê
podczas pracy z OLVWÈ lub
zbiorem SRZLÈ]DQ\FK]HVREÈ
ZDUWRĂFL
7DEOLFDMHVWV]F]HJöOQLH
Xĝ\WHF]QDJG\QLHZLDGRPR
LOHGRNïDGQLHHOHPHQWöZEÚG]LH
]QDMGRZDïRVLÚQDOLĂFLHSRQLHZDĝZWUDNFLHWZRU]HQLDWDEOLF\
MHV]F]HQLH]RVWDïDRNUHĂORQD
OLF]EDSU]HFKRZ\ZDQ\FKZQLHM
ZDUWRĂFL
7DEOLFDPRĝHE\ÊQDSU]\NïDG
SU]H]QDF]RQDGRSU]HFKRZ\ZDQLDSRV]F]HJöOQ\FKHOHPHQWöZ
listy rzeczy do kupienia,
SRQLHZDĝHOHPHQW\WHMOLVW\VÈ
]HVREÈSRZLÈ]DQH
Ponadto podczas
SU]\JRWRZ\ZDQLDQRZHMOLVW\
rzeczy do kupienia liczba
HOHPHQWöZQDSRV]F]HJöOQ\FK
OLVWDFKPRĝHE\ÊUöĝQD
-HĝHOLQLHZLHV]LOHHOHPHQWöZ
EÚG]LH]DZLHUDïDOLVWDWR]DPLDVWWZRU]\ÊZLHOH]PLHQQ\FK
GODGïXJLHMOLVW\ NLHG\LWDN
EÚG]LHPRĝQDZ\NRU]\VWDÊW\ONR
QLHZLHONÈLFKOLF]EÚ ]QDF]QLH
OHSLHMEÚG]LHXĝ\ÊWDEOLF\
76
PODSTAWOWE INSTRUKCJE JAVASCRIPT
Jak zobaczysz na kolejnej
VWURQLHZDUWRĂFLZWDEOLF\VÈ
rozdzielane przecinkami.
:UR]G]LDOHGRZLHV]VLÚ
ĝHWDEOLFHPRJÈE\ÊQLH]Z\NOH
Xĝ\WHF]QHSRGF]DVSU]HGVWDZLDQLDVNRPSOLNRZDQ\FKGDQ\FK
TWORZENIE TABLICY
JAVASCRIPT
c02/js/array-literal.js
var colors;
FRORUV >ijELDï\ijijF]DUQ\ijijLQQ\ij@
var el = document.getElementById(’colors’);
el.textContent = colors[0];
WYNIK
7DEOLFÚWZRU]\V]LQDGDMHV]MHMQD]ZÚ
SRGREQLHMDNZSU]\SDGNXNDĝGHMLQQHM
]PLHQQHMF]\OL]Z\NRU]\VWDQLHPVïRZD
NOXF]RZHJRvarLQD]Z\WDEOLF\
:DUWRĂFLSU]H]QDF]RQHGRZVWDZLHQLD
ZWDEOLF\VÈSRGDZDQHZQDZLDVLH
NZDGUDWRZ\PLUR]G]LHORQHSU]HFLQNDPL
:DUWRĂFLZWDEOLF\QLHPXV]ÈE\ÊWHJR
VDPHJRW\SXGDQ\FKDZLÚFZWHMVDPHM
WDEOLF\PRĝQDSU]HFKRZ\ZDÊFLÈJL
WHNVWRZHOLF]E\LZDUWRĂFLERRORZVNLH
7DNDWHFKQLNDWZRU]HQLDWDEOLF\MHVWRNUHĂODQDPLDQHPOLWHUDïXWDEOLF\. To preferoZDQDPHWRGDWZRU]HQLDWDEOLF\,VWQLHMH
PRĝOLZRĂÊXPLHV]F]HQLDSRV]F]HJöOQ\FK
ZDUWRĂFLZRGG]LHOQ\FKZLHUV]DFK
FRORUV >ijELDï\ij
’czarny’,
’inny’];
JAVASCRIPT
c02/js/array-constructor.js
YDUFRORUV QHZ$UUD\ ijELDï\ij
’czarny’,
’inny’);
var el = document.getElementById(’colors’);
el.innerHTML = colors.item(0);
3ROHZHMVWURQLHSRND]DQRSU]\NïDG
XWZRU]HQLDWDEOLF\]Z\NRU]\VWDQLHP
LQQHMWHFKQLNLQD]\ZDQHMNRQVWUXNWRUHP
WDEOLF\:NRG]LH]QDMGXMHVLÚVïRZR
NOXF]RZHnewZUD]]Array();:DUWRĂFL
VÈSRGDQHZQDZLDVLH]Z\Nï\P QLH
NZDGUDWRZ\P LUR]G]LHORQHSU]HFLQNDPL
'RSREUDQLDGDQ\FK]WDEOLF\PRĝQDXĝ\Ê
PHWRG\RQD]ZLHitem(). Numer indeksu
HOHPHQWXMHVWSRGDZDQ\ZQDZLDVLH
3RGF]DVWZRU]HQLDWDEOLF\]DVWRVRZDQLHOLWHUDïXWDEOLF\
SU]HGVWDZLRQHMZSLHUZV]\PIUDJPHQFLHNRGX MHVW
SUHIHURZDQH]DPLDVWXĝ\FLDNRQVWUXNWRUDWDEOLF\
PODSTAWOWE INSTRUKCJE JAVASCRIPT
77
WARTOŚCI W TABLICY
:DUWRĂFLZWDEOLF\VÈGRVWÚSQHWDNMDNE\WZRU]\ï\
SRQXPHURZDQÈOLVWÚ7U]HEDNRQLHF]QLHSDPLÚWDÊ
ĝHQXPHU\WHMOLVW\]DF]\QDMÈVLÚRG]HUDDQLHRGMHG\QNL
NUMEROWANIE
ELEMENTÓW TABLICY
UZYSKANIE DOSTĘPU
DO ELEMENTÓW TABLICY
LICZBA ELEMENTÓW
W TABLICY
.DĝG\HOHPHQWWDEOLF\PD
DXWRPDW\F]QLHQDGDQÈOLF]EÚ
QD]\ZDQÈindeksem. Za
SRĂUHGQLFWZHPLQGHNVXPRĝQD
X]\VNDÊGRVWÚSGRZVND]DQHJR
HOHPHQWXWDEOLF\5R]ZDĝ
SRQLĝV]ÈWDEOLFÚSU]HFKRZXMÈFÈ
WU]\NRORU\
$E\SREUDÊWU]HFLHOHPHQW
]OLVW\SRGDMQD]ZÚWDEOLF\
RUD]QXPHULQGHNVXZQDZLDVLH
NZDGUDWRZ\P
.DĝGDWDEOLFDSRVLDGDZïDĂFLZRĂÊRQD]ZLHlengthSU]HFKRZXMÈFÈOLF]EÚHOHPHQWöZNWöUH
]QDMGXMÈVLÚZGDQHMWDEOLF\
3RQLĝHMSU]HGVWDZLRQR
GHNODUDFMÚ]PLHQQHMRQD]ZLH
itemThree. Tej zmiennej
]RVWDQLHSU]\SLVDQDZDUWRĂÊ
trzeciego koloru z tablicy
colors.
3RQLĝHMSU]HGVWDZLRQR
GHNODUDFMÚ]PLHQQHMRQD]ZLH
numColors. Tej zmiennej
]RVWDQLHSU]\SLVDQDZDUWRĂÊ
ZSRVWDFLOLF]E\HOHPHQWöZ
]QDMGXMÈF\FKVLÚZWDEOLF\
var itemThree;
itemThree = colors[2];
3RQD]ZLHWDEOLF\PDP\NURSNÚ
DQDVWÚSQLHVïRZRNOXF]RZH
length.
var colors;
FRORUV >ijELDï\ij
’czarny’,
’inny’];
'H]RULHQWXMÈFHPRĝHE\ÊWR
ĝHQXPHU\LQGHNVöZ]DF]\QDMÈ
VLÚRG0 QLHRG1 :SRQLĝV]HM
WDEHOLSU]HGVWDZLRQRHOHPHQW\
WDEOLF\LRGSRZLDGDMÈFHLP
ZDUWRĂFLLQGHNVöZ
Indeks
:DUWRĂÊ
0
ijELDï\ij
1
’czarny’
2
’inny’
var numColors;
numColors = colors.length;
:NVLÈĝFH ]ZïDV]F]DZUR]G]LDOH SR]QDV]]QDF]QLH
ZLÚFHMIXQNFMLWDEOLFNWöUH
VÈZ-DYD6FULSWNRQVWUXNFMÈ
HODVW\F]QÈLRIHUXMÈFÈEDUG]R
GXĝHPRĝOLZRĂFL
78
PODSTAWOWE INSTRUKCJE JAVASCRIPT
UZYSKANIE DOSTĘPU I ZMIANA
WARTOŚCI W TABLICY
JAVASCRIPT
c02/js/update-array.js
8WZRU]HQLHWDEOLF\
YDUFRORUV >ijELDï\ij
’czarny’,
’inny’];
3LHUZV]\ZLHUV]NRGXNWöU\SU]HGVWDZLRQR
SROHZHMVWURQLHSRZRGXMHXWZRU]HQLH
WDEOLF\]DZLHUDMÈFHMOLVWÚWU]HFKNRORUöZ
:DUWRĂFLPRJÈE\ÊGRGDQHZW\PVDP\P
ZLHUV]XOXEZRGG]LHOQ\FKMDNZRPDZLDQ\PSU]\NïDG]LH 8DNWXDOQLHQLHWU]HFLHJRHOHPHQWXWDEOLF\
FRORUV>@ ijEHĝRZ\ij
*G\WDEOLFDMHVWXWZRU]RQDMHMWU]HFL
element zostaje zmieniony z ’inny’
na ijEHĝRZ\ij.
3REUDQLHHOHPHQWXNWöUHJRZDUWRĂFLÈ
DWU\EXWXLGMHVWFRORUV
var el = document.getElementById(’colors’);
$E\X]\VNDÊGRVWÚSGRZDUWRĂFLZWDEOLF\
SRQD]ZLHWDEOLF\QDOHĝ\SRGDÊQXPHU
LQGHNVXXMÚW\ZQDZLDVNZDGUDWRZ\
=DVWÈSLHQLHWU]HFLHJRHOHPHQWXWDEOLF\
el.textContent = colors[2];
:DUWRĂÊHOHPHQWXWDEOLF\PRĝQD
]PLHQLÊSU]H]MHJRZ\EöUDQDVWÚSQLH
SU]\SLVDQLHPXQRZHMZDUWRĂFLSRGREQLH
MDNZSU]\SDGNXNDĝGHMLQQHM]PLHQQHM
3RGF]DV]PLDQ\ZDUWRĂFLXĝ\ZDVLÚ]QDNX
UöZQRĂFLSRNWöU\PXPLHV]F]DVLÚQRZÈ
ZDUWRĂÊGODGDQHJRHOHPHQWX WYNIK
:GZöFKRVWDWQLFKSROHFHQLDFKQRZR
uaktualniony trzeci element tablicy zostaje
dodany na stronie.
-HĝHOLFKFHV]Z\ĂZLHWOLÊZV]\VWNLH
HOHPHQW\]WDEOLF\WRQDOHĝ\Xĝ\ÊSÚWOL
FR]RVWDQLHRPöZLRQHZUR]G]LDOH
ZSRGUR]G]LDOHķ3ÚWOHĵ
PODSTAWOWE INSTRUKCJE JAVASCRIPT
79
WYRAŻENIA
Obliczenie Z\UDĝHQLDVNXWNXMHRWU]\PDQLHPMHGQHMZDUWRĂFL
2JöOQLHU]HF]ELRUÈFPDP\GZDURG]DMHZ\UDĝHñ
1
WYRAŻENIE, KTÓRE PO PROSTU
PRZYPISUJE WARTOŚĆ ZMIENNEJ
$E\]PLHQQDE\ïDXĝ\WHF]QDQDOHĝ\SU]\SLVDÊ
MHMZDUWRĂÊ-DN]GÈĝ\ïHĂMXĝ]REDF]\ÊRGE\ZD
VLÚWR]Z\NRU]\VWDQLHPRSHUDWRUDSU]\SLVDQLD
]QDNXUöZQRĂFL 2
WYRAŻENIE WYKORZYSTUJĄCE
CO NAJMNIEJ DWIE WARTOŚCI
DO ZWRÓCENIA JEDNEJ WARTOŚCI
,VWQLHMHPRĝOLZRĂÊSU]HSURZDG]HQLDRSHUDFML
QDGRZROQHMOLF]ELHSRV]F]HJöOQ\FKZDUWRĂFL
]REDF]QDQDVWÚSQHMVWURQLH ZFHOXXVWDOHQLD
MHGQHMZDUWRĂFL1DSU]\NïDG
YDUFRORU ijEHĝRZ\ij
YDUDUHD :DUWRĂFLÈ]PLHQQHMcolor jest teraz EHĝRZ\.
:DUWRĂFLÈ]PLHQQHMarea jest teraz 6.
.LHG\SRUD]SLHUZV]\GHNODUXMHV]]PLHQQÈ
]DSRPRFÈVïRZDNOXF]RZHJRvar, nadajesz jej
ZDUWRĂÊVSHFMDOQÈXQGHğQHG. To ulegnie zmianie
SRSU]\SLVDQLX]PLHQQHMLQQHMZDUWRĂFL3RG
Z]JOÚGHPWHFKQLF]Q\PXQGHğQHG to typ taki jak
OLF]EDFLÈJWHNVWRZ\OXEZDUWRĂÊERRORZVND
3U]HGVWDZLRQHWXWDMZ\UDĝHQLH3 * 2 daje
ZZ\QLNXZDUWRĂÊ6:SU]\NïDG]LHXĝ\WRWDNĝH
RSHUDWRUDSU]\SLVDQLDDZLÚFREOLF]RQ\Z\QLN
Z\UDĝHQLD3 * 2MHVWSU]HFKRZ\ZDQ\Z]PLHQQHM
RQD]ZLHarea.
,QQ\SU]\NïDGZ\UDĝHQLDXĝ\ZDMÈFHJRGZöFK
ZDUWRĂFLGRRNUHĂOHQLDMHGQHMWRSRïÈF]HQLHGZöFK
FLÈJöZWHNVWRZ\FKZMHGHQFLÈJ
80
PODSTAWOWE INSTRUKCJE JAVASCRIPT
OPERATORY
']LDïDQLHZ\UDĝHñRSLHUDVLÚQDWDN]ZDQ\FKRSHUDWRUDFK,
NWöUHSR]ZDODMÈSURJUDPLVWRPQDWZRU]HQLHSRMHG\QF]\FKZDUWRĂFL
QDSRGVWDZLHFRQDMPQLHMMHGQHMZDUWRĂFLZ\MĂFLRZHM
:W\PUR]G]LDOH]RVWDï\
RPöZLRQHRSHUDWRU\
:UR]G]LDOH]RVWDQÈ
RPöZLRQHRSHUDWRU\
PRZYPISANIA
PORÓWNANIA
2SHUDWRU\SU]\SLVDQLDSU]\SLVXMÈZDUWRĂÊ
]PLHQQHM
2SHUDWRU\SRUöZQDQLDSRUöZQXMÈZDUWRĂFL
]PLHQQ\FKL]ZUDFDMÈtrueEÈGěfalse
FRORU ijEHĝRZ\ij
EX\ !
:DUWRĂFLÈ]PLHQQHMcolor jest teraz EHĝRZ\.
3DWU]SRGUR]G]LDïķ=PLHQQHĽMDNSU]\SLV\ZDÊ
LPZDUWRĂÊ"ĵ :DUWRĂFLÈ]PLHQQHMbuy jest teraz false.
3DWU]UR]G]LDïSRGUR]G]LDïķ2SHUDWRU\
SRUöZQDQLDĽRFHQDZDUXQNöZĵ ARYTMETYCZNE
LOGICZNE
2SHUDWRU\DU\WPHW\F]QHSU]HSURZDG]DMÈSRGVWDZRZHRSHUDFMHPDWHPDW\F]QH
3RUöZQXMÈZ\UDĝHQLDL]ZUDFDMÈtrue lub false
DUHD EX\ ! :DUWRĂFLÈ]PLHQQHMarea jest teraz 6.
3DWU]SRGUR]G]LDïķ2SHUDWRU\DU\WPHW\F]QHĵ :DUWRĂFLÈ]PLHQQHMbuy jest teraz true.
3DWU]UR]G]LDïSRGUR]G]LDïķ2SHUDWRU\
ORJLF]QHĵ CIĄGÓW TEKSTOWYCH
2SHUDWRU\WHSR]ZDODMÈQDSRïÈF]HQLHGZöFK
FLÈJöZWHNVWRZ\FK
JUHHWLQJ ij:LWDMijij-DQHNij
:DUWRĂFLÈ]PLHQQHMgreeting jest teraz
Witaj, Janek.
3DWU]SRGUR]G]LDïķ2SHUDWRU\FLÈJöZWHNVWRZ\FKĵ PODSTAWOWE INSTRUKCJE JAVASCRIPT
81
OPERATORY ARYTMETYCZNE
-DYD6FULSWREVïXJXMHZ\PLHQLRQHSRQLĝHMRSHUDWRU\PDWHPDW\F]QH
NWöUHPRĝQDVWRVRZDÊZSRïÈF]HQLX]OLF]EDPL0RĝHV]MHSDPLÚWDÊ
z lekcji matematyki.
NAZWA
DODAWANIE
ODEJMOWANIE
DZIELENIE
012¿(1,(
INKREMENTACJA
DEKREMENTACJA
MODULO
OPERATOR
OPIS
35=<.’$'
WYNIK
'RGDQLHMHGQHMZDUWRĂFLGRGUXJLHM
10 + 5
15
2GMÚFLHMHGQHMZDUWRĂFLRGGUXJLHM
10 - 5
5
3RG]LHOHQLHGZöFKZDUWRĂFL
10 / 5
2
*
3RPQRĝHQLHGZöFKZDUWRĂFLĽ
Z\NRU]\VWDQLHJZLD]GNL ]ZUöÊ
XZDJÚĝHWRQLHMHVWOLWHUDx
10 * 5
50
++
'RGDQLHZDUWRĂFL1GRELHĝÈFHM
ŘŘ
2GMÚFLHZDUWRĂFL1RGELHĝÈFHM
+
Ř
/
%
i = 10;
11
i++;
i = 10;
9
i--;
3RG]LHOHQLHGZöFKZDUWRĂFLL]ZURW
reszty z dzielenia
10 % 3
1
KOLEJNOŚĆ
WYKONYWANIA
:MHGQ\PZ\UDĝHQLXPRĝH
]QDMGRZDÊVLÚZLHOHRSHUDWRUöZ
DU\WPHW\F]Q\FKLGODWHJRZDĝQH
MHVW]UR]XPLHQLHMDNEÚG]LH
REOLF]RQ\Z\QLN0QRĝHQLH
LG]LHOHQLHVÈSU]HSURZDG]DQH
SU]HGGRGDZDQLHPLRGHMPRZDQLHP.ROHMQRĂÊRSHUDFML
ZSï\ZDZLÚFQDZ\QLNNWöU\
VSRG]LHZDV]VLÚRWU]\PDÊ$E\
WR]LOXVWURZDÊVSöMU]QDSU]HGVWDZLRQHSRQLĝHMSU]\NïDG\
82
2WRRSHUDFMHSU]HSURZDG]DQH
RGOHZHMGRSUDZHMVWURQ\
Z\QLNZ\QRVL16
total = 2 + 4 + 10;
-HGQDNZ\QLNLHPSRQLĝV]HJR
Z\UDĝHQLDMHVW42, a nie 60
total = 2 + 4 * 10;
:\QLNDWR]IDNWXĝHPQRĝHQLH
LG]LHOHQLHMHVWSU]HSURZDG]DQH
SU]HGGRGDZDQLHPLRGHMPRZDQLHP
PODSTAWOWE INSTRUKCJE JAVASCRIPT
$E\]PLHQLÊNROHMQRĂÊ
SU]HSURZDG]DQLDRSHUDFMLWH
NWöUHPDMÈE\ÊZ\NRQDQHMDNR
SLHUZV]HXPLHĂÊZQDZLDVLH
:\QLNLHPSRQLĝV]HJRZ\UDĝHQLD
jest 60
total = (2 + 4) * 10;
1DZLDVZVND]XMHGRGDQLHOLF]E\
2 do 4DQDVWÚSQLHSRPQRĝHQLH
Z\QLNXSU]H]10.
UŻYCIE OPERATORÓW
ARYTMETYCZNYCH
JAVASCRIPT
c02/js/arithmetic-operator.js
var subtotal = (13 + 1) * 5;
:DUWRĂÊ]PLHQQHMVXEWRWDOZ\QRVL
var shipping = 0.5 * (13 + 1);
:DUWRĂÊ]PLHQQHMVKLSSLQJZ\QRVL
var total = subtotal + shipping;
:DUWRĂÊ]PLHQQHMWRWDOZ\QRVL
:SU]\NïDG]LHSRND]DQRXĝ\FLHRSHUDWRUöZ
PDWHPDW\F]Q\FKZUD]]OLF]EDPLZFHOX
REOLF]HQLDZDUWRĂFLGZöFKNRV]WöZ
:SLHUZV]\FKGZöFKZLHUV]DFKNRGX
QDVWÚSXMHXWZRU]HQLHGZöFK]PLHQQ\FK
3LHUZV]DSU]HFKRZXMHZDUWRĂÊF]ÚĂFLRZÈ
]DPöZLHQLDQDWRPLDVWGUXJDNRV]W
Z\V\ïNL]DPöZLHQLD2ELH]PLHQQHPDMÈ
RGSRZLHGQLHQD]Z\subtotal i shipping.
var elSub = document.
getElementById(’subtotal’);
elSub.textContent = subtotal;
:ZLHUV]XWU]HFLPREOLF]DQDMHVWZDUWRĂÊ
FDïNRZLWD]DPöZLHQLDNWöUDMHVWVXPÈ
REOLF]RQ\FKZF]HĂQLHMGZöFKZDUWRĂFL
var elShip = document.
getElementById(’shipping’);
elShip.textContent = shipping;
:WHQVSRVöESRND]DQRMDNRSHUDWRU\PDWHPDW\F]QHXĝ\ZDMÈ]PLHQQ\FKSU]HGVWDZLDMÈF\FKOLF]E\ 2]QDF]DWRĝHOLF]E\QLH
PXV]ÈE\ÊZ\UDěQLHSRGDZDQHZNRG]LH var elTotal = document.
getElementById(’total’);
elTotal.textContent = total;
3R]RVWDïHV]HĂÊZLHUV]\RGSRZLDGD
]DZ\ĂZLHWOHQLHREOLF]RQ\FKZDUWRĂFL
na ekranie.
WYNIK
PODSTAWOWE INSTRUKCJE JAVASCRIPT
83
OPERATOR
CIĄGU TEKSTOWEGO
0DP\W\ONRMHGHQRSHUDWRUFLÈJXWHNVWRZHJR]QDN+.
7HQRSHUDWRUMHVWSU]H]QDF]RQ\GRïÈF]HQLDFLÈJöZWHNVWRZ\FK
]QDMGXMÈF\FKVLÚSRREXVWURQDFKRSHUDWRUD
,VWQLHMHZLHOHV\WXDFMLZNWöU\FKPRĝHZ\VWÈSLÊSRWU]HED
SRïÈF]HQLDFRQDMPQLHMGZöFK
FLÈJöZWHNVWRZ\FKZMHGQÈ
ZDUWRĂÊ7HQSURFHV]ïÈF]DQLD
ZLHOXFLÈJöZWHNVWRZ\FK
SURJUDPLĂFLQD]\ZDMÈNRQNDWHQDFMÈ.
1DSU]\NïDGLPLÚLQD]ZLVNRPRJÈ]QDMGRZDÊVLÚZGZöFK
RGG]LHOQ\FK]PLHQQ\FK']LÚNLSRïÈF]HQLXLFKZDUWRĂFLPRĝQD
Z\ĂZLHWOLÊLPLÚLQD]ZLVNRXĝ\WNRZQLND:SRQLĝV]\PSU]\NïDG]LH
]PLHQQDRQD]ZLHfullNameEÚG]LHSU]HFKRZ\ZDïDFLÈJWHNVWRZ\
’Jan Kowalski’.
YDUğUVW1DPH ij-DQij
var lastName = ’Kowalski’;
YDUIXOO1DPH ğUVW1DPHODVW1DPH
ŁĄCZENIE LICZB I CIĄGÓW TEKSTOWYCH
3RXMÚFLXOLF]E\Z]QDNL
F\WRZDQLDVWDMHVLÚRQDFLÈJLHP
WHNVWRZ\P DQLHOLF]ERZ\P
W\SHPGDQ\FK 1DFLÈJDFK
WHNVWRZ\FKQLHPRĝQDSU]HSURZDG]DÊRSHUDFMLGRGDZDQLD
-HĝHOLVSUöEXMHV]GRGDÊZDUWRĂÊ
OLF]ERZÈGRFLÈJXWHNVWRZHJR
WROLF]EDVWDQLHVLÚF]ÚĂFLÈ
FLÈJXWHNVWRZHJR3U]\NïDGHP
PRĝHE\ÊGRGDQLHQXPHUX
EXG\QNXGRQD]Z\XOLF\
-HĝHOLVSUöEXMHV]SU]HSURZDG]LÊ
inne operacje arytmetyczne
QDFLÈJDFKWHNVWRZ\FKWR
Z\QLNLHPQDMF]ÚĂFLHMEÚG]LH
ZDUWRĂÊRQD]ZLHNaN. Oznacza
RQDĝHZ\QLNQLHMHVWOLF]EÈ
DQJQRWDQXPEHU var cost1 = ’7’;
var cost2 = ’9’;
var total = cost1 + cost2;
var number = 12;
var street = ’Nowa’;
var add = street + number;
var score = ’siedem’;
YDUVFRUH ijG]LHZLÚÊij
var total = score * score2;
:\QLNLHPZSRZ\ĝV]\P
IUDJPHQFLHNRGXMHVWFLÈJ
WHNVWRZ\’79’.
:\QLNLHPZSRZ\ĝV]\PIUDJPHQFLHNRGXMHVWFLÈJWHNVWRZ\
’Nowa 12’.
:\QLNLHPZSRZ\ĝV]\P
IUDJPHQFLHNRGXMHVWZDUWRĂÊ
NaN.
PODSTAWOWE INSTRUKCJE JAVASCRIPT
UŻYCIE OPERATORÓW
CIĄGU TEKSTOWEGO
JAVASCRIPT
c02/js/string-operator.js
var greeting = ’Witaj, ’;
var name = ’Janku’;
var welcomeMessage = greeting + name + ’!’;
var el = document.
getElementById(’greeting’);
el.textContent = welcomeMessage;
HTML
:SLHUZV]\PZLHUV]XNRGXWZRU]RQD
jest zmienna greetingSU]HFKRZXMÈFD
NRPXQLNDWZ\ĂZLHWODQ\Xĝ\WNRZQLNRZL
7XWDMMHVWWRVïRZRWitaj,.
:ZLHUV]XGUXJLPWZRU]RQDMHVW]PLHQQD
SU]HFKRZXMÈFDLPLÚXĝ\WNRZQLND
7D]PLHQQDQRVLQD]ZÚnameDMHMZDUWRĂFLÈZRPDZLDQ\PSU]\NïDG]LHMHVWJanku.
c02/string-operator.html
<h1>(OGHUĠRZHU</h1>
<div id=”content”>
<div id=”greeting” class=”message”>Witaj,
<span id=”name”>przyjacielu</span>!
</div>
</div>
<script src=”js/string-operator.js”></
script>
WYNIK
3U]HGVWDZLRQ\SU]\NïDGSRZRGXMHZ\ĂZLHWOHQLHVSHUVRQDOL]RZDQHJRSRZLWDQLD
na stronie.
6SHUVRQDOL]RZDQ\NRPXQLNDWSRZLWDQLD
MHVWWZRU]RQ\SU]H]NRQNDWHQDFMÚ
LQDF]HM]ïÈF]HQLH GZöFKZ\PLHQLRQ\FK
]PLHQQ\FKRUD]GRGDQLHQDNRñFX
]QDNXZ\NU]\NQLND&DïRĂÊMHVWSU]HFKRZ\ZDQDZQRZHM]PLHQQHMRQD]ZLH
welcomeMessage.
3RZUöÊMHV]F]HQDFKZLOÚGR]PLHQQHM
greetingXWZRU]RQHMZZLHUV]XSLHUZV]\PL]ZUöÊXZDJÚQDVSDFMÚSRVïRZLH
Witaj,-HĝHOLSRPLQLHV]WÚVSDFMÚ
ZDUWRĂFLÈ]PLHQQHMwelcomeMessage
EÚG]LH”Witaj,Janku!”.
PODSTAWOWE INSTRUKCJE JAVASCRIPT
85
86
PODSTAWOWE INSTRUKCJE JAVASCRIPT
PRZYKŁAD
PODSTAWOWE INSTRUKCJE
JAVASCRIPT
:W\PSU]\NïDG]LHZ\NRU]\VWDQRZLHOHWHFKQLN
RPöZLRQ\FKZUR]G]LDOH
.RGěUöGïRZ\SU]\NïDGX]RVWDï]DPLHV]F]RQ\QDGZöFKNROHMQ\FK
VWURQDFK'RRSLVDQLDSRV]F]HJöOQ\FKVHNFMLNRGXXĝ\WRNRPHQWDU]\
MHGQRZLHUV]RZ\FK
1DSRF]ÈWNXWZRU]RQHVÈWU]\]PLHQQHSU]H]QDF]RQHGRSU]HFKRZ\ZDQLDLQIRUPDFMLZ\NRU]\VW\ZDQ\FKZNRPXQLNDFLHSRZLWDQLD
7H]PLHQQHVÈQDVWÚSQLHïÈF]RQHZFHOXSU]\JRWRZDQLDSHïQHMWUHĂFL
NRPXQLNDWXZ\ĂZLHWODQHJRXĝ\WNRZQLNRZL
.ROHMQDF]ÚĂÊSU]\NïDGXSRND]XMHVSRVöEZ\NRQ\ZDQLDSRGVWDZRZ\FKRSHUDFMLPDWHPDW\F]Q\FKQDOLF]EDFKDE\REOLF]\ÊNRV]W
tabliczki.
=PLHQQDRQD]ZLHsignSU]HFKRZXMHWHNVWNWöU\EÚG]LHXPLHV]czony na tabliczce.
:ïDĂFLZRĂÊRQD]ZLHlengthMHVWXĝ\ZDQDZFHOXXVWDOHQLD
OLF]E\]QDNöZ]QDMGXMÈF\FKVLÚZFLÈJXWHNVWRZ\P ZLÚFHMRWHM
ZïDĂFLZRĂFL]QDMG]LHV]ZUR]G]LDOHZSRGUR]G]LDOHķ2ELHNWRZ\
PRGHOGRNXPHQWXĵ &]ÚĂFLRZ\NRV]WWDEOLF]NLMHVWREOLF]DQ\SU]H]SRPQRĝHQLHOLF]E\
]QDNöZSU]H]NRV]WMHGQHJR]QDNX
&DïNRZLW\NRV]W]DPöZLHQLDMHVWREOLF]DQ\SU]H]GRGDQLHNRV]WX
Z\V\ïNL ]ï GRNRV]WXF]ÚĂFLRZHJR
•
•
•
•
1DNRñFXLQIRUPDFMHVÈZ\ĂZLHWODQHQDVWURQLH2GE\ZDVLÚWRSU]H]
Z\EöUHOHPHQWöZDQDVWÚSQLH]DVWÈSLHQLHLFK]DZDUWRĂFL]Z\NRU]\VWDQLHPWHFKQLNLGRNïDGQLHRPöZLRQHMZUR]G]LDOH:WHFKQLFHWHM
HOHPHQWQDVWURQLH+70/MHVWZ\ELHUDQ\QDSRGVWDZLHZDUWRĂFLMHJR
atrybutu idDQDVWÚSQLHNRGXDNWXDOQLD]DZDUWRĂÊWHJRHOHPHQWX
3RSU]HDQDOL]RZDQLXSU]\NïDGXSRZLQLHQHĂPLHÊVROLGQÈZLHG]Ú
GRW\F]ÈFÈSU]HFKRZ\ZDQLDGDQ\FKZ]PLHQQ\FKRUD]SU]HSURZDG]DQLDSRGVWDZRZ\FKRSHUDFMLQDGDQ\FK]QDMGXMÈF\FKVLÚZW\FK
]PLHQQ\FK
PODSTAWOWE INSTRUKCJE JAVASCRIPT
87
PRZYKŁAD
PODSTAWOWE INSTRUKCJE JAVASCRIPT
c02/example.html
HTML
<!DOCTYPE html>
<html>
<head>
<title>-DYD6FULSW DPSM4XHU\5R]G]LDï3RGVWDZRZHLQVWUXNFMH-DYD6FULSW
SU]\NïDG</title>
<link rel=”stylesheet” href=”css/c02.css” />
</head>
<body>
<h1>(OGHUĠRZHU</h1>
<div id=”content”>
<div id=”greeting” class=”message”>Witaj!</div>
<table>
<tr>
<td>7UHĂÊWDEOLF]NL </td>
<td id=”userSign”></td>
</tr> <tr>
<td>Liczba znaków: </td>
<td id=”tiles”></td>
</tr>
<tr>
<td>:DUWRĂÊF]ÚĂFLRZD </td>
<td id=”subTotal”>$</td>
</tr> <tr>
<td>.RV]WZ\V\ïNL </td>
<td id=”shipping”>$</td>
</tr>
<tr>
<td>:DUWRĂÊFDïNRZLWD </td>
<td id=”grandTotal”>$</td>
</tr>
</table>
<a href=”#” class=”action”>2SïDÊ]DPöZLHQLH</a>
</div>
<script src=”js/example.js”></script>
</body>
</html>
88
PODSTAWOWE INSTRUKCJE JAVASCRIPT
PRZYKŁAD
PODSTAWOWE INSTRUKCJE JAVASCRIPT
c02/js/example.js
JAVASCRIPT
8WZRU]HQLH]PLHQQ\FKGRREVïXJLNRPXQLNDWXSRZLWDQLD
var greeting = ’Witaj, ’;
var name = ’Janku’;
YDUPHVVDJH ijSURV]ÚVSUDZGě]DPöZLHQLHij
3RïÈF]HQLHSRZ\ĝV]\FK]PLHQQ\FKZFHOXXWZRU]HQLDRVWDWHF]QHJRNRPXQLNDWX
var welcome = greeting + name + message;
8WZRU]HQLH]PLHQQ\FKGRREVïXJLV]F]HJöïöZ]ZLÈ]DQ\FK]WDEOLF]NÈ
var sign = ’Montague House’;
var tiles = sign.length;
var subTotal = tiles * 5;
var shipping = 7;
var grandTotal = subTotal + shipping;
3REUDQLHHOHPHQWXNWöUHJRZDUWRĂFLÈDWU\EXWXLGMHVWJUHHWLQJ
var el = document.getElementById(’greeting’);
=DVWÈSLHQLHZDUWRĂFLWHJRHOHPHQWXVSHUVRQDOL]RZDQ\PNRPXQLNDWHPSRZLWDQLD
el.textContent = welcome;
3REUDQLHHOHPHQWXNWöUHJRZDUWRĂFLÈDWU\EXWXLGMHVWXVHU6LJQDQDVWÚSQLH
XDNWXDOQLHQLHMHJR]DZDUWRĂFL
var elSign = document.getElementById(’userSign’);
elSign.textContent = sign;
3REUDQLHHOHPHQWXNWöUHJRZDUWRĂFLÈDWU\EXWXLGMHVWWLOHVDQDVWÚSQLH
XDNWXDOQLHQLHMHJR]DZDUWRĂFL
var elTiles = document.getElementById(’tiles’);
elTiles.textContent = tiles;
3REUDQLHHOHPHQWXNWöUHJRZDUWRĂFLÈDWU\EXWXLGMHVWVXE7RWDODQDVWÚSQLH
XDNWXDOQLHQLHMHJR]DZDUWRĂFL
var elSubTotal = document.getElementById(’subTotal’);
HO6XE7RWDOWH[W&RQWHQW VXE7RWDOij]ïij
3REUDQLHHOHPHQWXNWöUHJRZDUWRĂFLÈDWU\EXWXLGMHVWVKLSSLQJDQDVWÚSQLH
XDNWXDOQLHQLHMHJR]DZDUWRĂFL
var elSubTotal = document.getElementById(’shipping’);
HO6XE7RWDOWH[W&RQWHQW VKLSSLQJij]ïij
3REUDQLHHOHPHQWXNWöUHJRZDUWRĂFLÈDWU\EXWXLGMHVWJUDQG7RWDODQDVWÚSQLH
XDNWXDOQLHQLHMHJR]DZDUWRĂFL
var elGrandTotal = document.getElementById(’grandTotal’);
HO*UDQG7RWDOWH[W&RQWHQW JUDQG7RWDOij]ïij
PODSTAWOWE INSTRUKCJE JAVASCRIPT
89
PODSUMOWANIE
PODSTAWOWE INSTRUKCJE JAVASCRIPT
f 6NU\SWVNïDGDVLÚ]VHULLSROHFHñ]NWöU\FKNDĝGHSU]\SRPLQD
NURNZSU]HSLVLHNXOLQDUQ\P
f 6NU\SW]DZLHUDEDUG]RGRNïDGQHLQVWUXNFMH1DSU]\NïDG
QDND]XMH]DSDPLÚWDQLHZDUWRĂFLSU]HGSU]HSURZDG]HQLHP
REOLF]Hñ]MHMXĝ\FLHP
f =PLHQQHVïXĝÈGRW\PF]DVRZHJRSU]HFKRZ\ZDQLDGDQ\FK
Z\NRU]\VW\ZDQ\FKZVNU\SFLH
f 7DEOLFDWR]PLHQQDVSHFMDOQHJRW\SXĽPRĝHSU]HFKRZ\ZDÊ
ZLHOHHOHPHQWöZSRZLÈ]DQ\FK]HVREÈGDQ\FK
f -DYD6FULSWUR]UöĝQLDZDUWRĂFLOLF]ERZH ļ FLÈJLWHNVWRZH
WHNVW RUD]ZDUWRĂFLERRORZVNLH true i false f 1DSRGVWDZLHZ\UDĝHQLDMHVWREOLF]DQDMHGQDZDUWRĂÊ
f 3RGF]DVREOLF]DQLDZDUWRĂFLZ\UDĝHQLDRSLHUDMÈVLÚ
QDRSHUDWRUDFK
90
PODSTAWOWE INSTRUKCJE JAVASCRIPT
3
FUNKCJE, METODY
I OBIEKTY
3U]HJOÈGDUNDLQWHUQHWRZDZ\PDJDEDUG]RV]F]HJöïRZ\FK
LQVWUXNFMLGRW\F]ÈF\FKWHJRFRPDE\ÊSU]H]QLÈ]URELRQH
'ODWHJRWHĝVNRPSOLNRZDQHVNU\SW\PRJÈVNïDGDÊVLÚ]VHWHN
DQDZHWW\VLÚF\ ZLHUV]\NRGX'RRUJDQL]RZDQLDNRGX
SURJUDPLĂFLXĝ\ZDMÈIXQNFMLPHWRGLRELHNWöZ7HQUR]G]LDï
]RVWDïSRG]LHORQ\QDWU]\F]ÚĂFLSRĂZLÚFRQHSRV]F]HJöOQ\P
]DJDGQLHQLRP
92
FUNKCJE I METODY
OBIEKTY
OBIEKTY WBUDOWANE
)XQNFMDVNïDGDVLÚ]VHULL
SROHFHñ]JUXSRZDQ\FK]H
VREÈLSU]H]QDF]RQ\FKGR
Z\NRQDQLDRNUHĂORQHJR]DGDQLD0HWRGDWRIXQNFMDDOH
XWZRU]RQDZHZQÈWU]RELHNWX
LVWDQRZLÈFDMHJRF]ÚĂÊ
:UR]G]LDOHGRZLHG]LDïHĂ
VLÚĝHSURJUDPLĂFLXĝ\ZDMÈ
RELHNWöZDE\WZRU]\Ê]Z\NRU]\VWDQLHPGDQ\FKPRGHOH
SU]HGPLRWöZ]U]HF]\ZLVWRĂFL2ELHNW\]DZLHUDMÈ
ZïDĂFLZRĂFLLPHWRG\
:W\PUR]G]LDOH]REDF]\V]
MDNWZRU]\ÊZïDVQHRELHNW\
ZMÚ]\NX-DYD6FULSW
3U]HJOÈGDUNDLQWHUQHWRZD
MHVWGRVWDUF]DQDZUD]
]]HVWDZHPRELHNWöZ
G]LDïDMÈF\FKZFKDUDNWHU]H
]ELRUXQDU]ÚG]LRZHJR
SU]H]QDF]RQHJRGRWZRU]HQLDLQWHUDNW\ZQ\FKVWURQ
LQWHUQHWRZ\FK:W\PUR]G]LDOHSR]QDV]SHZQÈOLF]EÚ
ZEXGRZDQ\FKRELHNWöZ
NWöUHEÚG]LHV]QDSRW\NDï
ZSU]\NïDGDFKRPDZLDQ\FK
ZWHMNVLÈĝFH
FUNKCJE, METODY I OBIEKTY
FUNKCJE, METODY I OBIEKTY
93
CO TO JEST FUNKCJA?
)XQNFMDSR]ZDODQD]JUXSRZDQLHVHULLSROHFHñRGSRZLHG]LDOQ\FK
]DZ\NRQDQLHRNUHĂORQHJR]DGDQLD-HĝHOLZUöĝQ\FKF]ÚĂFLDFKVNU\SWX
F]ÚVWRMHVWZ\NRQ\ZDQHWRVDPR]DGDQLHWRPRĝQDXĝ\ÊIXQNFML
]DPLDVWSRZWDU]DÊWHQVDP]HVWDZSROHFHñ *UXSRZDQLHSROHFHñMHVW
QLH]EÚGQHZFHOXXG]LHOHQLD
RGSRZLHG]LQDS\WDQLHOXE
Z\NRQDQLH]DGDQLDSRPDJDMÈFHJRZRUJDQL]DFMLNRGX
&RZLÚFHMSROHFHQLDIXQNFML
QLH]DZV]HVÈZ\NRQ\ZDQH
SRGF]DVZF]\W\ZDQLDVWURQ\
DZLÚFIXQNFMDSRWU]HEXMH
VSRVREXQDprzechowywanie
NURNöZQLH]EÚGQ\FKGRZ\NRQDQLDGDQHJR]DGDQLD6NU\SW
PRĝHSöěQLHMQDND]DÊIXQNFML
Z\NRQDQLHZV]\VWNLFKNURNöZ
JG\EÚG]LHWRNRQLHF]QH1D
SU]\NïDG]DGDQLHZVNU\SFLH
PRĝHE\ÊZ\NRQ\ZDQHW\ONR
ZWHG\JG\Xĝ\WNRZQLNNOLNQLH
RNUHĂORQ\HOHPHQWQDVWURQLH
-HĝHOLFKFHV]]DFKRZDÊ
PRĝOLZRĂÊZ\ZRïDQLDIXQNFML
ZSU]\V]ïRĂFLWRPXVLV]QDGDÊ
MHMQD]ZÚ1D]ZDWDSRZLQQD
RSLV\ZDÊ]DGDQLHZ\NRQ\ZDQH
SU]H]IXQNFMÚ.LHG\QDND]XMHV]
Z\NRQDQLHGDQHJR]DGDQLDWR
MHVWWRZ\ZRïDQLHIXQNFML
94
FUNKCJE, METODY I OBIEKTY
.URNLZ\NRQ\ZDQHSU]H]
IXQNFMÚZFHOXZ\NRQDQLD
NRQNUHWQHJR]DGDQLDVÈ
]GHğQLRZDQHZEORNXNRGX
=SRSU]HGQLHJRUR]G]LDïX
SUDZGRSRGREQLHSDPLÚWDV]ĝH
EORNNRGXVNïDGDVLÚ]MHGQHJR
SROHFHQLDOXEZLÚNV]HMOLF]E\
SROHFHñXPLHV]F]RQ\FKZQDZLDVLHNODPURZ\P ,QDF]HMQLĝ
MHVWZSU]\SDGNXSROHFHQLD
SRQDZLDVLHNODPURZ\PQLH
XPLHV]F]DVLÚĂUHGQLND :FHOXZ\NRQDQLDGDQHJR
]DGDQLDQLHNWöUHIXQNFMH
PXV]ÈRWU]\PDÊLQIRUPDFMH
GRGDWNRZH1DSU]\NïDG
IXQNFMDREOLF]DMÈFDSROH
SURVWRNÈWDPXVL]QDÊMHJR
GïXJRĂÊLV]HURNRĂÊ)UDJPHQW\
LQIRUPDFMLSU]HND]\ZDQHIXQNFML
VÈQD]\ZDQHSDUDPHWUDPL
.LHG\WZRU]\V]IXQNFMÚ
LRF]HNXMHV]RGQLHMRWU]\PDQLD
RGSRZLHG]LRGSRZLHGěWDMHVW
RNUHĂODQDPLDQHPZDUWRĂFL
]ZURWQHM
3RSUDZHMVWURQLHSU]HGVWDZLRQRSU]\NïDGIXQNFMLZSOLNX
-DYD6FULSW)XQNFMDWDQRVL
QD]ZÚupdateMessage()
1LHSU]HMPXMVLÚMHĂOLVNïDGQLD
SU]\NïDGXSRND]DQHJRSR
SUDZHMVWURQLHMHVWGOD&LHELH
QLH]UR]XPLDïD1DNROHMQ\FK
VWURQDFK]REDF]\V]MDNWZRU]\Ê
LZ\NRU]\VW\ZDÊIXQNFMH
3DPLÚWDMĝHMÚ]\NLSURJUDPRZDQLDEDUG]RF]ÚVWRVÈRSDUWH
QDSDUDFKQD]ZDZDUWRĂÊ
2PDZLDQDIXQNFMDPDQD]ZÚ
updateMessageDMHMZDUWRĂFLÈ
MHVWEORNNRGX ]DZLHUDSROHFHQLD *G\IXQNFMD]RVWDQLH
Z\ZRïDQD]DSRĂUHGQLFWZHP
MHMQD]Z\QDVWÚSXMHZ\NRQDQLH
]GHğQLRZDQ\FKZQLHMSROHFHñ
,VWQLHMÈUöZQLHĝIXQNFMHDQRQLPRZH1LHSRVLDGDMÈQD]Z\
DW\PVDP\PQLHPRJÈE\Ê
Z\ZRïDQH'ODWHJRWHĝZ\NRQDQLHWDNLHMIXQNFMLQDVWÚSXMH
WXĝSRW\PMDNQDWUDğQDQLÈ
LQWHUSUHWHU
PROSTA FUNKCJA
:RPDZLDQ\PSU]\NïDG]LH
Xĝ\WNRZQLNRZL]RVWDMHZ\ĂZLHWORQ\NRPXQLNDWQDJöU]H
VWURQ\7HQNRPXQLNDW]QDMGXMH
VLÚZHOHPHQFLH+70/NWöUHJR
ZDUWRĂFLÈDWU\EXWXidMHVW
message7UHĂÊNRPXQLNDWX
EÚG]LHPRG\ğNRZDQD]Z\NRU]\VWDQLHPNRGX-DYD6FULSW
3U]HG]DP\NDMÈF\P]QDF]QLNLHP</body>]QDMGXMHVLÚ
SROHFHQLHRGSRZLHG]LDOQH]D
ZF]\WDQLHSOLNX-DYD6FULSW
1DSRF]ÈWNXSOLNX-DYD6FULSW
PDP\]PLHQQÈXĝ\ZDQÈGR
SU]HFKRZ\ZDQLDQRZHJRNRPXQLNDWXDQDVWÚSQLHIXQNFMÚ
RQD]ZLHupdateMessage()
:W\PPLHMVFXQLHPXVLV]VLÚ
SU]HMPRZDÊsposobemG]LDïDQLDWHMIXQNFMLSR]QDV]JRQD
NLONXNROHMQ\FKVWURQDFK:DUWR
]ZUöFLÊXZDJÚĝHZQDZLDVLH
NODPURZ\P]QDMGXMÈVLÚGZD
SROHFHQLD
c03/basic-function.html
HTML
<!DOCTYPE html>
<html>
<head>
<title>Prosta funkcja</title>
<link rel=”stylesheet” href=”css/c03.css” />
</head>
<body>
<h1>TravelWorthy</h1>
<div id=”message”>Witamy w naszej witrynie!</div>
<script src=”js/basic-function.js”></script>
</body>
</html>
JAVASCRIPT
c03/js/basic-function.js
YDUPVJ ij=DSLV]VLÚGRQDV]HJRQHZVOHWWHUDDRWU]\PDV]UDEDWXij
function updateMessage() {
YDUHO GRFXPHQWJHW(OHPHQW%\,G ijPHVVDJHij HOWH[W&RQWHQW PVJ
}
XSGDWH0HVVDJH WYNIK
3ROHFHQLD-DYD6FULSWXDNWXDOQLDMÈWUHĂÊNRPXQLNDWXZ\ĂZLHWODQHJRQDJöU]HVWURQ\)XQNFMDG]LDïD
SRGREQLHMDNPDJD]\QĽSROHFHQLDZQDZLDVLH
NODPURZ\PVÈSU]HFKRZ\ZDQHGRSöNLGRSöW\
QLHEÚG]LHV]JRWRZ\QDLFKXĝ\FLH3ROHFHQLDWH
QLH]RVWDQÈZLÚFZ\NRQDQHDĝGRFKZLOLwywoïDQLDIXQNFML:\ZRïDQLHIXQNFMLQDVWÚSXMHW\ONR
ZRVWDWQLPZLHUV]XVNU\SWX
FUNKCJE, METODY I OBIEKTY
95
DEKLAROWANIE FUNKCJI
:FHOXXWZRU]HQLDIXQNFMLQDGDMHV]MHMQD]ZÚDQDVWÚSQLHZQDZLDVLH
NODPURZ\PXPLHV]F]DV]SROHFHQLDQLH]EÚGQHGRZ\NRQDQLD]DGDQLD
SU]H]WÚIXQNFMÚ7HQSURFHVQRVLQD]ZÚGHNODUDFMLIXQNFML
)XQNFMÚGHNODUXMHV]]DSRPRFÈ
VïRZDNOXF]RZHJRfunction
1DGDMHV]MHMQD]ZÚ F]DVDPL
RNUHĂODQÈPLDQHPLGHQW\ğNDWRUD DSRQLHMZSURZDG]DV]
QDZLDV]Z\Nï\RWZLHUDMÈF\
L]DP\NDMÈF\
SŁOWO KLUCZOWE
FUNCTION
3ROHFHQLDRGSRZLHG]LDOQH]D
Z\NRQDQLH]DGDQLDVÈXPLHV]F]RQHZEORNXNRGXF]\OL
ZHZQÈWU]QDZLDVXNODPURZHJR
NAZWA FUNKCJI
function sayHello() {
GRFXPHQWZULWH ij:LWDMij }
BLOK KODU (W NAWIASIE KLAMROWYM)
3RZ\ĝV]DIXQNFMDMHVWQLH]Z\NOH
SURVWD VNïDGDVLÚW\ONR]MHGQHJRSROHFHQLD DOHSRND]XMH
VSRVöEWZRU]HQLDIXQNFML
:LÚNV]RĂÊIXQNFML]NWöU\PL
EÚG]LHV]VLÚVSRW\NDÊSUDZGRSRGREQLHEÚG]LH]DZLHUDïD
ZLÚNV]ÈOLF]EÚSROHFHñ
96
FUNKCJE, METODY I OBIEKTY
7U]HEDNRQLHF]QLH]DSDPLÚWDÊ
ĝHIXQNFMHSU]HFKRZXMÈNRG
Z\PDJDQ\GRZ\NRQ\ZDQLD
RNUHĂORQ\FK]DGDñ6NU\SW
PRĝHZGRZROQ\PPRPHQFLH
QDND]DÊIXQNFMLZ\NRQDQLHMHM
]DGDQLD
-HĝHOLZUöĝQ\FKPLHMVFDFK
VNU\SWX]DFKRG]LSRWU]HED
Z\NRQDQLDWHJRVDPHJR
]DGDQLDRGSRZLHGQLFKSROHFHñ
QLHWU]HEDZLHORNURWQLHSRZWDU]DÊ:\VWDUF]\XPLHĂFLÊMH
ZIXQNFMLDQDVWÚSQLHXĝ\ZDÊ
MHMGRZ\NRQDQLDGDQHJR
]DGDQLD
WYWOŁANIE FUNKCJI
*G\PDP\]DGHNODURZDQÈIXQNFMÚZV]\VWNLHSROHFHQLDXPLHV]F]RQH
ZMHMQDZLDVLHNODPURZ\PPRĝQDZ\NRQDÊ]DSRPRFÈ]DOHGZLH
MHGQHJRZLHUV]DNRGX1D]\ZDP\WRZ\ZRïDQLHPIXQNFML
:FHOXZ\NRQDQLDNRGX
]GHğQLRZDQHJRZIXQNFML
QDOHĝ\SRGDÊQD]ZÚIXQNFML
ZUD]]QDZLDVHP]Z\Nï\P
:ĂZLHFLHSURJUDPLVWöZ
PöZLP\ĝHWHQNRGVSRZRGXMH
Z\ZRïDQLHIXQNFML
7ÚVDPÈIXQNFMÚPRĝQDZ\ZRïDÊGRZROQÈOLF]EÚUD]\ZW\P
VDP\PVNU\SFLH-DYD6FULSW
NAZWA FUNKCJI
VD\+HOOR
)XQNFMDPRĝH
SU]HFKRZ\ZDÊLQVWUXNFMH
SU]H]QDF]RQHGR
Z\NRQDQLDRNUHĂORQHJR
]DGDQLD
2..LHG\GDQH]DGDQLH
PDE\ÊZ\NRQDQH
ZVNU\SFLHZ\ZRïXMHV]
IXQNFMÚ
)XQNFMDZ\NRQXMHNRG
]QDMGXMÈF\VLÚZEORNX
NRGX
1
function sayHello() {
3 GRFXPHQWZULWH ij:LWDMij }
.RGSU]HGZ\ZRïDQLHPIXQNFML
2 VD\+HOOR
4 .RGSRZ\ZRïDQLXIXQNFML
&]DVDPLPRĝQD]REDF]\Ê
Z\ZRïDQLHIXQNFML
przedMHMGHNODUDFMÈ
7DNLHUR]ZLÈ]DQLHQDGDO
G]LDïDSRQLHZDĝSU]HG
Z\NRQDQLHPNDĝGHJR
SROHFHQLDLQWHUSUHWHU
DQDOL]XMHVNU\SWLGODWHJR
ZLHĝHGHNODUDFMDGDQHM
IXQNFML]QDMGXMHVLÚ
ZGDOV]HMF]ÚĂFLVNU\SWX
:RPDZLDQ\PSU]\NïDG]LHGHNODUXMHP\IXQNFMÚ
SU]HGMHMZ\ZRïDQLHP
3R]DNRñF]HQLX
Z\NRQ\ZDQLDIXQNFML
G]LDïDQLHSURJUDPXMHVW
NRQW\QXRZDQHRGPLHMVFDZNWöU\PQDVWÈSLïR
Z\ZRïDQLHIXQNFML
FUNKCJE, METODY I OBIEKTY
97
DEKLARACJA FUNKCJI
WYMAGAJĄCEJ INFORMACJI
&]DVDPLIXQNFMDSRWU]HEXMHSHZQ\FKLQIRUPDFMLZFHOXZ\NRQDQLD
MHM]DGDQLD:WDNLFKSU]\SDGNDFKQDOHĝ\]DGHNODURZDÊIXQNFMÚZUD]
z SDUDPHWUDPL:HZQÈWU]IXQNFMLSDUDPHWU\G]LDïDMÈQD]DVDG]LHSRGREQHM
GR]PLHQQ\FK
-HĝHOLGRZ\NRQDQLD]DGDQLDIXQNFMDSRWU]HEXMH
SHZQ\FKLQIRUPDFMLWRQLH]EÚGQHGDQHVÈ
ZVND]\ZDQHZQDZLDVLH]QDMGXMÈF\PVLÚSR
QD]ZLHIXQNFML
(OHPHQW\Z\PLHQLRQHZQDZLDVLHVÈQD]\ZDQH
SDUDPHWUDPLIXQNFML:HZQÈWU]IXQNFMLSDUDPHWU\
G]LDïDMÈSRGREQLHMDN]PLHQQH
PARAMETRY
function getArea(widthheight) {
return width * height
}
WEWNĄTRZ FUNKCJI PARAMETRY SĄ
UŻYWANE JAK ZMIENNE
3RZ\ĝV]DIXQNFMDREOLF]DLSRGDMHSROHSURVWRNÈWD
'RSUDZLGïRZHJRG]LDïDQLDSRWU]HEXMHGDQ\FK
WMV]HURNRĂFLLGïXJRĂFLSURVWRNÈWD:WUDNFLH
NDĝGHJRZ\ZRïDQLDIXQNFMLPRĝQDSRGDÊUöĝQH
ZDUWRĂFL
:WHQVSRVöESRND]DQRĝHNRGPRĝHZ\NRQ\ZDÊ]DGDQLHQLHPDMÈFZF]HĂQLHMGRNïDGQ\FK
LQIRUPDFMLV]F]HJöïRZ\FKRLOH]RVWDMÈVSHïQLRQH
UHJXï\SR]ZDODMÈFHPXQDZ\NRQDQLH]DGDQLD
98
FUNKCJE, METODY I OBIEKTY
'ODWHJRWHĝSRGF]DVSURMHNWRZDQLDVNU\SWXPXVLV]
]ZUöFLÊXZDJÚQDGDQHMDNLHPRJÈE\ÊSRWU]HEQH
IXQNFMLGRZ\NRQDQLD]DGDQLD
-HĝHOLSU]\MU]\V]VLÚZQÚWU]XIXQNFMLWR]DXZDĝ\V]
ĝHQD]Z\SDUDPHWUöZVÈXĝ\ZDQHSRGREQLHMDN
]PLHQQH:RPDZLDQ\PSU]\NïDG]LHSDUDPHWU\
RQD]ZDFKwidthLheightSU]HGVWDZLDMÈGïXJRĂÊ
LZ\VRNRĂÊĂFLDQ\
WYWOŁANIE FUNKCJI
WYMAGAJĄCEJ DANYCH
3RGF]DVZ\ZRï\ZDQLDIXQNFML]SDUDPHWUDPLZDUWRĂFLSU]H]QDF]RQH
GRXĝ\FLDQDOHĝ\SRGDÊZQDZLDVLH]QDMGXMÈF\PVLÚSRQD]ZLHIXQNFML
:DUWRĂFLWHVÈQD]\ZDQHDUJXPHQWDPL$UJXPHQW\PRJÈE\ÊSRGDQH
ZSRVWDFLZDUWRĂFLOXE]PLHQQ\FK
ARGUMENTY W POSTACI WARTOŚCI
ARGUMENTY W POSTACI ZMIENNYCH
:SU]\SDGNXSU]HGVWDZLRQHMSRQLĝHMIXQNFML
OLF]ED3R]QDF]DGïXJRĂÊĂFLDQ\QDWRPLDVW5WRMHM
Z\VRNRĂÊ
3RGF]DVZ\ZRï\ZDQLDIXQNFMLQLHWU]HEDSRGDZDÊ
U]HF]\ZLVW\FKZDUWRĂFLĽ]DPLDVWQLFKPRĝQD
Xĝ\Ê]PLHQQ\FK'ODWHJRWHĝHIHNWSRQLĝV]HJR
Z\ZRïDQLDMHVWGRNïDGQLHWDNLVDPMDNSRSU]HGQLHJR
getArea(35 ZDOO:LGWK ZDOO+HLJKW getArea(wallWidthwallHeight PARAMETRY KONTRA ARGUMENTY
%DUG]RF]ÚVWRPRĝQDVSRWNDÊVLÚ]Z\PLHQQ\P
Xĝ\FLHPSRMÚÊSDUDPHWULDUJXPHQWFKRÊPLÚG]\
QLPListniejeVXEWHOQDUöĝQLFD
*G\GHNODURZDOLĂP\IXQNFMÚQDVWURQLHSROHZHM
]RVWDï\Xĝ\WHVïRZDwidthLheight ZQDZLDVLH
ZSLHUZV]\PZLHUV]X :HZQÈWU]IXQNFMLVïRZD
WHG]LDïDMÈMDN]PLHQQH:\PLHQLRQHQD]Z\VÈ
SDUDPHWUDPL
1DWHMVWURQLHZLG]LV]Z\ZRïDQLHIXQNFML
getArea()DNRGZVND]XMHU]HF]\ZLVWHOLF]E\ OXE
SU]HFKRZXMÈFHMH]PLHQQH NWöUHEÚGÈXĝ\WHGR
SU]HSURZDG]HQLDREOLF]Hñ
7HZDUWRĂFLSU]HND]\ZDQHGRNRGX GDQHQLH]EÚGQHGRREOLF]HQLDSRZLHU]FKQLRNUHĂORQHMĂFLDQ\ VÈ
QD]\ZDQHDUJXPHQWDPL
FUNKCJE, METODY I OBIEKTY
99
POBRANIE POJEDYNCZEJ
WARTOŚCI Z FUNKCJI
3HZQHIXQNFMH]ZUDFDMÈGDQHGRNRGXNWöU\Z\ZRïDïIXQNFMÚ
1DSU]\NïDGSRSU]HSURZDG]HQLXREOLF]HñIXQNFMD]ZUDFDZ\QLN
3U]HGVWDZLRQDSRQLĝHMIXQNFMD
calculateArea()]ZUDFD
GRZ\ZRïXMÈFHJRMÈNRGX
REOLF]RQHSROHSURVWRNÈWD
:HZQÈWU]IXQNFMLQDVWÚSXMH
XWZRU]HQLH]PLHQQHMRQD]ZLH
areaNWöUDSU]HFKRZXMH
REOLF]RQHSROHSURVWRNÈWD
6ïRZRNOXF]RZHreturnMHVW
Xĝ\ZDQHZFHOX]ZUöFHQLD
REOLF]RQHMZDUWRĂFLGRNRGX
NWöU\Z\ZRïDïWÚIXQNFMÚ
IXQFWLRQFDOFXODWH$UHD ZLGWKKHLJKW ^
var area ZLGWK KHLJKW
return area
}
var wallOne FDOFXODWH$UHD var wallTwo FDOFXODWH$UHD 3DPLÚWDMĝHSRXĝ\FLXSROHFHQLDreturnLQWHUSUHWHURSXV]F]DIXQNFMÚLSRZUDFDGRSROHFHQLDNWöUH
VSRZRGRZDïRMHMZ\ZRïDQLH-HĝHOLSRSROHFHQLXreturnZIXQNFML]QDMGXMÈVLÚMDNLHNROZLHNLQQHSROHFHQLDQLHEÚGÈSU]HWZRU]RQH
=PLHQQDwallOneSU]HFKRZXMH
ZDUWRĂÊ15REOLF]RQÈSU]H]
IXQNFMÚcalculateArea()
FUNKCJE, METODY I OBIEKTY
=NROHLwallTwoSU]HFKRZXMH
ZDUWRĂÊ15REOLF]RQÈSU]H]WÚ
VDPÈIXQNFMÚcalculateArea()
:WHQVSRVöE]DGHPRQVWURZDQRĝHWDVDPDIXQNFMDPRĝH
E\ÊXĝ\ZDQDGRZ\NRQDQLDW\FK
VDP\FKNURNöZDOH]LQQ\PL
ZDUWRĂFLDPL
ZWROT WIELU WARTOŚCI
Z FUNKCJI
']LÚNLWDEOLF\IXQNFMDPRĝH]ZUöFLÊZLÚFHMQLĝW\ONRMHGQÈZDUWRĂÊ
1DSU]\NïDGSU]HGVWDZLRQDQDWHMVWURQLHIXQNFMDREOLF]DSROH
LSRMHPQRĂÊV]HĂFLDQX
3RQLĝHMSU]HGVWDZLRQRQRZÈ
IXQNFMÚRQD]ZLHgetSize()
3ROHSURVWRNÈWD]RVWDMHREOLF]RQHDQDVWÚSQLHSU]HFKRZ\ZDQH
Z]PLHQQHMarea
3RREOLF]HQLXSRMHPQRĂFL
ZDUWRĂÊWD]RVWDMHXPLHV]F]RQD
Z]PLHQQHMRQD]ZLHvolume
2ELHZDUWRĂFLVÈQDVWÚSQLH
ZVWDZLRQHGRWDEOLF\sizes
1DNRñFXWDEOLFDsizesMHVW
]ZUDFDQDGRNRGXNWöU\Z\ZRïDïWÚIXQNFMÚ:WHQVSRVöE
PRĝQDXĝ\ÊZLHOHZDUWRĂFL
]ZUöFRQ\FKSU]H]IXQNFMÚ
function getSize ZLGWKKHLJKWGHSWK ^
var area ZLGWK KHLJKW
var volume ZLGWK KHLJKW GHSWK
var sizes = [areavolume@
return sizes
}
var areaOne = getSize [0]
var volumeOne = getSize [1]
=PLHQQDareaOneSU]HFKRZXMH
SROHSURVWRNÈWDRZ\PLDUDFK
QD7RREOLF]RQHSROHMHVW
SLHUZV]ÈZDUWRĂFLÈZWDEOLF\
sizes
=PLHQQDvolumeOneSU]HFKRZXMHSRMHPQRĂÊV]HĂFLDQX
RZ\PLDUDFKQDQD
2EOLF]RQDSRMHPQRĂÊMHVWGUXJÈ
ZDUWRĂFLÈZWDEOLF\sizes
FUNKCJE, METODY I OBIEKTY
FUNKCJE ANONIMOWE
I FUNKCJE WYRAŻENIA
:\UDĝHQLHSRZRGXMHZ\JHQHURZDQLHZDUWRĂFL:\UDĝHQLHPRĝQD]DVWRVRZDÊ
ZPLHMVFXZNWöU\PVSRG]LHZDQHVÈZDUWRĂFL-HĝHOLZPLHMVFXZNWöU\P
SU]HJOÈGDUNDLQWHUQHWRZDRF]HNXMHZ\UDĝHQLDEÚG]LHXĝ\WDIXQNFMD
QDSU]\NïDGMDNRDUJXPHQWIXQNFML WR]RVWDQLHSRWUDNWRZDQDMDNRZ\UDĝHQLH
DEKLARACJA FUNKCJI
FUNKCJA WYRAŻENIA
'HNODUDFMDIXQNFMLSRZRGXMHXWZRU]HQLHIXQNFML
NWöUÈPRĝQDSöěQLHMZ\ZRïDÊZNRG]LH7RMHVW
URG]DMIXQNFML]NWöU\PLVSRW\NDïHĂVLÚGRWÈG
ZNVLÈĝFH
-HĝHOLIXQNFMÚXPLHĂFLV]ZPLHMVFXZNWöU\P
LQWHUSUHWHURF]HNXMHQDZ\UDĝHQLHWREÚG]LHRQD
SRWUDNWRZDQDMDNRZ\UDĝHQLH)XQNFMDWDNDMHVW
X]QDZDQD]DIXQNFMÚZ\UDĝHQLD:IXQNFMLZ\UDĝHQLDQD]ZDMHVW]Z\NOHSRPLMDQD'ODWHJRWHĝ
IXQNFMDSR]EDZLRQDQD]Z\MHVWQD]\ZDQDIXQNFMÈ
DQRQLPRZÈ3RQLĝHMSU]HGVWDZLRQRIXQNFMÚSU]HFKRZ\ZDQÈZ]PLHQQHMRQD]ZLHarea)XQNFMD
WDPRĝHE\ÊZ\ZRïDQDMDNGRZROQDLQQDIXQNFMD
XWZRU]RQD]Z\NRU]\VWDQLHPGHNODUDFMLIXQNFML
:FHOXZ\ZRïDQLDIXQNFMLZNRG]LHNRQLHF]QHMHVW
QDGDQLHMHMQD]Z\ZZ\QLNXF]HJRRWU]\PDP\
QD]ZDQÈIXQNFMÚ3RQLĝHMSU]HGVWDZLRQR]DGHNODURZDQÈIXQNFMÚRQD]ZLHarea()NWöUDPRĝHE\Ê
Z\ZRïDQD]DSRPRFÈMHMQD]Z\
function area(ZLGWKKHLJKW) {
UHWXUQZLGWK KHLJKW
}
var area = function(ZLGWKKHLJKW) {
UHWXUQZLGWK KHLJKW
}
var size = area var size = area -DN]REDF]\V]ZUR]G]LDOHZSRGUR]G]LDOH
ķ.RQWHNVWZ\NRQ\ZDQLDLSU]HQLHVLHQLHZJöUÚĵ
LQWHUSUHWHU]DZV]HZ\V]XNXMH]PLHQQHLGHNODUDFMH
IXQNFMLzanimSU]HMG]LHGRNROHMQ\FKVHNFML
VNU\SWXZLHUV]SRZLHUV]X2]QDF]DWRĝHIXQNFMD
XWZRU]RQD]DSRPRFÈGHNODUDFMLIXQNFMLPRĝHE\Ê
ZVNU\SFLHZ\ZRïDQDprzedPLHMVFHPZNWöU\P
]RVWDïD]DGHNODURZDQD
:LÚFHMLQIRUPDFMLQDWHPDWSU]HWZDU]DQLD
]PLHQQ\FKLIXQNFML]QDMG]LHV]ZUR]G]LDOH
RGSRGUR]G]LDïXķ.ROHMQRĂÊZ\NRQ\ZDQLDĵGR
SRGUR]G]LDïXķ3R]QDMHP\]DNUHVĵZNWöU\FK
SRUXV]RQR]DJDGQLHQLDGRW\F]ÈFHZ\NRQ\ZDQLD
VNU\SWXL]ZLÈ]DQH]W\PQLHEH]SLHF]HñVWZD
FUNKCJE, METODY I OBIEKTY
:IXQNFMLZ\UDĝHQLDQLHMHVWRQDSU]HWZDU]DQD
DĝGRFKZLOLJG\LQWHUSUHWHUGRWU]HGRGDQHJR
SROHFHQLD2]QDF]DWREUDNPRĝOLZRĂFLZ\ZRïDQLD
IXQNFMLprzedMHMZ\NU\FLHPSU]H]LQWHUSUHWHU
3RQDGWRNRGZ\NRQ\ZDQ\SU]HGZ\ZRïDQLHP
IXQNFMLPRĝHPLHÊZSï\ZQD]DFKRZDQLHIXQNFML
DQRQLPRZHM
NATYCHMIAST WYKONYWANA
FUNKCJA WYRAŻENIA
3U]HGVWDZLRQ\VSRVöEWZRU]HQLDIXQNFMLMHVWVWRVRZDQ\ZZLHOXV\WXDFMDFK
)XQNFMHEDUG]RF]ÚVWRVÈXĝ\ZDQHZFHOX]DJZDUDQWRZDQLDĝHPLÚG]\
QD]ZDPL]PLHQQ\FKQLH]DFKRG]ÈNRQĠLNW\ PDWR]QDF]HQLHV]F]HJöOQLH
ZWHG\JG\QDVWURQLHMHVWXĝ\ZDQ\FKZLHOHVNU\SWöZ NATYCHMIAST WYKONYWANA
FUNKCJA WYRAŻENIA (IIFE)
KIEDY UŻYWAĆ FUNKCJI
ANONIMOWYCH I TYPU IIFE?
7HJRURG]DMXIXQNFMHQLHPDMÈSU]\SLVDQHMQD]Z\
=DPLDVWWHJRVÈZ\NRQ\ZDQHWXĝSRLFKRGNU\FLX
SU]H]LQWHUSUHWHU
:NVLÈĝFHSR]QDV]ZLHOHVSRVREöZXĝ\ZDQLD
IXQNFMLDQRQLPRZ\FKLW\SX,,)(
3RQLĝHMPDP\]PLHQQÈRQD]ZLHareaSU]HFKRZXMÈFÈZDUWRĂÊ]ZUöFRQÈSU]H]IXQNFMÚ DQLH
SU]HFKRZXMÈFÈIXQNFMÚNWöUDPRĝHE\ÊSöěQLHM
Z\ZRïDQD var area = (function() {
YDUZLGWK YDUKHLJKW UHWXUQZLGWK KHLJKW
}() )
2VWDWQLDSDUDQDZLDVöZ ZNRORU]H]LHORQ\P SR
]DP\NDMÈF\PQDZLDVLHNODPURZ\PNRñF]ÈF\P
EORNNRGXQDND]XMHLQWHUSUHWHURZLQDW\FKPLDVWRZH
Z\ZRïDQLHIXQNFML=NROHLRSHUDWRUJUXSRZDQLD
ZNRORU]HUöĝRZ\P WRQDZLDVJZDUDQWXMÈF\
SRWUDNWRZDQLHFDïRĂFLMDNRZ\UDĝHQLH
:IXQNFMDFKW\SX,,)(PRĝQDVLÚVSRWNDÊ
]XPLHV]F]HQLHPRVWDWQLHMSDU\QDZLDVöZpo
]DP\NDMÈF\PRSHUDWRU]HJUXSRZDQLD-HGQDN
SRZV]HFKQLHSU]\MÚWÈSUDNW\NÈMHVWXPLHV]F]DQLH
RVWDWQLHMSDU\QDZLDVöZprzed]DP\NDMÈF\P
RSHUDWRUHPJUXSRZDQLDMDNZSRZ\ĝV]\PNRG]LH
=QDMGXMÈRQH]DVWRVRZDQLHZNRG]LHNWöU\
SRGF]DVZ\NRQ\ZDQLDGDQHJR]DGDQLDPRĝHE\Ê
XUXFKRPLRQ\W\ONRMHGHQUD]DQLHZLHORNURWQLH
SU]H]LQQHIUDJPHQW\VNU\SWX)XQNFMHWHZ\NRU]\VWXMHVLÚQDSU]\NïDG
ľMDNRDUJXPHQW\ZWUDNFLHZ\ZRï\ZDQLDIXQNFML
ZFHOXREOLF]HQLDGODQLHMZDUWRĂFL ľ
ľZSURFHGXUDFKREVïXJL]GDU]HñRUD]NRPSRQHQDE\SU]\SLVDÊRELHNWRZLZDUWRĂÊZïDĂFLZRĂFL
WDFKQDVïXFKXMÈF\FK SDWU]UR]G]LDï ZFHOX
Z\NRQDQLD]DGDQLDSRZ\VWÈSLHQLXGDQHJR
]GDU]HQLD
ľDE\XQLHPRĝOLZLÊSRZVWDQLHNRQĠLNWöZPLÚG]\
GZRPDVNU\SWDPLNWöUHPRJÈXĝ\ZDÊW\FK
VDP\FKQD]Z]PLHQQ\FK SDWU]SRGUR]G]LDï
ķ-DNG]LDïDMÈSDPLÚÊL]PLHQQH"ĵ )XQNFMHW\SX,,)(VÈXĝ\ZDQHZFKDUDNWHU]H
RSDNRZDQLDGODNRGX:V]HONLH]PLHQQH]DGHNODURZDQHZIXQNFMLDQRQLPRZHMVÈHIHNW\ZQLH
FKURQLRQHSU]HG]PLHQQ\PLRWDNLFKVDP\FK
QD]ZDFKLSRFKRG]ÈF\PL]LQQ\FKVNU\SWöZ
:LÈĝHVLÚWR]NRQFHSFMÈ]DNUHVXNWöUÈSR]QDV]
QDNROHMQHMVWURQLH7RUöZQLHĝEDUG]RSRSXODUQD
WHFKQLNDZELEOLRWHFHM4XHU\
FUNKCJE, METODY I OBIEKTY ZAKRES ZMIENNEJ
0LHMVFH]DGHNODURZDQLD]PLHQQHMEÚG]LHPLDïRZSï\ZQDWRJG]LHPRĝQDMHM
Xĝ\ZDÊZNRG]LH-HĝHOL]PLHQQDEÚG]LH]DGHNODURZDQDZIXQNFMLWRPRĝH
E\ÊXĝ\WDMHG\QLHZWHMIXQNFML7RMHVWNRQFHSFMD]DNUHVX]PLHQQHM
ZMIENNE LOKALNE
ZMIENNE GLOBALNE
-HĝHOL]PLHQQD]RVWDQLHXWZRU]RQDZHZQÈWU]
IXQNFML]DSRPRFÈVïRZDNOXF]RZHJRvar,
PRĝHE\ÊXĝ\ZDQDMHG\QLHZWHMIXQNFML1RVL
ZWHG\QD]ZÚ]PLHQQHMORNDOQHMOXE]PLHQQHMQD
SR]LRPLHIXQNFML3RQDGWRPöZLP\ĝHPD]DNUHV
ORNDOQ\OXE]DNUHVQDSR]LRPLHIXQNFML7HJR
URG]DMX]PLHQQDMHVWQLHGRVWÚSQDQD]HZQÈWU]
IXQNFMLZNWöUHM]RVWDïD]DGHNODURZDQD8ĝ\WD
ZSRQLĝV]\PSU]\NïDG]LH]PLHQQDareaMHVW
]PLHQQÈORNDOQÈ
-HĝHOL]PLHQQD]RVWDQLHXWZRU]RQDQD]HZQÈWU]
IXQNFMLWRPRĝHE\ÊXĝ\ZDQDZGRZROQ\P
PLHMVFXVNU\SWX-HVWQD]\ZDQD]PLHQQÈJOREDOQÈ
LPD]DNUHVJOREDOQ\:SU]HGVWDZLRQ\PSRQLĝHM
SU]\NïDG]LHwallSizeMHVW]DVWRVRZDQD]PLHQQD
JOREDOQD
,QWHUSUHWHUWZRU]\]PLHQQHORNDOQHSRUR]SRF]ÚFLXZ\NRQ\ZDQLDIXQNFMLLXVXZDMHWXĝSR
]DNRñF]HQLXG]LDïDQLDSU]H]GDQÈIXQNFMÚ0DWR
Z\PLHQLRQHSRQLĝHMLPSOLNDFMH
ľ-HĝHOLIXQNFMD]RVWDQLHZ\ZRïDQDGZXNURWQLH
]DNDĝG\PUD]HP]PLHQQDPRĝHPLHÊLQQÈ
ZDUWRĂÊ
ľ'ZLHUöĝQHIXQNFMHPRJÈXĝ\ZDÊ]PLHQQ\FK
RWDNLFKVDP\FKQD]ZDFKEH]REDZRVSRZRGRZDQLHNRQĠLNWXQD]Z
=PLHQQHJOREDOQHVÈSU]HFKRZ\ZDQHZSDPLÚFL
GRSöW\GRSöNLVWURQDSR]RVWDMHZF]\WDQDZSU]HJOÈGDUFHLQWHUQHWRZHM2]QDF]DWRĝH]PLHQQH
JOREDOQHZ\PDJDMÈZLÚNV]HMLORĂFLSDPLÚFLQLĝ
]PLHQQHORNDOQHDSRQDGWR]ZLÚNV]DMÈU\]\NR
Z\VWÈSLHQLDNRQĠLNWXQD]Z SDWU]NROHMQDVWURQD =WHJRSRZRGXZV]ÚG]LHJG]LHW\ONRMHVWWR
PRĝOLZHQDOHĝ\Xĝ\ZDÊ]PLHQQ\FKORNDOQ\FK
-HĝHOL]DSRPQLV]R]DGHNODURZDQLX]PLHQQHM
]HVïRZHPNOXF]RZ\PvarWD]PLHQQDQDGDO
EÚG]LHIXQNFMRQRZDïDDOH]RVWDQLHSRWUDNWRZDQD
MDNR]PLHQQDglobalna WRMHVWX]QDZDQH]D]ïÈ
SUDNW\NÚ IXQFWLRQJHW$UHD ZLGWKKHLJKW ^
var area ZLGWK KHLJKW
return area
}
var wallSize JHW$UHD document.write(wallSize ZAKRES LOKALNY (NA POZIOMIE FUNKCJI)
ZAKRES GLOBALNY
FUNKCJE, METODY I OBIEKTY
JAK DZIAŁAJĄ PAMIĘĆ
I ZMIENNE?
=PLHQQHJOREDOQHXĝ\ZDMÈZLÚNV]HMLORĂFLSDPLÚFLSRQLHZDĝSU]HJOÈGDUND
LQWHUQHWRZDPXVLMHSU]HFKRZ\ZDÊSU]H]FDï\RNUHVZF]\WDQLDVWURQ\LQWHUQHWRZHMZ\NRU]\VWXMÈFHMWH]PLHQQH=PLHQQHORNDOQHVÈSU]HFKRZ\ZDQH
ZSDPLÚFLW\ONRZWUDNFLHZ\NRQ\ZDQLDIXQNFMLZNWöUHMMH]DGHNODURZDQR
UTWORZENIE ZMIENNEJ W KODZIE
KOLIZJE NAZW
.DĝGDGHNODURZDQD]PLHQQDZ\PDJDSHZQHM
LORĂFLSDPLÚFL,PZLÚFHM]PLHQQ\FKPXVLE\Ê
SU]HFKRZ\ZDQ\FKSU]H]SU]HJOÈGDUNÚLQWHUQHWRZÈW\PZLÚFHMSDPLÚFLZ\PDJDZ\NRQDQLH
GDQHJRVNU\SWX6NU\SW\Z\PDJDMÈFHGXĝHMLORĂFL
SDPLÚFLPRJÈG]LDïDÊZROQLHMFRSU]HNïDGDVLÚQD
Z\GïXĝHQLHF]DVXG]LHODQLDRGSRZLHG]LXĝ\WNRZQLNRZLSU]H]VWURQÚLQWHUQHWRZÈ
%\ÊPRĝHXZDĝDV]ĝHXQLNQLHV]NRQĠLNWXQD]Z
ERSU]HFLHĝznaszZV]\VWNLHXĝ\ZDQHQD]Z\
]PLHQQ\FK-HGQDNZZLHOXZLWU\QDFKLQWHUQHWRZ\FKVÈZ\NRU]\VW\ZDQHVNU\SW\WZRU]RQHSU]H]
UöĝQHRVRE\-HĝHOLQDVWURQLH+70/]DVWRVRZDQR
GZDVNU\SW\-DYD6FULSWLREDWZRU]È]PLHQQÈ
JOREDOQÈRWDNLHMVDPHMQD]ZLHWRPRJÈVLÚ
SRMDZLÊEïÚG\:HěSRGXZDJÚVWURQÚXĝ\ZDMÈFÈ
GZöFKSRQLĝV]\FKVNU\SWöZ
var
var
var
var
width height isWall WUXH
canPaint WUXH
=PLHQQDWRWDNQDSUDZGÚRGQLHVLHQLHGRZDUWRĂFL
SU]HFKRZ\ZDQHMZSDPLÚFL7DVDPDZDUWRĂÊ
PRĝHE\ÊXĝ\ZDQDSU]H]ZLHOH]PLHQQ\FK
var width = 15
var height = 30
var isWall = true
var canPaint = true
true
:SRZ\ĝV]\PIUDJPHQFLHNRGXZDUWRĂFL]PLHQQ\FKwidthLheightVÈSU]HFKRZ\ZDQHRGG]LHOQLHDOHWDVDPDZDUWRĂÊtruePRĝHE\ÊXĝ\ZDQD
]DUöZQRSU]H] isWallMDNLcanPaint
2EOLF]HQLHZLHONRĂFLG]LDïNL
function showPlotSize(){
var width var height UHWXUQij3ROH ZLGWK KHLJKW }
var msg = showArea()
2EOLF]HQLHZLHONRĂFLRJURGX
function showGardenSize() {
var width var height UHWXUQZLGWK KHLJKW
}
var msg VKRZ*DUGHQ6L]H =PLHQQHZ]DNUHVLHJOREDOQ\PZ\VWÚSXMH
NRQĠLNWQD]Z
=PLHQQHZ]DNUHVLHIXQNFMLPLÚG]\QLPLQLH
Z\VWÚSXMHNRQĠLNWQD]Z
FUNKCJE, METODY I OBIEKTY CO TO JEST OBIEKT?
2ELHNWWR]JUXSRZDQ\]ELöU]PLHQQ\FKLIXQNFMLSU]H]QDF]RQ\GRXWZRU]HQLD
PRGHOXOXEF]HJRNROZLHNLQQHJRFRMHVW]QDQHZĂZLHFLHU]HF]\ZLVW\P
:RELHNFLH]PLHQQHLIXQNFMHSU]\ELHUDMÈQRZHQD]Z\
W OBIEKCIE ZMIENNE
STAJĄ SIĘ WŁAŚCIWOŚCIAMI
W OBIEKCIE FUNKCJE
STAJĄ SIĘ METODAMI
-HĝHOL]PLHQQDMHVWF]ÚĂFLÈRELHNWXWRMHMQD]ZD
MHVWZïDĂFLZRĂFLÈ:ïDĂFLZRĂFLGRVWDUF]DMÈ
LQIRUPDFMHRRELHNFLHQDSU]\NïDGPRĝHWRE\Ê
QD]ZDKRWHOXOXEOLF]EDGRVWÚSQ\FKZQLPSRNRL
.DĝG\KRWHOPRĝHPLHÊLQQÈQD]ZÚLLQQÈOLF]EÚ
GRVWÚSQ\FKSRNRL
-HĝHOLIXQNFMDMHVWF]ÚĂFLÈRELHNWXWRQD]\ZDVLÚMÈ
PHWRGÈ0HWRG\SU]HGVWDZLDMÈ]DGDQLDSRZLÈ]DQH
]GDQ\PRELHNWHP1DSU]\NïDGOLF]EÚZROQ\FK
SRNRLPRĝQDVSUDZG]LÊSU]H]RGMÚFLHOLF]E\
]DUH]HUZRZDQ\FKSRNRLRGOLF]E\ZV]\VWNLFKSRNRL
GRVWÚSQ\FKZGDQ\PKRWHOX
FUNKCJE, METODY I OBIEKTY
3RND]DQ\SRQLĝHMRELHNWSU]HGVWDZLDKRWHO=DZLHUDSLÚÊZïDĂFLZRĂFLLMHGQÈ
PHWRGÚ,QIRUPDFMHRRELHNFLHVÈXMÚWHZQDZLDVNODPURZ\LSU]HFKRZ\ZDQH
Z]PLHQQHMRQD]ZLHhotel
3RGREQLHMDN]PLHQQH
LQD]ZDQHIXQNFMHZïDĂFLZRĂFL
LPHWRG\SRVLDGDMÈQD]ZÚRUD]
ZDUWRĂÊ:RELHNFLHZVSRPQLDQDQD]ZDWRNOXF]
2ELHNWQLHPRĝH]DZLHUDÊ
GZöFKNOXF]\RWDNLHMVDPHM
QD]ZLH:\QLNDWR]IDNWX
ĝHNOXF]HVÈXĝ\ZDQHZFHOX
X]\VNDQLDGRVWÚSXGRRGSRZLDGDMÈF\FKLPZDUWRĂFL
:DUWRĂFLÈZïDĂFLZRĂFLPRĝH
E\ÊFLÈJWHNVWRZ\OLF]ED
ZDUWRĂÊERRORZVNDWDEOLFDOXE
QDZHWLQQ\RELHNW:DUWRĂFLÈ
PHWRG\]DZV]HMHVWIXQNFMD
var hotel = {
KLUCZ
WARTOŚĆ
name: ’Quay’
rooms: WŁAŚCIWOŚCI
booked: To są zmienne
gym: true
roomTypes: >ijWZLQijijGRXEOHijijVXLWHij@
checkAvailability: function() {
UHWXUQWKLVURRPVWKLVERRNHG
}
METODA
To jest funkcja
`
3RZ\ĝHMSU]HGVWDZLRQRRELHNWhotelZNWöU\P
]QDMG]LHV]QDVWÚSXMÈFHSDU\NOXF]ZDUWRĂÊ
:’$¥&,:2¥&,
./8&=
:$572¥m
name
rooms
booked
gym
roomTypes
FLÈJWHNVWRZ\
OLF]ED
OLF]ED
ZDUWRĂÊERRORZVND
WDEOLFD
3URJUDPLĂFLZ\NRU]\VWXMÈZLHOHSDUNOXF]ZDUWRĂÊ
ZNRG]LH+70/PDP\DWU\EXW\EÚGÈFHSDUDPL
NOXF]ZDUWRĂÊ
ZNRG]LH&66PDP\QD]Z\ZïDĂFLZRĂFLLLFK
ZDUWRĂFL
ľ
ľ
=NROHLZNRG]LH-DYD6FULSW
ľ]PLHQQDPDQD]ZÚLPRĝQDSU]\SLVDÊMHM
ZDUWRĂÊZSRVWDFLQDSU]\NïDGFLÈJXWHNVWRZHJROLF]E\OXEZDUWRĂFLERRORZVNLHM
WDEOLFDPDQD]ZÚLJUXSÚZDUWRĂFL SRV]F]HJöOQHHOHPHQW\ZWDEOLF\WRSDU\NOXF]ZDUWRĂÊ
SRQLHZDĝHOHPHQWPDQXPHULQGHNVXLSU]\SLVDQÈPXZDUWRĂÊ QD]ZDQHIXQNFMHPDMÈQD]ZÚLZDUWRĂÊ
ZSRVWDFL]ELRUXSROHFHñZ\NRQ\ZDQ\FKSR
Z\ZRïDQLXIXQNFML
RELHNWVNïDGDVLÚ]H]ELRUXSDUQD]ZDZDUWRĂÊ
FKRÊWXWDMQD]ZDMHVWRNUHĂODQDPLDQHP
NOXF]D checkAvailability() IXQNFMD
ľ
-DN]REDF]\V]QDNLONXNROHMQ\FKVWURQDFKWRMHVW
W\ONRMHGHQ]GRVWÚSQ\FKVSRVREöZWZRU]HQLD
RELHNWX
ľ
0(72'<
ľ
FUNKCJE, METODY I OBIEKTY
UTWORZENIE OBIEKTU —
NOTACJA LITERAŁU
1RWDFMDOLWHUDïXWRQDMïDWZLHMV]\LMHGQRF]HĂQLHQDMSRSXODUQLHMV]\
VSRVöEWZRU]HQLDRELHNWöZ ,VWQLHMHZLHOHVSRVREöZSR]ZDODMÈF\FK
QDWZRU]HQLHRELHNWöZ 2ELHNWWRQDZLDVNODPURZ\LMHJR]DZDUWRĂÊ
:SRQLĝV]\PSU]\NïDG]LHRELHNWMHVWSU]HFKRZ\ZDQ\Z]PLHQQHMRQD]ZLHhotelDZLÚF
RGZRïXMHP\VLÚGRQLHJRMDNRGRRELHNWXhotel
.OXF]RGZDUWRĂFLMHVWRGG]LHORQ\GZXNURSNLHP
1DWRPLDVWSRV]F]HJöOQHZïDĂFLZRĂFLLPHWRG\VÈ
UR]G]LHORQHSU]HFLQNDPL QLHGRW\F]\WRRVWDWQLHJR
HOHPHQWX KLUCZ
WARTOŚĆ
KLUCZ
var hotel = {
name: ’Quay’
rooms: booked: WŁAŚCIWOŚCI
checkAvailability: function() {
UHWXUQWKLVURRPVWKLVERRNHG
}
METODA
`
:PHWRG]LHcheckAvailability()PDP\VïRZR
NOXF]RZHthisNWöUHZVND]XMHĝHroomsLbooked
WRZïDĂFLZRĂFLdanego DQJthis RELHNWX
FUNKCJE, METODY I OBIEKTY
*G\NRQğJXUXMHV]ZïDĂFLZRĂÊMHMZDUWRĂFLWUDNWXM
WDNVDPRMDNZDUWRĂFLZSU]\SDGNX]PLHQQ\FK
2]QDF]DWRĝHFLÈJWHNVWRZ\WU]HEDXMÈÊZ]QDNL
F\WRZDQLDDWDEOLFÚZQDZLDVNZDGUDWRZ\
UZYSKANIE DOSTĘPU
DO OBIEKTU I NOTACJA
Z UŻYCIEM KROPKI
'RVWÚSGRZïDĂFLZRĂFLLPHWRGRELHNWXRGE\ZDVLÚ]DSRPRFÈQRWDFML
]Xĝ\FLHPNURSNL'RZïDĂFLZRĂFLPRĝQDX]\VNDÊGRVWÚSWDNĝH]DSRPRFÈ
QDZLDVXNZDGUDWRZHJR
$E\X]\VNDÊGRVWÚSGRZïDĂFLZRĂFLOXEPHWRG\
RELHNWXQDOHĝ\SRGDÊQD]ZÚRELHNWXNURSNÚ
DQDVWÚSQLHQD]ZÚLQWHUHVXMÈFHM&LÚZïDĂFLZRĂFL
OXEPHWRG\7RQRVLQD]ZÚQRWDFML]Xĝ\FLHP
NURSNL
OBIEKT
.URSNDMHVWRNUHĂODQDPLDQHPRSHUDWRUDHOHPHQWXVNïDGRZHJR3RGDQDSRSUDZHMVWURQLH
RSHUDWRUDZïDĂFLZRĂÊOXEPHWRGDMHVWHOHPHQWHP
VNïDGRZ\PQDWRPLDVWRELHNW]QDMGXMHVLÚSR
OHZHMVWURQLHRSHUDWRUD3RQLĝHMSU]HGVWDZLRQR
GZLH]PLHQQHXWZRU]RQHZFHOXSU]HFKRZ\ZDQLD
QD]Z\KRWHOXRUD]OLF]E\ZROQ\FKSRNRL
NAZWA WŁAŚCIWOŚCI
LUB METODY
var hotelName = hotel.name
var roomsFree = hotel.checkAvailability()
OPERATOR
ELEMENTU SKŁADOWEGO
'RVWÚSGRZïDĂFLZRĂFLRELHNWX DOHQLHMHJR
PHWRG PRĝQDX]\VNDÊWDNĝH]DSRPRFÈVNïDGQL
QDZLDVXNZDGUDWRZHJR
7\PUD]HPSRQD]ZLHRELHNWX]QDMGXMHVLÚQDZLDV
NZDGUDWRZ\ZNWöU\PXPLHV]F]DV]QD]ZÚ
ZïDĂFLZRĂFLGRNWöUHMFKFHV]X]\VNDÊGRVWÚS
var hotelName = hotel[’name’@
7HJRURG]DMXQRWDFMDMHVWQDMF]ÚĂFLHMXĝ\ZDQDJG\
ľQD]ZDZïDĂFLZRĂFLMHVWOLF]EÈ SRGZ]JOÚGHPWHFKQLF]Q\PWRMHVWGR]ZRORQHDOHRJöOQLHU]HF]ELRUÈF
QDOHĝ\XQLNDÊWDNLHJRUR]ZLÈ]DQLD ľ]PLHQQDMHVWXĝ\ZDQDZPLHMVFXQD]Z\ZïDĂFLZRĂFL SU]\NïDG]DVWRVRZDQLDWHMWHFKQLNL]REDF]\V]
ZUR]G]LDOH FUNKCJE, METODY I OBIEKTY UTWORZENIE OBIEKTU ZA
POMOCĄ NOTACJI LITERAŁU
1DSRF]ÈWNXSU]\NïDGX
QDVWÚSXMHXWZRU]HQLHRELHNWX]D
SRPRFÈQRWDFMLOLWHUDïX
2ELHNWQRVLQD]ZÚhotel
LSU]HGVWDZLDKRWHOQuay
]SRNRMDPL]NWöU\FK
]RVWDïR]DUH]HUZRZDQ\FK
1DVWÚSQLH]DZDUWRĂÊVWURQ\
]RVWDMHXDNWXDOQLRQDGDQ\PL
SRFKRG]ÈF\PL]RELHNWX1D]ZD
KRWHOXMHVWZ\ĂZLHWODQDSU]H]
X]\VNDQLHGRVWÚSXGRZïDĂFLZRĂFLRQD]ZLHnameQDWRPLDVW
OLF]EDZROQ\FKSRNRLMHVW
VSUDZG]DQD]DSRPRFÈPHWRG\
checkAvailability()
$E\X]\VNDÊGRVWÚSGR
ZïDĂFLZRĂFLRELHNWXSR
MHJRQD]ZLHSRGDQRNURSNÚ
DQDVWÚSQLHQD]ZÚLQWHUHVXMÈFHM
QDVZïDĂFLZRĂFL
3RGREQLHDE\Xĝ\ÊPHWRG\
Z\VWDUF]\SRGDÊQD]ZÚ
RELHNWXNURSNÚLPHWRGÚ
GRZ\ZRïDQLDQDSU]\NïDG
hotel.checkAvailability()
-HĝHOLPHWRGDZ\PDJD
SDUDPHWUöZPRĝQDMHSRGDÊ
ZQDZLDVLH SRGREQLHMDN
SU]HND]\ZDQHVÈDUJXPHQW\
GRIXQNFML FUNKCJE, METODY I OBIEKTY
c3/js/object-literal.js
JAVASCRIPT
var hotel = {
QDPHij4XD\ij
URRPV
ERRNHG
checkAvailability: function() {
UHWXUQWKLVURRPVWKLVERRNHG
}
`
YDUHO1DPH GRFXPHQWJHW(OHPHQW%\,G ijKRWHO1DPHij HO1DPHWH[W&RQWHQW KRWHOQDPH
YDUHO5RRPV GRFXPHQWJHW(OHPHQW%\,G ijURRPVij HO5RRPVWH[W&RQWHQW KRWHOFKHFN$YDLODELOLW\ WYNIK
UTWORZENIE DALSZYCH
OBIEKTÓW ZA POMOCĄ
NOTACJI LITERAŁU
JAVASCRIPT
FMVREMHFWOLWHUDOMV
var hotel = {
QDPHij3DUNij
URRPV
ERRNHG
checkAvailability: function() {
UHWXUQWKLVURRPVWKLVERRNHG
}
`
var elName = document.
JHW(OHPHQW%\,G ijKRWHO1DPHij HO1DPHWH[W&RQWHQW KRWHOQDPH
var elRooms = document.
JHW(OHPHQW%\,G ijURRPVij elRooms.textContent = hotel.
FKHFN$YDLODELOLW\ WYNIK
1DWHMVWURQLHWZRU]\P\NROHMQ\RELHNW
-HJRQD]ZDWRUöZQLHĝhotelDOHW\PUD]HP
PRGHOSU]HGVWDZLDKRWHO]XSHïQLHLQQ\
:W\PPRPHQFLHZ\REUDěVRELHLQQÈVWURQÚ
ZWHMVDPHMZLWU\QLHLQWHUQHWRZHMSRĂZLÚFRQHMSRGUöĝRP
+RWHO3DUNMHVWZLÚNV]\PDSRNRL
]NWöU\FK]RVWDïR]DUH]HUZRZDQ\FK
:NRG]LH]PLHQLï\VLÚMHG\QLHZDUWRĂFL
SRV]F]HJöOQ\FKZïDĂFLZRĂFLRELHNWXhotel
ľQD]ZDKRWHOX
ľOLF]EDSRNRL
ľOLF]ED]DUH]HUZRZDQ\FKSRNRL
3R]RVWDïDF]ÚĂÊVWURQ\G]LDïDZGRNïDGQLH
WDNLVDPVSRVöE1D]ZDKRWHOXMHVWZ\ĂZLHWODQD]Xĝ\FLHPWHJRVDPHJRNRGX0HWRGD
checkAvailability()UöZQLHĝQLHXOHJD
]PLDQLHLMHVWZ\ZRï\ZDQDZGRNïDGQLHWHQ
VDPVSRVöE
-HĝHOLZLWU\QDLQWHUQHWRZD]DZLHUDLQIRUPDFMHRKRWHOLZWHG\MHG\Q\P]PLHQQ\P
DVSHNWHPEÚGÈZDUWRĂFLWU]HFKZ\PLHQLRQ\FKZïDĂFLZRĂFLRELHNWX3RQLHZDĝPRGHO
KRWHOXMHVWWZRU]RQ\QDSRGVWDZLHGDQ\FK
WHQVDPNRGPRĝHX]\VNDÊGRVWÚSGR
LQIRUPDFMLLZ\ĂZLHWOLÊMHGODNDĝGHJRKRWHOX
NWöUHJRGDQHVÈSU]HFKRZ\ZDQHZW\P
VDP\PPRGHOX
-HĝHOLPDV]GZDRELHNW\QDVWURQLHWZRU]\V]
MH]DSRPRFÈWHMVDPHMQRWDFMLDOHSU]HFKRZXMHV]Z]PLHQQ\FKRUöĝQ\FKQD]ZDFK
FUNKCJE, METODY I OBIEKTY
UTWORZENIE OBIEKTU
ZA POMOCĄ NOTACJI
Z UŻYCIEM KONSTRUKTORA
6ïRZRNOXF]RZHnewLNRQVWUXNWRURELHNWXSRZRGXMÈXWZRU]HQLHSXVWHJR
RELHNWX1DVWÚSQLHPRĝQDGRQLHJRGRGDÊZïDĂFLZRĂFLLPHWRG\
:SLHUZV]HMNROHMQRĂFLQDOHĝ\XWZRU]\ÊQRZ\
RELHNW]DSRPRFÈSRïÈF]HQLDVïRZDNOXF]RZHJR
newLIXQNFMLNRQVWUXNWRUDObject():\PLHQLRQD
IXQNFMDSR]RVWDMHF]ÚĂFLÈMÚ]\ND-DYD6FULSWLMHVW
Xĝ\ZDQDZFHOXWZRU]HQLDRELHNWöZ
var hotel QHZ2EMHFW
0DMÈFXWZRU]RQ\SXVW\RELHNWPRĝQDSU]\VWÈSLÊ
GRGRGDZDQLDZïDĂFLZRĂFLLPHWRG]DSRPRFÈ
QRWDFML]Xĝ\FLHPNURSNL.DĝGHSROHFHQLH
GRGDMÈFHZïDĂFLZRĂÊOXEPHWRGÚSRZLQQRNRñF]\Ê
VLÚĂUHGQLNLHP
OBIEKT
KLUCZ
WARTOŚĆ
hotel.name = ’Quay’
hotel.rooms = hotel.booked = WŁAŚCIWOŚCI
hotel.checkAvailability = function() {
UHWXUQWKLVURRPVWKLVERRNHG
}
METODA
3U]HGVWDZLRQÈVNïDGQLÚPRĝQDZ\NRU]\VWDÊ
ZFHOXGRGDQLDZïDĂFLZRĂFLLPHWRGGRGRZROQHJR
XWZRU]RQHJRRELHNWX QLH]DOHĝQLHRGWHJRMDND
QRWDFMD]RVWDïDXĝ\WDGRMHJRXWZRU]HQLD 8WZRU]HQLHSXVWHJRRELHNWX]DSRPRFÈQRWDFML
OLWHUDïXSU]HGVWDZLDVLÚQDVWÚSXMÈFR
var hotel = {}
3XVW\QDZLDVNODPURZ\R]QDF]DXWZRU]HQLH
SXVWHJRRELHNWX
FUNKCJE, METODY I OBIEKTY
UAKTUALNIENIE OBIEKTU
:FHOXXDNWXDOQLHQLDZDUWRĂFLZïDĂFLZRĂFLQDOHĝ\Z\NRU]\VWDÊQRWDFMÚ
]Xĝ\FLHPNURSNLOXEQDZLDVXNZDGUDWRZHJR7DNLHUR]ZLÈ]DQLHG]LDïD
ZRELHNWDFKXWZRU]RQ\FK]Z\NRU]\VWDQLHPQRWDFMLOLWHUDïXDWDNĝH
NRQVWUXNWRUD1DWRPLDVWZFHOXXVXQLÚFLDZïDĂFLZRĂFLWU]HEDXĝ\ÊVïRZD
NOXF]RZHJRdelete
:FHOXXDNWXDOQLHQLDZïDĂFLZRĂFLXĝ\MWHFKQLNL
NWöUÈSRND]DQRQDVWURQLHSROHZHMWHFKQLNDWD
SR]ZDODQDGRGDQLHZïDĂFLZRĂFLGRRELHNWX7\P
UD]HPZïDĂFLZRĂFLSU]\SLV]QRZÈZDUWRĂÊ
OBIEKT
-HĝHOLRELHNWQLHSRVLDGDZïDĂFLZRĂFLNWöUHM
ZDUWRĂÊSUöEXMHV]XDNWXDOQLÊWRGRRELHNWX
]RVWDQLHGRGDQDQRZDZïDĂFLZRĂÊ
NAZWA
WŁAŚCIWOŚCI
hotel . name = ’Park’
OPERATOR
ELEMENTU SKŁADOWEGO
,VWQLHMHUöZQLHĝPRĝOLZRĂÊXDNWXDOQLHQLDZïDĂFLZRĂFLRELHNWX DOHQLHPHWRG ]DSRPRFÈVNïDGQL
]Xĝ\FLHPQDZLDVXNZDGUDWRZHJR3RQD]ZLH
RELHNWXSRGDMHV]QDZLDVNZDGUDWRZ\ZNWöU\P
WU]HEDXPLHĂFLÊQD]ZÚZïDĂFLZRĂFLNWöUÈFKFHV]
]PRG\ğNRZDÊ
WARTOŚĆ
WŁAŚCIWOŚCI
1RZDZDUWRĂÊGODZïDĂFLZRĂFLMHVWSRGDZDQD
SRRSHUDWRU]HSU]\SLVDQLD:DUWRSU]\SRPQLHÊ
SRQRZQLHĝHMHĂOLZïDĂFLZRĂÊNWöUHMZDUWRĂÊ
SUöEXMHV]XDNWXDOQLÊQLHLVWQLHMHWR]RVWDQLH
GRGDQDGRRELHNWX
hotel[’name’] = ’Park’
'RXVXQLÚFLDZïDĂFLZRĂFLVïXĝ\VïRZRNOXF]RZH
deleteSRNWöU\PSRGDMHVLÚQD]ZÚRELHNWX
NURSNÚLQD]ZÚZïDĂFLZRĂFL
-HĝHOLFKFHV]W\ONRXVXQÈÊZDUWRĂÊZïDĂFLZRĂFL
SU]\SLV]MHMZDUWRĂÊZSRVWDFLSXVWHJRFLÈJX
WHNVWRZHJR
delete hotel.name
hotel.name ijij
FUNKCJE, METODY I OBIEKTY
UTWORZENIE WIELU OBIEKTÓW
— NOTACJA Z UŻYCIEM
KONSTRUKTORA
&]DVDPL]DFKRG]LSRWU]HEDDE\NLONDRELHNWöZSU]HGVWDZLDïRSRGREQH
U]HF]\.RQVWUXNWRURELHNWXPRĝHXĝ\ZDÊIXQNFMLZFKDUDNWHU]HV]DEORQX
GODWZRU]RQ\FKRELHNWöZ:SLHUZV]HMNROHMQRĂFLQDOHĝ\SU]\JRWRZDÊ
V]DEORQZUD]]ZïDĂFLZRĂFLDPLLPHWRGDPLRELHNWX
)XQNFMDRQD]ZLHHotel()EÚG]LHXĝ\WDMDNR
V]DEORQGODWZRU]HQLDQRZ\FKRELHNWöZSU]HGVWDZLDMÈF\FKKRWHOH3RGREQLHMDNZV]\VWNLHIXQNFMH
WDNĝHLWD]DZLHUDSROHFHQLD:RPDZLDQ\P
SU]\NïDG]LHSRZRGXMÈRQHGRGDQLHZïDĂFLZRĂFL
LPHWRGGRRELHNWX
2PDZLDQDIXQNFMDPDWU]\SDUDPHWU\]NWöU\FKNDĝG\SRZRGXMHSU]\SLVDQLHZDUWRĂFLGR
ZïDĂFLZRĂFLRELHNWX0HWRG\EÚGÈWDNLHVDPH
GODNDĝGHJRRELHNWXWZRU]RQHJR]DSRPRFÈWHM
IXQNFML
KLUCZ
WARTOŚĆ
function Hotel(nameroomsbooked) {
this.name = name
this.rooms = rooms
this.booked = booked
WŁAŚCIWOŚCI
this.checkAvailability = function() {
UHWXUQWKLVURRPVWKLVERRNHG
}
METODA
}
6ïRZRNOXF]RZHthisMHVWXĝ\ZDQH]DPLDVWQD]Z\
RELHNWXLZVND]XMHĝHZïDĂFLZRĂÊOXEPHWRGD
QDOHĝÈGRRELHNWXXWZRU]RQHJRSU]H]WÚIXQNFMÚ
.DĝGHSROHFHQLHRGSRZLHG]LDOQH]DXWZRU]HQLH
QRZHMZïDĂFLZRĂFLOXEPHWRG\ZW\PRELHNFLH
NRñF]\VLÚĂUHGQLNLHPDQLHSU]HFLQNLHPXĝ\ZDQ\PZVNïDGQLOLWHUDïX
FUNKCJE, METODY I OBIEKTY
1D]ZDIXQNFMLNRQVWUXNWRUD]Z\NOHUR]SRF]\QD
VLÚGXĝÈOLWHUÈ SU]HFLZLHñVWZRGRLQQ\FKIXQNFML
NWöU\FKQD]Z\]Z\NOHUR]SRF]\QDMÈVLÚRGPDïHM
OLWHU\ 'XĝDOLWHUDPDSRPöFSURJUDPLVWRPSDPLÚWDÊ
RNRQLHF]QRĂFLXĝ\FLDVïRZDNOXF]RZHJRnew
SRGF]DVWZRU]HQLDRELHNWX]DSRPRFÈWHMIXQNFML
SDWU]NROHMQDVWURQD =DSRPRFÈIXQNFMLNRQVWUXNWRUDWZRU]\V]HJ]HPSODU]HRELHNWX
6ïRZRNOXF]RZHnewSRNWöU\P]QDMGXMHVLÚZ\ZRïDQLHIXQNFML
R]QDF]DXWZRU]HQLHQRZHJRRELHNWX:ïDĂFLZRĂFLSRV]F]HJöOQ\FK
RELHNWöZVÈSRGDZDQHZSRVWDFLDUJXPHQWöZIXQNFML
3RQLĝHM]QDMGXMÈVLÚGZDRELHNW\SU]HGVWDZLDMÈFH
GZDKRWHOHFRR]QDF]DĝHRELHNW\PXV]È
PLHÊUöĝQHQD]Z\.LHG\]DSRPRFÈVïRZD
NOXF]RZHJRnewZ\ZRïXMHP\IXQNFMÚNRQVWUXNWRUD
]GHğQLRZDQÈSROHZHMVWURQLH GRFKRG]L
GRXWZRU]HQLDRELHNWX
OBIEKT
:WUDNFLHSRV]F]HJöOQ\FKZ\ZRïDñDUJXPHQW\
VÈUöĝQHSRQLHZDĝWRZïDĂFLZRĂFLWZRU]RQ\FK
RELHNWöZ2EDRELHNW\DXWRPDW\F]QLHRWU]\PXMÈ
WÚVDPÈPHWRGÚ]GHğQLRZDQÈZIXQNFML
NRQVWUXNWRUD
FUNKCJA KONSTRUKTORA
var quayHotel = new Hotel(’Quay’ var parkHotel = new Hotel(’Park’77 OPERATOR PRZYPISANIA SŁOWO
KLUCZOWE NEW
WARTOŚCI UŻYTE
WE WŁAŚCIWOŚCIACH
DANEGO OBIEKTU
3LHUZV]\RELHNWQRVLQD]ZÚquayHotel
1D]ZDKRWHOXWRQuayKRWHO]DZLHUDSRNRL
]NWöU\FK]RVWDïR]DUH]HUZRZDQ\FK
'UXJLRELHNWQRVLQD]ZÚparkHotel
1D]ZDKRWHOXWRParkKRWHO]DZLHUDSRNRL
]NWöU\FK]RVWDïR]DUH]HUZRZDQ\FK
1DZHWNLHG\ZLHOHRELHNWöZMHVWWZRU]RQ\FK]D
SRPRFÈWHMVDPHMIXQNFMLNRQVWUXNWRUDPHWRG\
SR]RVWDMÈWHVDPHSRQLHZDĝSR]ZDODMÈQD
XDNWXDOQLHQLHGDQ\FKSU]HFKRZ\ZDQ\FKZH
ZïDĂFLZRĂFLDFKOXEQDSU]HSURZDG]HQLHQDQLFK
REOLF]Hñ
3U]HGVWDZLRQÈWHFKQLNÚPRĝQDZ\NRU]\VWDÊMHĂOL
VNU\SW]DZLHUDEDUG]RVNRPSOLNRZDQHRELHNW\
NWöUHPXV]ÈE\ÊGRVWÚSQHDOHQLHNRQLHF]QLHEÚGÈ
Xĝ\ZDQH2ELHNWMHVW]GHğQLRZDQ\ZIXQNFML
DOHEÚG]LHutworzonyW\ONRZWHG\JG\]DMG]LH
SRWU]HED
FUNKCJE, METODY I OBIEKTY
UTWORZENIE OBIEKTU
ZA POMOCĄ SKŁADNI
KONSTRUKTORA
:NRG]LHSRSUDZHMVWURQLH
QDVWÚSXMHXWZRU]HQLHSXVWHJR
RELHNWXRQD]ZLHhotel]D
SRPRFÈIXQNFMLNRQVWUXNWRUD
8WZRU]RQHPXRELHNWRZL]RVWDMÈ
SU]\SLVDQHWU]\ZïDĂFLZRĂFL
LPHWRGD
-HĝHOLRELHNWMXĝSRVLDGD
NWöUÈNROZLHN]W\FKZïDĂFLZRĂFLWRLFKZDUWRĂFL]RVWDQÈ
QDGSLVDQH $E\X]\VNDÊGRVWÚSGR
ZïDĂFLZRĂFLWHJRRELHNWX
PRĝQDZ\NRU]\VWDÊVNïDGQLÚ
]Xĝ\FLHPRELHNWXSRGREQLHMDN
ZSU]\SDGNXLQQHJRGRZROQHJR
RELHNWX
$E\QDSU]\NïDGSREUDÊQD]ZÚ
KRWHOXPRĝQDXĝ\ÊZ\ZRïDQLD
hotel.name
3RGREQLHZFHOXXĝ\FLDPHWRG\
QDOHĝ\SRGDÊQD]ZÚRELHNWX
DQDVWÚSQLHQD]ZÚPHWRG\
hotel.checkAvailability()
FUNKCJE, METODY I OBIEKTY
c3/js/object-constructor.js
JAVASCRIPT
YDUKRWHO QHZ2EMHFW KRWHOQDPH ij3DUNij
KRWHOURRPV KRWHOERRNHG hotel.checkAvailability = function() {
UHWXUQWKLVURRPVWKLVERRNHG
`
YDUHO1DPH GRFXPHQWJHW(OHPHQW%\,G ijKRWHO1DPHij HO1DPHWH[W&RQWHQW KRWHOQDPH
YDUHO5RRPV GRFXPHQWJHW(OHPHQW%\,G ijURRPVij HO5RRPVWH[W&RQWHQW KRWHOFKHFN$YDLODELOLW\ WYNIK
UTWORZENIE OBIEKTU
I UZYSKANIE DOSTĘPU
DO NIEGO Z WYKORZYSTANIEM
SKŁADNI KONSTRUKTORA
JAVASCRIPT
c03/js/multiple-objects.js
IXQFWLRQ+RWHO QDPHURRPVERRNHG ^
WKLVQDPH QDPH
WKLVURRPV URRPV
WKLVERRNHG ERRNHG
this.checkAvailability = function() {
UHWXUQWKLVURRPVWKLVERRNHG
`
}
)XQNFMDNRQVWUXNWRUDGHğQLXMHV]DEORQ
GODKRWHOL3öěQLHMQDVWÚSXMHXWZRU]HQLHGZöFKUöĝQ\FKHJ]HPSODU]\
RELHNWXW\SXhotel3LHUZV]\SU]HGVWDZLDKRWHO4XD\QDWRPLDVWGUXJL
GRW\F]\KRWHOX3DUN
YDUTXD\+RWHO QHZ+RWHO ij4XD\ij YDUSDUN+RWHO QHZ+RWHO ij3DUNij var details1 = ’pokoje w hotelu ’ +
TXD\+RWHOQDPHijij
GHWDLOV TXD\+RWHOFKHFN$YDLODELOLW\
var elHotel1 = document.
JHW(OHPHQW%\,G ijKRWHOij HO+RWHOWH[W&RQWHQW GHWDLOV
YDUGHWDLOV ijSRNRMHZKRWHOXij
SDUN+RWHOQDPHijij
GHWDLOV SDUN+RWHOFKHFN$YDLODELOLW\
YDUHO+RWHO GRFXPHQW
JHW(OHPHQW%\,G ijKRWHOij HO+RWHOWH[W&RQWHQW GHWDLOV
WYNIK
$E\MHV]F]HZ\UDěQLHMSRND]DÊLGHÚ
XWZRU]HQLDZLHOXRELHNWöZQDWHMVDPHMVWURQLHSU]HGVWDZLRQRWXSU]\NïDG
Z\ĂZLHWODMÈF\LQIRUPDFMHRSRNRMDFK
GRVWÚSQ\FKZGZöFKKRWHODFK
0DMÈFXWZRU]RQHHJ]HPSODU]H
RELHNWöZPRĝQDX]\VNDÊGRVWÚSGR
LFKZïDĂFLZRĂFLLPHWRG]DSRPRFÈWHM
VDPHMQRWDFML]Xĝ\FLHPNURSNLNWöUD
MHVWVWRVRZDQDZLQQ\FKRELHNWDFK
:RPDZLDQ\PSU]\NïDG]LHGDQH
SRFKRG]ÈFH]REXRELHNWöZ]RVWDï\
XPLHV]F]RQHQDVWURQLH .RG+70/
Xĝ\ZDQ\ZW\PSU]\NïDG]LHXOHJïQLHFR
]PLDQLHDE\Z\ĂZLHWODÊLQIRUPDFMH
RGUXJLPKRWHOX :SU]\SDGNXNDĝGHJRKRWHOXQDVWÚSXMHXWZRU]HQLH]PLHQQHMSU]HFKRZXMÈFHMFLÈJWHNVWRZ\Pokoje w hotelu,
VSDFMÚLQD]ZÚKRWHOX
:NROHMQ\PZLHUV]XGR]PLHQQHM
ZVWDZLDQDMHVWOLF]EDZROQ\FKSRNRL
2SHUDWRU+=]RVWDïXĝ\W\ZFHOX
GRGDQLD]DZDUWRĂFLGRLVWQLHMÈFHM
]PLHQQHM FUNKCJE, METODY I OBIEKTY
DODAWANIE I USUWANIE
WŁAŚCIWOŚCI
3RXWZRU]HQLXRELHNWX ]Z\NRU]\VWDQLHP
QRWDFMLOLWHUDïXOXENRQVWUXNWRUD PRĝQD
SU]\VWÈSLÊGRGRGDZDQLDGRQLHJRQRZ\FK
ZïDĂFLZRĂFL
2GE\ZDVLÚWR]]DVWRVRZDQLHPVNïDGQL
]NURSNÈMDNSRND]DQRZSRGUR]G]LDOH
ķ8]\VNDQLHGRVWÚSXGRRELHNWXLQRWDFMD
]Xĝ\FLHPNURSNLĵSRGF]DVGRGDZDQLD
ZïDĂFLZRĂFLGRRELHNWX
:RPDZLDQ\PSU]\NïDG]LHPRĝHV]
]REDF]\ÊĝHHJ]HPSODU]RELHNWXhotel
]RVWDïXWZRU]RQ\]DSRPRFÈQRWDFML
OLWHUDïXRELHNWX
2ELHNWhotelRWU]\PXMHGZLHGRGDWNRZH
ZïDĂFLZRĂFLLQIRUPXMÈFHRZ\SRVDĝHQLXKRWHOXZVDOÚGRÊZLF]HñRUD]
EDVHQ:VSRPQLDQ\PZïDĂFLZRĂFLRP
VÈSU]\SLVDQHZDUWRĂFLERRORZVNLH
(trueOXEfalse 3RGRGDQLXNROHMQ\FKZïDĂFLZRĂFLGR
RELHNWXPRĝQDX]\VNDÊGRQLFKGRVWÚS
ZGRNïDGQLHWDNLVDPVSRVöEMDNGR
ZV]HONLFKLQQ\FKRELHNWöZLZïDĂFLZRĂFL
:RPDZLDQ\PSU]\NïDG]LHLFKZDUWRĂFL
VÈXĝ\ZDQHGRXDNWXDOQLHQLDDWU\EXWX
classZRGSRZLHGQLFKHOHPHQWDFKZFHOX
Z\ĂZLHWOHQLDķSWDV]NDĵOXENU]\ĝ\ND
c3/js/adding-and-removing-properties.js
JAVASCRIPT
var hotel = {
QDPHij3DUNij
URRPV
ERRNHG
`
KRWHOJ\P WUXH
KRWHOSRRO IDOVH
GHOHWHKRWHOERRNHG
var elName = document.
JHW(OHPHQW%\,G ijKRWHO1DPHij HO1DPHWH[W&RQWHQW KRWHOQDPH
YDUHO3RRO GRFXPHQWJHW(OHPHQW%\,G ijSRROij HO3RROFODVV1DPH ij%DVHQijKRWHOSRRO
YDUHO*\P GRFXPHQWJHW(OHPHQW%\,G ijJ\Pij HO*\PFODVV1DPH ij6LïRZQLDijKRWHOJ\P
WYNIK
$E\XVXQÈÊZïDĂFLZRĂÊQDOHĝ\Xĝ\Ê
VïRZDNOXF]RZHJRdeleteDQDVWÚSQLH]D
SRPRFÈVNïDGQL]Xĝ\FLHPNURSNLZVND]DÊ
ZïDĂFLZRĂÊOXEPHWRGÚSU]H]QDF]RQÈGR
XVXQLÚFLD]RELHNWX
:RPDZLDQ\PSU]\NïDG]LH]RELHNWX
XVXQLÚWRZïDĂFLZRĂÊbooked
FUNKCJE, METODY I OBIEKTY
-HĝHOLRELHNWMHVWWZRU]RQ\]DSRPRFÈIXQNFMLNRQVWUXNWRUD
WDVNïDGQLDSRZRGXMHGRGDQLHOXEXVXQLÚFLHZïDĂFLZRĂFL
]W\ONRMHGQHJRHJ]HPSODU]DRELHNWöZ DQLHZV]\VWNLFK
RELHNWöZXWZRU]RQ\FK]DSRPRFÈGDQHMIXQNFML PRZYPOMNIENIE SPOSOBÓW
TWORZENIA OBIEKTÓW
UTWORZENIE OBIEKTU, A NASTĘPNIE DODANIE WŁAŚCIWOŚCI I METOD
:REXSU]HGVWDZLRQ\FKSRQLĝHMSU]\NïDGDFK
RELHNWMHVWWZRU]RQ\ZSLHUZV]\PZLHUV]XNRGX
1DVWÚSQLHGRGDZDQHVÈZïDĂFLZRĂFLLPHWRG\
*G\RELHNW]RVWDQLHXWZRU]RQ\VNïDGQLDSR]ZDODMÈFDQDGRGDZDQLHOXEXVXZDQLHZïDĂFLZRĂFL
LPHWRG]GDQHJRRELHNWXSR]RVWDMHWDNDVDPD
NOTACJA LITERAŁU
NOTACJA KONSTRUKTORA OBIEKTU
var hotel = {}
YDUKRWHO QHZ2EMHFW KRWHOQDPH ij4XD\ij
KRWHOURRPV KRWHOERRNHG hotel.checkAvailability = function() {
UHWXUQWKLVURRPVWKLVERRNHG
`
KRWHOQDPH ij4XD\ij
KRWHOURRPV KRWHOERRNHG hotel.checkAvailability = function() {
UHWXUQWKLVURRPVWKLVERRNHG
`
UTWORZENIE OBIEKTU WRAZ Z WŁAŚCIWOŚCIAMI I METODAMI
NOTACJA LITERAŁU
NOTACJA KONSTRUKTORA OBIEKTU
3U]HFLQHNUR]G]LHODSRV]F]HJöOQHSDU\
NOXF]ZDUWRĂÊ1DWRPLDVWPLÚG]\NDĝG\P
NOXF]HPLMHJRZDUWRĂFLÈ]QDMGXMHVLÚGZXNURSHN
)XQNFMDPRĝHE\ÊZ\NRU]\VWDQDGRXWZRU]HQLD
ZLHOXRELHNWöZ6ïRZRNOXF]RZHthis]RVWDïR
Xĝ\WH]DPLDVWQD]Z\RELHNWX
var hotel = {
QDPHij4XD\ij
URRPV
ERRNHG
checkAvailability: function() {
UHWXUQWKLVURRPVWKLVERRNHG
}
`
IXQFWLRQ+RWHO QDPHURRPVERRNHG ^
WKLVQDPH QDPH
WKLVURRPV URRPV
WKLVERRNHG ERRNHG
this.checkAvailability = function() {
UHWXUQWKLVURRPVWKLVERRNHG
`
}
YDUTXD\+RWHO QHZ+RWHO ij4XD\ij YDUSDUN+RWHO QHZ+RWHO ij3DUNij FUNKCJE, METODY I OBIEKTY
SŁOWO KLUCZOWE THIS
6ïRZRNOXF]RZHthisMHVWSRZV]HFKQLHXĝ\ZDQHZIXQNFMDFK
LRELHNWDFK0LHMVFH]DGHNODURZDQLDIXQNFMLPDZSï\ZQD]QDF]HQLH
this7RVïRZRNOXF]RZH]DZV]HRGZRïXMHVLÚGRMHGQHJRRELHNWX
QDMF]ÚĂFLHMWHJRZNWöU\PRSHUXMHIXQNFMD
FUNKCJA W ZAKRESIE GLOBALNYM
ZMIENNE GLOBALNE
.LHG\IXQNFMDMHVWXWZRU]RQDQDQDMZ\ĝV]\P
SR]LRPLHVNU\SWX WR]QDF]\QLHZHZQÈWU]
LQQHJRRELHNWXOXEIXQNFML WR]QDMGXMHVLÚ
Z]DNUHVLHJOREDOQ\PLQDF]HM]ZDQ\P
NRQWHNVWHPJOREDOQ\P
:V]\VWNLH]PLHQQHJOREDOQHUöZQLHĝVWDMÈVLÚ
ZïDĂFLZRĂFLDPLRELHNWXwindow.LHG\IXQNFMD
G]LDïDZNRQWHNĂFLHJOREDOQ\P]DSRPRFÈRELHNWX
windowPRĝQDX]\VNDÊGRVWÚSGR]PLHQQ\FK
JOREDOQ\FKDWDNĝHSR]RVWDï\FKZïDĂFLZRĂFL
Z\PLHQLRQHJRRELHNWX
'RP\ĂOQLHRELHNWHPZNRQWHNĂFLHJOREDOQ\P
MHVWwindowZLÚFXĝ\FLHVïRZDNOXF]RZHJRthis
ZHZQÈWU]IXQNFMLZNRQWHNĂFLHJOREDOQ\PRGQRVL
VLÚGRRELHNWXwindow
3RQLĝHMSU]HGVWDZLRQRIXQNFMÚshowWidth()
G]LDïDMÈFÈZ]DNUHVLHJOREDOQ\P3ROHFHQLH
this.widthRGZRïXMHVLÚGR]PLHQQHMwidth
:SRQLĝV]\PIUDJPHQFLHNRGXVïRZRNOXF]RZH
this]RVWDïRXĝ\WHZFHOX]ZUöFHQLDZïDĂFLZRĂFL
RELHNWRZLwindow SU]HGVWDZLRQHWXWDMZïDĂFLZRĂFL]REDF]\V]]QöZZSRGUR]G]LDOHķ2ELHNWRZ\PRGHOSU]HJOÈGDUNLLQWHUQHWRZHMĽRELHNW
ZLQGRZĵ var width = 600
YDUVKDSH ^ZLGWK`
function windowSize() {
YDUZLGWK WKLVLQQHU:LGWK
YDUKHLJKW WKLVLQQHU+HLJKW
UHWXUQ>KHLJKWZLGWK@
}
VKRZ:LGWK :WOHVïRZRNOXF]RZHthisMHVWRGQLHVLHQLHP
GRRELHNWXZNWöU\P]RVWDïDXWZRU]RQDGDQD
IXQNFMD
FUNKCJE, METODY I OBIEKTY
var showWidth = function() {
document.write(this.width `
3U]HGVWDZLRQDSRZ\ĝHMIXQNFMDZ\ĂZLHWOLQD
VWURQLHZDUWRĂÊ600 Xĝ\ZDMÈFGRWHJRPHWRG\
write()RELHNWXdocument -DNPRĝHV]]REDF]\Ê]QDF]HQLHthis]PLHQLDVLÚ
Z]DOHĝQRĂFLRGV\WXDFML1LHSU]HMPXMVLÚMHĂOLQLH
ZV]\VWNRSU]HGVWDZLRQHQDW\FKGZöFKVWURQDFK
MHVWRGUD]XMDVQH.LHG\]DF]QLHV]WZRU]\Ê
IXQNFMHLRELHNW\]DSUH]HQWRZDQHWXWDMNRQFHSFMH
VWDQÈVLÚ]UR]XPLDïH-HĝHOLthisQLH]ZUDFD
RF]HNLZDQHMZDUWRĂFLLQIRUPDFMHSU]HGVWDZLRQH
WXWDMPRJÈRND]DÊVLÚSRPRFQHZ]QDOH]LHQLX
ZïDĂFLZHJRUR]ZLÈ]DQLD
:DUWRMHV]F]HZVSRPQLHÊRMHGQ\PVFHQDULXV]X
Ľ]DJQLHĝGĝHQLXIXQNFMLZHZQÈWU]LQQHMIXQNFML
7DNDV\WXDFMD]GDU]DVLÚZ]QDF]QLHEDUG]LHM
VNRPSOLNRZDQ\FKVNU\SWDFKDOHZöZF]DV
ZDUWRĂÊthisPRĝHVLÚ]PLHQLDÊ Z]DOHĝQRĂFLRG
Xĝ\ZDQHMSU]HJOÈGDUNLLQWHUQHWRZHM 3RWHQFMDOQ\P
UR]ZLÈ]DQLHPMHVWSU]HFKRZ\ZDQLHZDUWRĂFL
thisZ]PLHQQHMXWZRU]RQHMZSLHUZV]HMIXQNFML
DQDVWÚSQLHXĝ\FLHZIXQNFMLSRWRPQHMQD]Z\WHM
]PLHQQHM]DPLDVWthis
METODA OBIEKTU
FUNKCJA WYRAŻENIA JAKO METODA
.LHG\IXQNFMDMHVWGHğQLRZDQDZHZQÈWU]RELHNWX
VWDMHVLÚPHWRGÈ:SU]\SDGNXPHWRG\this
RGQRVLVLÚGRRELHNWX]DZLHUDMÈFHJRWÚPHWRGÚ
-HĝHOLQD]ZDQDIXQNFMD]RVWDQLH]GHğQLRZDQD
Z]DNUHVLHJOREDOQ\PDQDVWÚSQLHXĝ\WDMDNR
PHWRGDRELHNWXWRthisRGQRVLVLÚGRRELHNWX
ZNWöU\P]QDMGXMHVLÚPHWRGD
:SU]HGVWDZLRQ\PSRQLĝHMSU]\NïDG]LHPHWRGD
getArea()MHVW]GHğQLRZDQDZHZQÈWU]RELHNWX
shapeDZLÚFthisRGQRVLVLÚGRRELHNWXshape
]DZLHUDMÈFHJRWÚPHWRGÚ
var shape = {
width: 600
height: getArea: function() {
return this.width * this.height
}
`
:NROHMQ\PSU]\NïDG]LHZ\NRU]\VWXMHP\WÚVDPÈ
IXQNFMÚZ\UDĝHQLDshowWidth()FRSRND]DQD
QDVWURQLHSROHZHMDOHSU]\SLVDQDMDNRPHWRGD
RELHNWX
YDUZLGWK var shape = {width: 300`
var showWidth = function() {
document.write(this.width `
3RQLHZDĝVïRZRNOXF]RZHthisRGZRïXMHVLÚGR
RELHNWXshapeRGSRZLDGDSRQLĝV]HPXSROHFHQLX
VKDSHJHW:LGWK VKRZ:LGWK
VKDSHJHW:LGWK UHWXUQVKDSHZLGWK VKDSHKHLJKW
2VWDWQLZLHUV]ZVND]XMHĝHIXQNFMDshowWidth()
MHVWXĝ\WDMDNRPHWRGDRELHNWXshape1D]ZD
PHWRG\MHVWQLHFRLQQDgetWidth()
-HĝHOLWZRU]\V]ZLHOHRELHNWöZ]DSRPRFÈ
NRQVWUXNWRUDRELHNWX DSRV]F]HJöOQHNV]WDïW\
PDMÈUöĝQHZ\PLDU\ WRthisRGZRïXMHVLÚGR
SRV]F]HJöOQ\FKHJ]HPSODU]\QRZRWZRU]RQ\FK
RELHNWöZ3RZ\ZRïDQLXPHWRG\getArea()
QDVWÈSLREOLF]HQLHZ\PLDUöZZNRQNUHWQ\P
HJ]HPSODU]XRELHNWX
3RZ\ZRïDQLXPHWRG\getWidth()QDZHWSRPLPR
Xĝ\FLDIXQNFMLshowWidth()VïöZNRthisRGZRïXMH
VLÚGRRELHNWXshapeDQLHNRQWHNVWXJOREDOQHJR
(this.widthRGZRïXMHVLÚGRZïDĂFLZRĂFLwidth
RELHNWXshape 'ODWHJRWHĝQDVWURQLH]RVWDQLH
Z\ĂZLHWORQDZDUWRĂÊ300
FUNKCJE, METODY I OBIEKTY PRZYPOMNIENIE SPOSOBÓW
PRZECHOWYWANIA DANYCH
:MÚ]\NX-DYD6FULSWGDQHVÈSU]HGVWDZLDQHZSRVWDFLSDUQD]ZDZDUWRĂÊ
$E\]RUJDQL]RZDÊGDQHPRĝQDXĝ\ÊWDEOLF\OXERELHNWXLJUXSRZDÊ]ELöU
SRZLÈ]DQ\FK]HVREÈZDUWRĂFL:WDEOLFDFKLRELHNWDFKQD]ZDMHVWRNUHĂODQD
UöZQLHĝPLDQHPNOXF]D
ZMIENNE
TABLICE
=PLHQQDPDW\ONRMHGHQNOXF] VZRMÈQD]ZÚ RUD]
MHGQÈZDUWRĂÊ
7DEOLFHPRJÈSU]HFKRZ\ZDÊZLHOHHOHPHQWöZ
LQIRUPDFML3RV]F]HJöOQHHOHPHQW\VÈUR]G]LHORQH
SU]HFLQNDPL.ROHMQRĂÊZDUWRĂFLPD]QDF]HQLH
SRQLHZDĝNDĝGHPXHOHPHQWRZLWDEOLF\MHVW
SU]\SLVDQ\QXPHU QD]\ZDQ\LQGHNVHP 1D]Z\]PLHQQ\FKVÈRGG]LHORQHRGZDUWRĂFL
]QDNLHPUöZQRĂFL MHVWWRRSHUDWRUSU]\SLVDQLD YDUKRWHO ij4XD\ij
:DUWRĂFLZWDEOLF\VÈSRGDZDQHZQDZLDVLH
NZDGUDWRZ\PLUR]G]LHORQHSU]HFLQNDPL
$E\SREUDÊZDUWRĂÊ]PLHQQHMQDOHĝ\Xĝ\ÊMHM
QD]Z\
var hotels = [
ij4XD\ij
ij3DUNij
ij%HDFKij
’Bloomsbury’
]
3RQLĝV]HSROHFHQLHSRELHU]HZDUWRĂÊ4XD\
KRWHO
.LHG\]PLHQQD]RVWDïD]DGHNODURZDQD
DOHQLHSU]\SLVDQRMHMZDUWRĂFLWRZDUWRĂFLÈ
MHVWXQGHğQHG
-HĝHOLVïRZRNOXF]RZHvarQLH]RVWDQLHXĝ\WH
WR]PLHQQDEÚG]LH]DGHNODURZDQDZ]DNUHVLH
JOREDOQ\P ]DZV]HSRZLQLHQHĂNRU]\VWDÊ]WHJR
VïRZDNOXF]RZHJR .DĝG\HOHPHQWWDEOLF\PRĝQDSRWUDNWRZDÊMDNR
NROHMQÈSDUÚNOXF]ZDUWRĂÊ.OXF]MHVWQXPHUHP
LQGHNVXSRGF]DVJG\ZDUWRĂFLVÈSRGDQHQDOLĂFLH
UR]G]LHORQHMSU]HFLQNDPL
$E\SREUDÊHOHPHQWQDOHĝ\Xĝ\ÊMHJRLQGHNVX
3RQLĝV]HSROHFHQLHSRELHU]HZDUWRĂÊ3DUN
KRWHOV>@
-HĝHOLNOXF]MHVWOLF]EÈWRZFHOXSREUDQLD
ZDUWRĂFLNOXF]DWU]HEDJRXPLHĂFLÊZQDZLDVLH
NZDGUDWRZ\P
2JöOQLHU]HF]XMPXMÈFWDEOLFHWRMHG\QDNRQVWUXNFMDZNWöUHMNOXF]HEÚGÈOLF]EDPL
FUNKCJE, METODY I OBIEKTY
8ZDJDWRSU]\SRPQLHQLHGRW\F]\VSRVREöZ
SU]HFKRZ\ZDQLDGDQ\FK:WDEOLF\QLHPRĝQD
SU]HFKRZ\ZDÊUHJXïZVND]XMÈF\FKVSRVREX
Z\NRQDQLD]DGDQLD7HJRURG]DMXLQIRUPDFMHPRJÈ
E\ÊSU]HFKRZ\ZDQHZIXQNFMLOXEZPHWRG]LH
-HĝHOLGRVWÚSGRHOHPHQWöZFKFHV]X]\VNDÊ]DSRPRFÈQD]Z\ZïDĂFLZRĂFL
OXENOXF]DWRXĝ\MRELHNWX SDPLÚWDMĝHNDĝG\NOXF]ZRELHNFLHPXVLE\Ê
XQLNDOQ\ -HĝHOLNROHMQRĂÊHOHPHQWöZPD]QDF]HQLHĽXĝ\MWDEOLF\
POSZCZEGÓLNE OBIEKTY
WIELE OBIEKTÓW
2ELHNW\SU]HFKRZXMÈSDU\NOXF]ZDUWRĂÊ0RJÈWR
E\ÊZïDĂFLZRĂFL ]PLHQQH OXEPHWRG\ IXQNFMH .LHG\]DFKRG]LSRWU]HEDXWZRU]HQLDZLHOXRELHNWöZQDWHMVDPHMVWURQLHQDOHĝ\Xĝ\ÊNRQVWUXNWRUD
ZFHOXGRVWDUF]HQLDV]DEORQXRELHNWX
:SU]HFLZLHñVWZLHGRWDEOLF\NROHMQRĂÊSDUQLHPD
]QDF]HQLD'RVWÚSGRZDUWRĂFLRGE\ZDVLÚSU]H]
MHMNOXF]
:ïDĂFLZRĂFLLPHWRG\RELHNWXVÈZQRWDFMLOLWHUDïX
RELHNWXSRGDZDQHZQDZLDVLHNODPURZ\P
var hotel = {
QDPHij4XD\ij
URRPV
`
IXQFWLRQ+RWHO QDPHURRPV ^
WKLVQDPH QDPH
WKLVURRPV URRPV
}
1DVWÚSQLHXWZRU]HQLHHJ]HPSODU]DRELHNWX
RGE\ZDVLÚ]DSRPRFÈVïRZDNOXF]RZHJRnew
LZ\ZRïDQLDIXQNFMLNRQVWUXNWRUD
YDUKRWHO QHZ+RWHO ij4XD\ij YDUKRWHO QHZ+RWHO ij3DUNij 2ELHNW\WZRU]RQH]DSRPRFÈQRWDFMLOLWHUDïXVÈ
GREUHZQDVWÚSXMÈF\FKV\WXDFMDFK
2ELHNW\WZRU]RQH]DSRPRFÈNRQVWUXNWRUDVÈ
GREUHZQDVWÚSXMÈF\FKV\WXDFMDFK
ľNLHG\SU]HFKRZXMHV]OXESU]HND]XMHV]GDQH
ľQDVWURQLHLQWHUQHWRZHMPDV]GXĝRRELHNWöZ
PLÚG]\DSOLNDFMDPL
ľZRELHNWDFKJOREDOQ\FKOXENRQğJXUDF\MQ\FK
NWöUHSRZRGXMÈXVWDZLHQLHLQIRUPDFMLGODGDQHM
VWURQ\
$E\X]\VNDÊGRVWÚSGRZïDĂFLZRĂFLOXEPHWRG
RELHNWXQDOHĝ\Z\NRU]\VWDÊQRWDFMÚ]Xĝ\FLHP
NURSNL
3RQLĝV]HSROHFHQLHSRELHU]HZDUWRĂÊ4XD\
KRWHOQDPH
FKDUDNWHU\]XMÈF\FKVLÚSRGREQÈIXQNFMRQDOQRĂFLÈ QDSU]\NïDGZLHOHSRND]öZVODMGöZ
RGWZDU]DF]\PXOWLPHGLDOQ\FKSRVWDFLZJU]H
LWG ľVNRPSOLNRZDQHRELHNW\PRJÈE\ÊQLHXĝ\ZDQH
ZNRG]LH
$E\X]\VNDÊGRVWÚSGRZïDĂFLZRĂFLOXEPHWRG
RELHNWXQDOHĝ\Z\NRU]\VWDÊQRWDFMÚ]Xĝ\FLHP
NURSNL
3RQLĝV]HSROHFHQLHSRELHU]HZDUWRĂÊ3DUN
KRWHOQDPH
FUNKCJE, METODY I OBIEKTY TABLICA JEST OBIEKTEM
7DEOLFDWRZU]HF]\ZLVWRĂFLVSHFMDOQHJRW\SXRELHNW3U]HFKRZXMH]ELöU
SRZLÈ]DQ\FK]HVREÈSDUNOXF]ZDUWRĂÊ SRGREQLHMDNZV]\VWNLHRELHNW\ DOHNOXF]HPSRV]F]HJöOQ\FKZDUWRĂFLMHVWQXPHULFKNOXF]\
-DNPRJïHĂ]REDF]\ÊZUR]G]LDOHZSRGUR]G]LDOHķ:DUWRĂFLZWDEOLF\ĵWDEOLFDPDZïDĂFLZRĂÊlength
ZVND]XMÈFÈOLF]EÚSU]HFKRZ\ZDQ\FKHOHPHQWöZ:UR]G]LDOHGRZLHV]VLÚĝHWDEOLFDPDWDNĝHZLHOH
Xĝ\WHF]Q\FKPHWRG
OBIEKT
WŁAŚCIWOŚĆ
OBIEKT
room1
420
room2
460
room3
230
room4
620
7XWDMNRV]WZ\QDMÚFLDSRNRMXKRWHORZHJRMHVW
SU]HFKRZ\ZDQ\ZRELHNFLH:SU]\NïDG]LH
Z\PLHQLRQRF]WHU\SRNRMHDNRV]WZ\QDMÚFLD
NDĝGHJR]QLFKMHVWZïDĂFLZRĂFLÈRELHNWX
costs = {
URRP
URRP
URRP
URRP
`
TABLICA
NUMER INDEKSU
WARTOŚĆ
0
420
1
460
2
230
3
620
FUNKCJE, METODY I OBIEKTY
7XWDMWHVDPHGDQHSU]HGVWDZLRQRZSRVWDFL
WDEOLF\=DPLDVWQD]ZZïDĂFLZRĂFLPDP\QXPHU\
LQGHNVöZ
FRVWV >@
TABLICA OBIEKTÓW I OBIEKTY
W TABLICY
,VWQLHMHPRĝOLZRĂÊïÈF]HQLDWDEOLFLRELHNWöZZFHOXXWZRU]HQLD
VNRPSOLNRZDQ\FKVWUXNWXUGDQ\FK7DEOLFDPRĝHSU]HFKRZ\ZDÊVHULÚ
RELHNWöZ LSDPLÚWDÊLFKNROHMQRĂÊ =NROHLRELHNWPRĝH]DZLHUDÊWDEOLFH
MDNRZDUWRĂFLMHJRZïDĂFLZRĂFL :RELHNFLHNROHMQRĂÊZ\VWÚSRZDQLDZïDĂFLZRĂFLQLHPD]QDF]HQLD1DWRPLDVWZWDEOLF\QXPHU\
LQGHNVöZZVND]XMÈNROHMQRĂÊZïDĂFLZRĂFL:LÚFHMSU]\NïDGöZWHJRURG]DMXVWUXNWXUGDQ\FKSR]QDV]
ZUR]G]LDOH
TABLICE W OBIEKCIE
:ïDĂFLZRĂÊGRZROQHJRRELHNWXPRĝH
SU]HFKRZ\ZDÊWDEOLFÚ3ROHZHM
VWURQLHZLGDÊĝHNDĝGHSRV]F]HJöOQH
VNïDGRZHUDFKXQNXZKRWHOXVÈ
SU]HFKRZ\ZDQHRGG]LHOQLHZWDEOLF\
$E\X]\VNDÊGRVWÚSGRSLHUZV]HJR
HOHPHQWXVNïDGRZHJRUDFKXQNXGOD
SRNRMXroom1QDOHĝ\Xĝ\ÊSRQLĝV]HJR
SROHFHQLD
WŁAŚCIWOŚĆ
OBIEKT
room1
items[420, 40, 10]
room2
items[460, 20, 20]
room3
items[230, 0, 0]
room4
items[620, 150, 60]
FRVWVURRPLWHPV>@
OBIEKTY W TABLICY
:DUWRĂFLÈGRZROQHJRHOHPHQWXWDEOLF\
PRĝHE\ÊRELHNW ]DSLVDQ\]DSRPRFÈ
VNïDGQLOLWHUDïXRELHNWX :RPDZLDQ\PSU]\NïDG]LHZFHOXX]\VNDQLD
GRVWÚSXGRUDFKXQNX]DWHOHIRQ
ZSRNRMXroom3QDOHĝ\Xĝ\ÊSRQLĝV]HJR
SROHFHQLD
NUMER INDEKSU
WARTOŚĆ
0
{accom: 420, food: 40, phone: 10}
1
{accom: 460, food: 20, phone: 20}
2
{accom: 230, food: 0, phone: 0}
3
{accom: 620, food: 150, phone: 60}
FRVWV>@SKRQH
FUNKCJE, METODY I OBIEKTY CO TO SĄ OBIEKTY
WBUDOWANE?
3U]HJOÈGDUNDLQWHUQHWRZDMHVWGRVWDUF]DQDZUD]]]HVWDZHPZEXGRZDQ\FK
RELHNWöZSU]HGVWDZLDMÈF\FKQDSU]\NïDGRNQRSU]HJOÈGDUNLLDNWXDOQLH
Z\ĂZLHWODQÈSU]H]QLHVWURQÚLQWHUQHWRZÈ:VSRPQLDQHZEXGRZDQHRELHNW\
G]LDïDMÈZFKDUDNWHU]H]HVWDZXQDU]ÚG]LRZHJRSR]ZDODMÈFHJRQDWZRU]HQLH
LQWHUDNW\ZQ\FKVWURQLQWHUQHWRZ\FK
2ELHNW\WZRU]RQHSU]H]Ciebie]Z\NOHEÚGÈ
RGSRZLDGDÊTwoimSRWU]HERP7DNLHRELHNW\
PRGHOXMÈXĝ\ZDQHZQLFKGDQHOXE]DZLHUDMÈ
IXQNFMHZ\PDJDQHSU]H]VNU\SW=NROHLZEXGRZDQHRELHNW\]DZLHUDMÈIXQNFMRQDOQRĂÊQDMF]ÚĂFLHM
Z\PDJDQÈZZLÚNV]RĂFLVNU\SWöZ
:EXGRZDQHRELHNW\SRPDJDMÈZSREUDQLX
UöĝQRURGQ\FKLQIRUPDFMLWDNLFKMDNV]HURNRĂÊ
RNQDSU]HJOÈGDUNLLQWHUQHWRZHM]DZDUWRĂÊ
JïöZQHJRQDJïöZNDQDVWURQLHDWDNĝHZLHONRĂÊ
WHNVWXZSURZDG]RQHJRSU]H]Xĝ\WNRZQLNDZSROX
IRUPXODU]DVLHFLRZHJR
*G\VWURQDLQWHUQHWRZD]RVWDMHZF]\WDQD
ZSU]HJOÈGDUFHRELHNW\VÈJRWRZHĽPRĝQD
Z\NRU]\VWDÊMHZVNU\SWDFK
'RVWÚSGRZïDĂFLZRĂFLLPHWRGX]\VNXMHV]]Z\NRU]\VWDQLHPQRWDFML]Xĝ\FLHPNURSNLSRGREQLH
MDNZSU]\SDGNXGRVWÚSXGRZïDĂFLZRĂFLLPHWRG
VDPRG]LHOQLHXWZRU]RQHJRRELHNWX
FUNKCJE, METODY I OBIEKTY
3LHUZV]\P]DGDQLHPMHVWXVWDOHQLHMDNLHVÈ
GRVWÚSQHQDU]ÚG]LD0RĝHV]Z\REUD]LÊVRELH
ĝH7ZöMQRZ\]HVWDZQDU]ÚG]LRZ\VNïDGDVLÚ
]WU]HFKVNïDGQLNöZ
3
GLOBALNE OBIEKTY
JAVASCRIPT.
1
OBIEKTOWY
MODEL PRZEGLĄDARKI
INTERNETOWEJ.
7HQPRGHO]DZLHUDRELHNW\SU]HGVWDZLDMÈFHELHĝÈFHRNQROXENDUWÚSU]HJOÈGDUNLLQWHUQHWRZHM2IHUXMHGRVWÚS
GRRELHNWöZRNUHĂODMÈF\FKU]HF]\
WDNLHMDNKLVWRULDSU]HJOÈGDUNL
LHNUDQXU]ÈG]HQLD
7HRELHNW\SU]HGVWDZLDMÈU]HF]\
NWöU\FKPRGHOHPXV]ÈE\ÊXWZRU]RQH
SU]H]MÚ]\N-DYD6FULSW1DSU]\NïDG
LVWQLHMHRELHNWSUDFXMÈF\MHG\QLH
]GDWÈLJRG]LQÈ
2
OBIEKTOWY MODEL
DOKUMENTU.
7HQPRGHOXĝ\ZDRELHNWöZ
GRXWZRU]HQLDELHĝÈFHMVWURQ\
LQWHUQHWRZHM1RZ\RELHNWMHVW
WZRU]RQ\GODNDĝGHJRHOHPHQWX
LSRV]F]HJöOQ\FKVHNFML
WHNVWXQDVWURQLH CO ZOSTANIE OMÓWIONE W TEJ CZĘŚCI
ROZDZIAŁU?
:F]HĂQLHMGRZLHG]LDïHĂVLÚMDNX]\VNDÊGRVWÚSGR
ZïDĂFLZRĂFLLPHWRGRELHNWX3RQLĝHMSU]HGVWDZLRQRZLÚFFHOWHMF]ÚĂFLUR]G]LDïX
ľRPöZLHQLHGRVWÚSQ\FKZEXGRZDQ\FKRELHNWöZ
ľRPöZLHQLHSU]H]QDF]HQLDLFKQDMZDĝQLHMV]\FK
ZïDĂFLZRĂFLLPHWRG
:SR]RVWDïHMF]ÚĂFLUR]G]LDïX]QDMG]LHVLÚNLOND
GRGDWNRZ\FKSU]\NïDGöZDE\SRND]DÊVSRVöE
Xĝ\FLDZEXGRZDQ\FKRELHNWöZ1DVWÚSQLH
ZSR]RVWDïHMF]ÚĂFLNVLÈĝNL]REDF]\V]ZLHOHSUDNW\F]Q\FKSU]\NïDGöZZ\NRU]\VWDQLDZEXGRZDQ\FK
RELHNWöZZUöĝQHJRURG]DMXV\WXDFMDFK
CO TO JEST MODEL OBIEKTOWY?
'RZLHG]LDïHĂVLÚĝHRELHNWPRĝHE\ÊXĝ\W\
GRWHJRDE\PRĝQDE\ïRXWZRU]\ÊQDSRGVWDZLH
GDQ\FKPRGHOSHZQHMU]HF]\SRFKRG]ÈFHM
]HĂZLDWDU]HF]\ZLVWHJR
0RGHORELHNWRZ\WRJUXSDRELHNWöZ]NWöU\FK
NDĝG\SU]HGVWDZLDSRZLÈ]DQHU]HF]\SRFKRG]ÈFH
]HĂZLDWDU]HF]\ZLVWHJR5D]HPWZRU]ÈPRGHO
F]HJRĂ]QDF]QLHZLÚNV]HJR
'ZLHVWURQ\ZF]HĂQLHMGRZLHG]LDïHĂVLÚĝHWDEOLFD
PRĝHSU]HFKRZ\ZDÊ]ELöURELHNWöZ3RQDGWR
ZïDĂFLZRĂFLÈRELHNWXPRĝHE\ÊWDEOLFD,VWQLHMH
UöZQLHĝPRĝOLZRĂÊĝHZïDĂFLZRĂFLÈRELHNWX
EÚG]LHLQQ\RELHNW.LHG\RELHNWMHVW]DJQLHĝGĝRQ\ZLQQ\PRELHNFLHQD]\ZDQ\JRRELHNWHP
SRWRPQ\P
FUNKCJE, METODY I OBIEKTY TRZY GRUPY WBUDOWANYCH
OBIEKTÓW
UŻYCIE WBUDOWANYCH OBIEKTÓW
7U]\]HVWDZ\ZEXGRZDQ\FKRELHNWöZRIHUXMÈUöĝQHJRURG]DMXQDU]ÚG]LDSRPDJDMÈFHZWZRU]HQLX
VNU\SWöZGODVWURQLQWHUQHWRZ\FK
5R]G]LDï]RVWDïSRĂZLÚFRQ\RELHNWRZHPX
PRGHORZLGRNXPHQWXSRQLHZDĝPRGHOWHQMHVW
Z\PDJDQ\ZFHOXX]\VNDQLDGRVWÚSXGR]DZDUWRĂFLVWURQ\LQWHUQHWRZHMLMHMXDNWXDOQLDQLD
3R]RVWDïHGZD]HVWDZ\RELHNWöZEÚGÈZSURZDG]RQHZW\PUR]G]LDOHDSU]\NïDG\LFKXĝ\FLD
]QDMG]LHV]ZSR]RVWDïHMF]ÚĂFLNVLÈĝNL
OBIEKTOWY MODEL PRZEGLĄDARKI
INTERNETOWEJ
2ELHNWRZ\PRGHOSU]HJOÈGDUNLLQWHUQHWRZHM
WZRU]\PRGHOGODRNQDOXENDUW\SU]HJOÈGDUNL
LQWHUQHWRZHM
1DVDPHMJöU]HPRGHOX]QDMGXMHVLÚRELHNW
windowSU]HGVWDZLDMÈF\ELHĝÈFHRNQROXENDUWÚ
SU]HJOÈGDUNLLQWHUQHWRZHM-HJRRELHNW\SRWRPQH
SU]HGVWDZLDMÈSR]RVWDïHIXQNFMHSU]HJOÈGDUNL
Bieżące okno lub karta
przeglądarki internetowej
WINDOW
DOCUMENT
HISTORY
LOCATION
NAVIGATOR
SCREEN
Bieżąca
strona internetowa
Strony w historii
przeglądarki internetowej
Adres URL
bieżącej strony
Informacje o przeglądarce
internetowej
Informacje o ekranie
urządzenia
PRZYKŁADY
0HWRGDprint()RELHNWXwindowVSRZRGXMH
Z\ĂZLHWOHQLHSU]H]SU]HJOÈGDUNÚLQWHUQHWRZÈRNQD
GLDORJRZHJRGRW\F]ÈFHJRZ\GUXNX
:WHMNVLÈĝFHGRZLHV]VLÚMDNXĝ\ZDÊZEXGRZDQ\FKRELHNWöZRUD]MDNLHJRURG]DMXLQIRUPDFMH
PRĝHV]]QLFKSREUDÊ3RQDGWRSU]HGVWDZLRQH
EÚGÈSU]\NïDG\Xĝ\FLDZLHOXLFKQDMSRSXODUQLHMV]\FKIXQNFML
ZLQGRZSULQW 1DSHZQRQLHPDWXWDMZ\VWDUF]DMÈFHMLORĂFLPLHMVFDQDGRNïDGQHRPöZLHQLHZV]\VWNLFKRELHNWöZ
ZSRV]F]HJöOQ\FKPRGHODFK-HGQDNQDVWURQLH
http://javascriptbook.com/extras/]QDMG]LHV]
OLVWÚRGQRĂQLNöZGR]DVREöZ]QDMGXMÈF\FKVLÚ
ZLQWHUQHFLH
ZLQGRZVFUHHQZLGWK
FUNKCJE, METODY I OBIEKTY
:ïDĂFLZRĂÊwidthRELHNWXscreenSR]ZROLQD
XVWDOHQLHZ\UDĝRQHMZSLNVHODFKV]HURNRĂFLHNUDQX
XU]ÈG]HQLD
'RRELHNWXwindowSRZUöFLP\ZSRGUR]G]LDOH
ķ2ELHNWRZ\PRGHOSU]HJOÈGDUNLLQWHUQHWRZHM
ĽRELHNWZLQGRZĵQDNWöUHMSR]QDV]SHZQH
ZïDĂFLZRĂFLRELHNWöZscreenLhistory
OBIEKTOWY MODEL DOKUMENTU
GLOBALNE OBIEKTY JAVASCRIPT
2ELHNWRZ\PRGHOGRNXPHQWX DQJdocument
object modelĽ'20 WZRU]\PRGHOGODELHĝÈFHM
VWURQ\LQWHUQHWRZHM
*OREDOQHRELHNW\-DYD6FULSWQLHWZRU]ÈSRMHG\QF]HJRPRGHOX7RMHVWJUXSDSRV]F]HJöOQ\FK
RELHNWöZSRZLÈ]DQ\FK]UöĝQ\PLF]ÚĂFLDPLMÚ]\ND
-DYD6FULSW
1DVDPHMJöU]HPRGHOX]QDMGXMHVLÚRELHNW
documentNWöU\SU]HGVWDZLDVWURQÚMDNRFDïRĂÊ
-HJRRELHNW\SRWRPQHSU]HGVWDZLDMÈLQQH
HOHPHQW\]QDMGXMÈFHVLÚQDVWURQLH
1D]Z\RELHNWöZJOREDOQ\FK]Z\NOH]DF]\QDMÈVLÚ
RGGXĝHMOLWHU\QDSU]\NïDGStringOXEDate
:\PLHQLRQHSRQLĝHMRELHNW\SU]HGVWDZLDMÈ
SRGVWDZRZHW\S\GDQ\FK
document
STRING
<html>
NUMBER
BOOLEAN
<head>
<body>
<title>
<div>
atrybut
<p>
tekst
Do pracy z wartościami
w postaci ciągów tekstowych
Do pracy z wartościami
w postaci liczb
Do pracy z wartościami
w postaci wartości boolowskich
:\PLHQLRQHSRQLĝHMRELHNW\SRPDJDMÈZSUDF\
]NRQFHSFMDPL]QDQ\PL]HĂZLDWDU]HF]\ZLVWHJR
DATE
Do przedstawienia i pracy
z datami
MATH
Do pracy z liczbami
i przeprowadzania obliczeń
REGEX
W celu dopasowywania wzorców
w ciągach tekstowych
PRZYKŁADY
PRZYKŁADY
0HWRGDgetElementById()RELHNWXdocument
SRZRGXMHSREUDQLHHOHPHQWXQDSRGVWDZLH
ZDUWRĂFLMHJRDWU\EXWXid
0HWRGDtoUpperCase()RELHNWXStringSRZRGXMH
]PLDQÚQDGXĝHZV]\VWNLFKOLWHUZHZVND]DQHM
]PLHQQHM
GRFXPHQWJHW(OHPHQW%\,G ijRQHij KRWHOWR8SSHU&DVH :ïDĂFLZRĂÊODVW0RGLğHGRELHNWXdocument
SRGDMHGDWÚRVWDWQLHMPRG\ğNDFMLVWURQ\
:ïDĂFLZRĂÊPIRELHNWXMath]ZUDFD
ZDUWRĂÊSL
GRFXPHQWODVW0RGLğHG
0DWK3, 'RRELHNWXdocumentSRZUöFLP\ZSRGUR]G]LDOH
ķ2ELHNWRZ\PRGHOGRNXPHQWXĽRELHNWGRFXPHQWĵQDWRPLDVWV]F]HJöïRZHRPöZLHQLHPRGHOX
'20]QDMG]LHV]ZUR]G]LDOH
'RRELHNWöZString, Number, DateLMathZUöFLP\
ZGDOV]HMF]ÚĂFLUR]G]LDïX
FUNKCJE, METODY I OBIEKTY OBIEKTOWY MODEL
PRZEGLĄDARKI INTERNETOWEJ
— OBIEKT WINDOW
2ELHNWwindowSU]HGVWDZLDELHĝÈFHRNQROXENDUWÚ
SU]HJOÈGDUNLLQWHUQHWRZHM2ELHNWWHQ]QDMGXMHVLÚ
QDVDPHMJöU]HRELHNWRZHJRPRGHOXSU]HJOÈGDUNL
L]DZLHUDLQQHRELHNW\GRVWDUF]DMÈFHLQIRUPDFMH
RQLHM
3RQLĝHMSU]HGVWDZLRQRZ\EUDQH
ZïDĂFLZRĂFLLPHWRG\RELHNWX
window=QDMG]LHV]WXWDMWDNĝH
SHZQHZïDĂFLZRĂFLRELHNWöZ
screenLhistory EÚGÈF\FK
RELHNWDPLSRWRPQ\PLRELHNWX
window :’$¥&,:2¥m
23,6
window.innerHeight
:\UDĝRQDZSLNVHODFKZ\VRNRĂÊRNQD Z\ïÈF]DMÈFLQWHUIHMVXĝ\WNRZQLNDZSU]HJOÈGDUFH
LQWHUQHWRZHM window.innerWidth
:\UDĝRQDZSLNVHODFKV]HURNRĂÊRNQD Z\ïÈF]DMÈFLQWHUIHMVXĝ\WNRZQLNDZSU]HJOÈGDUFH
LQWHUQHWRZHM window.pageXOffset
:\UDĝRQDZSLNVHODFKRGOHJïRĂÊRMDNÈGRNXPHQW]RVWDïSU]HZLQLÚW\ZSR]LRPLH
window.pageYOffset
:\UDĝRQDZSLNVHODFKRGOHJïRĂÊRMDNÈGRNXPHQW]RVWDïSU]HZLQLÚW\ZSLRQLH
window.screenX
:\UDĝRQDZSLNVHODFKZVSöïU]ÚGQD;ZVNDěQLNDZ]JOÚGHPOHZHJRJöUQHJRURJXHNUDQX
window.screenY
:\UDĝRQDZSLNVHODFKZVSöïU]ÚGQD<ZVNDěQLNDZ]JOÚGHPOHZHJRJöUQHJRURJXHNUDQX
window.location
%LHĝÈF\DGUHV85/RELHNWXwindow OXEĂFLHĝNDGRVWÚSXGRSOLNXORNDOQHJR window.document
2GQLHVLHQLHGRRELHNWXdocumentNWöU\MHVWXĝ\ZDQ\ZFHOXSU]HGVWDZLHQLDELHĝÈFHMVWURQ\
Z\ĂZLHWORQHMZRNQLHSU]HJOÈGDUNLLQWHUQHWRZHM
window.history
2GQLHVLHQLHGRRELHNWXhistoryGODRNQDOXENDUW\SU]HJOÈGDUNLLQWHUQHWRZHM2ELHNW]DZLHUD
LQIRUPDFMHV]F]HJöïRZHRVWURQDFKRGZLHG]RQ\FKZW\PRNQLHOXENDUFLH
window.history.length
/LF]EDHOHPHQWöZ]QDMGXMÈF\FKVLÚZRELHNFLHhistoryGODWHJRRNQDOXENDUW\SU]HJOÈGDUNL
LQWHUQHWRZHM
window.screen
2GQLHVLHQLHGRRELHNWXscreen
window.screen.width
8]\VNDQLHGRVWÚSXGRRELHNWXscreenRUD]Z\V]XNDQLHZ\UDĝRQHMZSLNVHODFKZDUWRĂFL
ZïDĂFLZRĂFLwidth
window.screen.height
8]\VNDQLHGRVWÚSXGRRELHNWXscreenRUD]Z\V]XNDQLHZ\UDĝRQHMZSLNVHODFKZDUWRĂFL
ZïDĂFLZRĂFLheight
0(72'$
23,6
window.alert()
:\ĂZLHWODRNQRGLDORJRZHZUD]]NRPXQLNDWHP Xĝ\WNRZQLNPXVLNOLNQÈÊSU]\FLVNOK,
DE\MH]DPNQÈÊ window.open()
2WZLHUDQRZHRNQRSU]HJOÈGDUNLLQWHUQHWRZHMZUD]]HVWURQÈRDGUHVLH85/ZVND]DQ\PMDNR
SDUDPHWU -HĝHOLZSU]HJOÈGDUFH]DLQVWDORZDQRRSURJUDPRZDQLHFKURQLÈFHSU]HGZ\ĂZLHWODQLHPUHNODPUR]ZLÈ]DQLHWRPRĝHQLHG]LDïDÊ window.print()
0HWRGDLQIRUPXMHSU]HJOÈGDUNÚLQWHUQHWRZÈĝHXĝ\WNRZQLNFKFHZ\GUXNRZDÊ]DZDUWRĂÊ
ELHĝÈFHMVWURQ\ 0HWRGDG]LDïDWDNMDNE\Xĝ\WNRZQLNZ\EUDïRSFMÚZ\GUXNXZLQWHUIHMVLH
Xĝ\WNRZQLNDSU]HJOÈGDUNLLQWHUQHWRZHM FUNKCJE, METODY I OBIEKTY
UŻYCIE OBIEKTOWEGO
MODELU PRZEGLĄDARKI
INTERNETOWEJ
3RQLĝHMSU]HGVWDZLRQRGDQHGRW\F]ÈFH
SU]HJOÈGDUNLLQWHUQHWRZHMNWöUH]RVWDï\SREUDQH
]RELHNWXwindowRUD]MHJRRELHNWöZSRWRPQ\FK
SU]HFKRZ\ZDQHZ]PLHQQHMRQD]ZLHmsg
LZ\ĂZLHWORQHQDVWURQLH2SHUDWRU+=SRZRGXMH
XPLHV]F]HQLHQRZ\FKGDQ\FKSU]\SLVDQ\FKQD
NRñFX]PLHQQHMmsg
'ZLHZïDĂFLZRĂFLRELHNWXwindowF]\OL
innerWidthLinnerHeightGRVWDUF]DMÈLQIRUPDFMH
RV]HURNRĂFLLZ\VRNRĂFLRNQDSU]HJOÈGDUNL
LQWHUQHWRZHM
2ELHNW\SRWRPQHVÈSU]HFKRZ\ZDQHMDNR
ZïDĂFLZRĂFLLFKRELHNWöZQDGU]ÚGQ\FK:FHOX
X]\VNDQLDGRQLFKGRVWÚSXZ\NRU]\VW\ZDQDMHVW
QRWDFMD]Xĝ\FLHPNURSNLSRGREQLHMDNZSU]\SDGNXGRVWÚSXGRLQQHMGRZROQHMZïDĂFLZRĂFL
RELHNWX
JAVASCRIPT
1
2
3
4
$E\X]\VNDÊGRVWÚSGRZïDĂFLZRĂFLRELHNWX
SRWRPQHJRXĝ\ZDQDMHVWNROHMQDNURSND
XPLHV]F]DQDPLÚG]\QD]ZÈRELHNWX
SRWRPQHJRLMHJRZïDĂFLZRĂFLÈQDSU]\NïDG
window.history.length
:\EUDQ\]RVWDMHHOHPHQWNWöUHJRZDUWRĂFLÈ
DWU\EXWXidMHVWinfo8WZRU]RQ\Z]PLHQQHMmsg
NRPXQLNDW]RVWDMHZ\ĂZLHWORQ\QDVWURQLH
:UR]G]LDOHZSRGUR]G]LDOHķ$WDNLW\SX;66ĵ
]QDMG]LHV]LQIRUPDFMHGRW\F]ÈFHXĝ\FLDZïDĂFLZRĂFLinnerHTML:DUWRVLÚ]QLPL]DSR]QDÊ
SRQLHZDĝQLHSUDZLGïRZHXĝ\FLHinnerHTMLZLÈĝH
VLÚ]QLHEH]SLHF]HñVWZHP
0HWRGDalert()RELHNWXwindow]RVWDïDXĝ\WD
ZFHOXZ\ĂZLHWOHQLDRNQDGLDORJRZHJRQDHNUDQLH
7RRNQRQD]\ZDP\NRPXQLNDWHP:SUDZG]LH
Xĝ\WDPHWRGDQDOHĝ\GRRELHNWXwindowDOH
c03/js/window-object.js
var msg ijK!RNQRSU]HJOÈGDUNLK!S!V]HURNRĂÊijZLQGRZLQQHU:LGWKijS!ij
PVJ ijS!Z\VRNRĂÊijZLQGRZLQQHU+HLJKWijS!ij
PVJ ijK!KLVWRULDK!S!HOHPHQW\ijZLQGRZKLVWRU\OHQJWKijS!ij
PVJ ijK!HNUDQK!S!V]HURNRĂÊijZLQGRZVFUHHQZLGWKijS!ij
PVJ ijS!Z\VRNRĂÊijZLQGRZVFUHHQKHLJKWijS!ij
YDUHO GRFXPHQWJHW(OHPHQW%\,G ijLQIRij HOLQQHU+70/ PVJ
DOHUW ij%LHĝÈFDVWURQDijZLQGRZORFDWLRQ WYNIK
PRĝHV]VSRWNDÊVLÚ]MHM]DVWRVRZDQLHPMDNR
PHWRG\VDPRG]LHOQHMSRQLHZDĝRELHNWwindowMHVW
WUDNWRZDQ\MDNRGRP\ĂOQ\JG\ĝDGHQQLH]RVWDQLH
ZVND]DQ\ .LHG\ĂPHWRGDalert()E\ïDXĝ\ZDQD
ZFHOXZ\ĂZLHWODQLDRVWU]HĝHñXĝ\WNRZQLNRP
2EHFQLHPDP\]QDF]QLHOHSV]HVSRVRE\Z\ĂZLHWODQLDLQIRUPDFMLXĝ\WNRZQLNRP FUNKCJE, METODY I OBIEKTY
OBIEKTOWY MODEL
DOKUMENTU —
OBIEKT DOCUMENT
1DVDPHMJöU]HRELHNWRZHJRPRGHOXGRNXPHQWX PRGHO'20 ]QDMGXMHVLÚ
obiekt document3U]HGVWDZLDRQELHĝÈFÈVWURQÚZF]\WDQÈZRNQLH
OXENDUFLHSU]HJOÈGDUNLLQWHUQHWRZHM2ELHNW\SRWRPQHRELHNWXdocument
EÚGÈSU]HGVWDZLRQHZUR]G]LDOH
3RQLĝHMZ\PLHQLRQRZ\EUDQH
ZïDĂFLZRĂFLRELHNWXdocument
GRVWDUF]DMÈFHLQIRUPDFMH
RELHĝÈFHMVWURQLH
-DN]REDF]\V]ZUR]G]LDOH
PRGHO'20WZRU]\RELHNWGOD
NDĝGHJRHOHPHQWXVWURQ\
:’$¥&,:2¥m
23,6
document.title
7\WXïELHĝÈFHJRGRNXPHQWX
GRFXPHQWODVW0RGLğHG
'DWDRVWDWQLHMPRG\ğNDFMLGRNXPHQWX
document.URL
&LÈJWHNVWRZ\]DZLHUDMÈF\DGUHV85/ELHĝÈFHJRGRNXPHQWX
document.domain
'RPHQDELHĝÈFHJRGRNXPHQWX
Model DOM ma istotne
]QDF]HQLHSRGF]DVX]\VNLZDQLD
GRVWÚSXGRPRG\ğNDFML
]DZDUWRĂFLELHĝÈFHMVWURQ\
internetowej.
3RQLĝHMZ\PLHQLRQRNLONDPHWRG
SU]H]QDF]RQ\FKGRSRELHUDQLD
LXDNWXDOQLDQLD]DZDUWRĂFL
VWURQ\
0(72'$
23,6
document.write()
8PLHV]F]HQLHWHNVWXZGRNXPHQFLHĽ]DSR]QDMVLÚ]RJUDQLF]HQLDPLZ\PLHQLRQ\PLZUR]G]LDOHZSRGUR]G]LDOHķ3RUöZQDQLHWHFKQLNĽXDNWXDOQLHQLH
]DZDUWRĂFL+70/ĵ
document.getElementById()
=ZUDFDHOHPHQWRLOHLVWQLHMHHOHPHQWNWöUHJRZDUWRĂÊDWU\EXWXid zostanie
GRSDVRZDQDĽGRNïDGQHRPöZLHQLHWHMPHWRG\]QDMG]LHV]ZUR]G]LDOH
ZSRGUR]G]LDOHķ3REUDQLHHOHPHQWXQDSRGVWDZLHZDUWRĂFLDWU\EXWXLGĵ
document.querySelectorAll()
=ZUDFDOLVWÚHOHPHQWöZGRSDVRZXMÈF\FKVHOHNWRU&66SRGDQ\MDNRSDUDPHWU
ĽSDWU]UR]G]LDïSRGUR]G]LDïķ3REUDQLHHOHPHQWXQDSRGVWDZLHVHOHNWRUD
&66ĵ
document.createElement()
7ZRU]\QRZ\HOHPHQWĽSDWU]UR]G]LDïSRGUR]G]LDïķ'RGDQLHHOHPHQWöZ
]DSRPRFÈRSHUDFMLQDPRGHOX'20ĵ
document.createTextNode()
7ZRU]\QRZ\WHNVWĽSDWU]UR]G]LDïSRGUR]G]LDïķ'RGDQLHHOHPHQWöZ
]DSRPRFÈRSHUDFMLQDPRGHOX'20ĵ
132 FUNKCJE, METODY I OBIEKTY
UŻYCIE OBIEKTOWEGO
MODELU DOKUMENTU
:SRQLĝV]\PSU]\NïDG]LH
SRELHUDQHVÈLQIRUPDFMHRVWURQLHNWöUHQDVWÚSQLH]RVWDMÈ
XPLHV]F]RQHZVWRSFH
,QIRUPDFMHV]F]HJöïRZH
RVWURQLHVÈSREUDQH]ZïDĂFLZRĂFLRELHNWXdocument
:VSRPQLDQHLQIRUPDFMHV]F]HJöïRZH]RVWDMÈXPLHV]F]RQH
Z]PLHQQHMRQD]ZLHmsgZUD]
]NRGHP]QDF]QLNöZ+70/
SU]H]QDF]RQ\PGRLFKZ\ĂZLHWOHQLD3RQRZQLHMHVWXĝ\ZDQ\
RSHUDWRU+=ZFHOXGRGDQLD
QRZHMZDUWRĂFLGRLVWQLHMÈFHM
]DZDUWRĂFL]PLHQQHMmsg
JAVASCRIPT
=Xĝ\FLHPPHWRG\
getElementById()RELHNWX
documentVSRWNDïHĂVLÚMXĝ
ZNLONXZF]HĂQLHMV]\FK
SU]\NïDGDFK0HWRGD
Z\ELHUDHOHPHQWQDVWURQLH
QDSRGVWDZLHZDUWRĂFLMHJR
DWU\EXWXid'RNïDGQLHMV]H
RPöZLHQLHZ\PLHQLRQHMPHWRG\
]QDMG]LHV]ZUR]G]LDOH
ZSRGUR]G]LDOHķ3REUDQLH
HOHPHQWXQDSRGVWDZLHZDUWRĂFL
DWU\EXWXLGĵ
c03/js/document-object.js
1
YDUPVJ ijS!E!W\WXïVWURQ\E!ijGRFXPHQWWLWOHijEU!ij
PVJ ijE!DGUHVVWURQ\E!ijGRFXPHQW85/ijEU!ij
PVJ ijE!RVWDWQLDPRG\ğNDFMDE!ijGRFXPHQWODVW0RGLğHGijS!ij
2
YDUHO GRFXPHQWJHW(OHPHQW%\,G ijIRRWHUij HOLQQHU+70/ PVJ
WYNIK
:UR]G]LDOHZSRGUR]G]LDOH
ķ$WDNLW\SX;66ĵ]QDMG]LHV]
LQIRUPDFMHGRW\F]ÈFHXĝ\FLD
ZïDĂFLZRĂFLinnerHTML
:DUWRVLÚ]QLPL]DSR]QDÊ
SRQLHZDĝQLHSUDZLGïRZHXĝ\FLH
innerHTMLZLÈĝHVLÚ]QLHEH]SLHF]HñVWZHP
-HĝHOLZ\ĂZLHWOLV]VWURQÚ
ORNDOQLH]DPLDVW]VHUZHUD
:::DGUHV85/EÚG]LH
Z\JOÈGDï]XSHïQLHLQDF]HM
:WHG\EÚG]LH]DF]\QDïVLÚRG
ğOH]DPLDVWRGhttp://
FUNKCJE, METODY I OBIEKTY OBIEKTY GLOBALNE —
OBIEKT STRING
:SU]\SDGNXZDUWRĂFLEÚGÈFHMFLÈJLHPWHNVWRZ\PPRĝQDXĝ\ÊZïDĂFLZRĂFL
LPHWRG\RELHNWXString:RPDZLDQ\PSU]\NïDG]LH]PLHQQD]DZLHUD
ZDUWRĂÊHome sweet home
YDUVD\LQJ ij+RPHVZHHWKRPHij
:\PLHQLRQHWXWDMZïDĂFLZRĂFL
LPHWRG\VÈEDUG]RF]ÚVWRXĝ\ZDQH
SRGF]DVSUDF\]WHNVWHPSU]HFKRZ\ZDQ\PZ]PLHQQ\FKOXERELHNWDFK
:’$¥&,:2¥m
23,6
length
:ZLÚNV]RĂFLSU]\SDGNöZ]ZUDFDOLF]EÚ]QDNöZ
]QDMGXMÈF\FKVLÚZFLÈJXWHNVWRZ\P SDWU]
XZDJDQDGROHVWURQ\ 1DVWURQLHSRSUDZHM]ZUöÊ
XZDJÚQDIDNWĝHSRQD]ZLH
]PLHQQHM saying ]QDMGXMHVLÚ
NURSNDDQDVWÚSQLHGHPRQVWURZDQD
ZïDĂFLZRĂÊOXEPHWRGD SRGREQLH
MDNZSU]\SDGNXQD]Z\RELHNWXSR
NWöUHM]QDMGXMHVLÚNURSNDLZïDĂFLZRĂÊOXEPHWRGDRELHNWX 0(72'$
23,6
toUpperCase()
=PLHQLDQDGXĝH]QDNLZFLÈJXWHNVWRZ\P
toLowerCase()
=PLHQLDQDPDïH]QDNLZFLÈJXWHNVWRZ\P
charAt()
3RELHUDQXPHULQGHNVXMDNRSDUDPHWUDQDVWÚSQLH]ZUDFD]QDN]QDMGXMÈF\VLÚZHZVND]DQ\P
SRïRĝHQLX
indexOf()
=ZUDFDQXPHULQGHNVXSLHUZV]HJR]QDNXOXE
]ELRUX]QDNöZZGDQ\PFLÈJXWHNVWRZ\P
lastIndexOf()
=ZUDFDQXPHULQGHNVXRVWDWQLHJR]QDNXOXE
]ELRUX]QDNöZZGDQ\PFLÈJXWHNVWRZ\P
substring()
=ZUDFD]QDNL]QDOH]LRQHPLÚG]\GZRPD
LQGHNVDPLSU]\F]\P]QDN]QDMGXMÈF\VLÚZSRïRĝHQLXZVND]\ZDQ\PSU]H]SLHUZV]\LQGHNV
MHVWGRïÈF]RQ\QDWRPLDVW]QDNZVND]\ZDQ\
SU]H]GUXJLLQGHNVQLHMHVWGRïÈF]RQ\
split()
3RSRGDQLX]QDNXPHWRGDSRZRGXMHSRG]LDï
FLÈJXWHNVWRZHJRZNDĝG\PPLHMVFXZ\VWÈSLHQLDGDQHJR]QDNXDQDVWÚSQLHSRV]F]HJöOQH
HOHPHQW\SU]HFKRZXMHZWDEOLF\
trim()
8VXZD]QDNLRGVWÚSXQDSRF]ÈWNXLNRñFXFLÈJX
WHNVWRZHJR
replace()
']LDïDSRGREQLHMDNIXQNFMDW\SXķ]QDMGě
L]DPLHñĵ3RELHUDZDUWRĂÊGR]QDOH]LHQLD
RUD]ZDUWRĂÊ]DVWÚSXMÈFÈ GRP\ĂOQLH]DVWÈSLHQLHZDUWRĂFLQDVWÚSXMHW\ONRGODSLHUZV]HJR
]QDOH]LRQHJRGRSDVRZDQLD 'ODWHJRWHĝRELHNWStringMHVWQD]\ZDQ\]DUöZQRRELHNWHPJOREDOQ\P
G]LDïDZNDĝG\PPLHMVFXVNU\SWX MDNLRELHNWHP RSDNRZDQLD,
SRQLHZDĝG]LDïDZFKDUDNWHU]H
RSDNRZDQLDGODGRZROQHMZDUWRĂFL
EÚGÈFHMFLÈJLHPWHNVWRZ\P
2]QDF]DWRĝHZïDĂFLZRĂFLLPHWRG\
RELHNWXStringPRĝQDZ\NRU]\VWDÊ
GODGRZROQHMZDUWRĂFLEÚGÈFHM
FLÈJLHPWHNVWRZ\P
:ïDĂFLZRĂÊlength]OLF]DķMHGQRVWNL
NRGXĵZFLÈJXWHNVWRZ\P:ZLÚNV]RĂFLSU]\SDGNöZMHGHQ]QDN
]DMPXMHW\ONRMHGQÈMHGQRVWNÚNRGX
ZLÚNV]RĂÊSURJUDPLVWöZVWRVXMHWÚ
ZïDĂFLZRĂÊZWDNLZïDĂQLHVSRVöE
=GDU]DMÈVLÚV\WXDFMHJG\]QDN
PRĝH]DMÈÊGZLHMHGQRVWNLNRGX
FUNKCJE, METODY I OBIEKTY
.DĝG\]QDNZFLÈJXWHNVWRZ\PDXWRPDW\F]QLHRWU]\PXMHQXPHU
QD]\ZDQÈQXPHUHPLQGHNVX3RGREQLHMDNZSU]\SDGNXWDEOLF\
QXPHU\LQGHNVXUR]SRF]\QDMÈVLÚRG]HUDDQLHRGMHGQHJR
Home sweet home
0
1
2
3
4
5
6
7
8
9
10
35=<.’$'
11
12
13
14
15
:<1,.
VD\LQJOHQJWK
Home sweet home
35=<.’$'
:<1,.
VD\LQJWR8SSHU&DVH
Home sweet home
’HOME SWEET HOME ’
VD\LQJWR/RZHU&DVH
Home sweet home
’home sweet home ’
VD\LQJFKDU$W Home sweet home
’o’
VD\LQJLQGH[2I ijHHij Home sweet home
7
VD\LQJODVW,QGH[ ijHij Home sweet home
VD\LQJVXEVWULQJ Home sweet home
’et hom’
VD\LQJVSOLW ijij Home sweet home
>ij+RPHijijVZHHWijijKRPHijijij@
VD\LQJWULP
Home sweet home
’Home sweet home’
Home sweet home
’How sweet home ’
VD\LQJUHSODFH ijPHijijZij FUNKCJE, METODY I OBIEKTY PRACA Z CIĄGIEM TEKSTOWYM
:W\PSU]\NïDG]LH]DGHPRQVWURZDQRZïDĂFLZRĂÊlength
RUD]ZLHOHPHWRGRELHNWX
StringZ\PLHQLRQ\FKQD
SRSU]HGQLHMVWURQLH
3U]\NïDGUR]SRF]\QDVLÚ
RGSU]\SLVDQLDZDUWRĂFL
“Home sweet home ”]PLHQQHM
RQD]ZLHsaying
:NROHMQ\FKZLHUV]DFK
NRGSRGDMHOLF]EÚ]QDNöZ
FLÈJXWHNVWRZHJRRNUHĂORQÈ]D
SRPRFÈZïDĂFLZRĂFLlength
RELHNWXStringLSU]HFKRZXMHMÈ
Z]PLHQQHMmsg
:GDOV]HMF]ÚĂFLSU]\NïDGX
SU]HGVWDZLRQHMHVWXĝ\FLHZLHOX
PHWRGRELHNWXString
JAVASCRIPT
1
2
3
4
3RQD]ZLH]PLHQQHM saying ]QDMGXMHVLÚNURSNDDQDVWÚSQLH
QD]ZDGHPRQVWURZDQHM
ZïDĂFLZRĂFLOXEPHWRG\
ZGRNïDGQLHWHQVDPVSRVöE
QRWDFMD]Xĝ\FLHPNURSNLMHVW
Z\NRU]\VW\ZDQDSU]H]LQQH
RELHNW\RPDZLDQHZUR]G]LDOH c03/js/string-object.js
YDUVD\LQJ ij+RPHVZHHWKRPHij
YDUPVJ ijK!OLF]ED]QDNöZK!S!ijVD\LQJOHQJWKijS!ij
PVJ ijK!GXĝHOLWHU\K!S!ijVD\LQJWR8SSHU&DVH ijS!ij
PVJ ijK!PDïHOLWHU\K!S!ijVD\LQJWR/RZHU&DVH ijS!ij
PVJ ijK!]QDNQUK!S!ijVD\LQJFKDU$W ijS!ij
PVJ ijK!SLHUZV]HZ\VWÈSLHQLHHHK!S!ijVD\LQJLQGH[2I ijHHij ijS!ij
PVJ ijK!RVWDWQLHZ\VWÈSLHQLHHK!S!ijVD\LQJODVW,QGH[2I ijHij ijS!ij
PVJ ijK!]QDNLQUK!S!ijVD\LQJVXEVWULQJ ijS!ij
PVJ ijK!IXQNFMD]DVWÈSLHQLDK!S!ijVD\LQJUHSODFH ijPHijijZij ijS!ij
YDUHO GRFXPHQWJHW(OHPHQW%\,G ijLQIRij HOLQQHU+70/ PVJ
WYNIK
:GZöFKRVWDWQLFKZLHUV]DFKZ\EUDQ\]RVWDMHHOHPHQW
NWöUHJRZDUWRĂFLÈDWU\EXWXid
MHVWinfo8WZRU]RQ\GRWÈG
NRPXQLNDWZ]PLHQQHMmsg
]RVWDMHZ\ĂZLHWORQ\QDVWURQLH
3DPLÚWDMRNZHVWLDFKEH]SLHF]HñVWZD]ZLÈ]DQ\FK]Xĝ\FLHP
ZïDĂFLZRĂFLinnerHTML:LÚFHM
LQIRUPDFMLQDWHQWHPDW]QDMG]LHV]ZUR]G]LDOHZSRGUR]G]LDOHķ$WDNLW\SX;66ĵ
FUNKCJE, METODY I OBIEKTY
PODSUMOWANIE
TYPÓW DANYCH
:MÚ]\NX-DYD6FULSWPDP\V]HĂÊW\SöZGDQ\FK3LÚÊ]QLFKRNUHĂODVLÚ
PLDQHPSURVW\FK1DWRPLDVWV]öVW\PMHVWRELHNW WHQW\SMHVWRNUHĂODQ\
PLDQHP]ïRĝRQHJRW\SXGDQ\FK PROSTE TYPY DANYCH
ZŁOŻONE TYPY DANYCH
-DYD6FULSWRIHUXMHSLÚÊSURVW\FKW\SöZGDQ\FK
-DYD6FULSWREVïXJXMHWDNĝH]ïRĝRQ\W\SGDQ\FK
String
Number
Boolean
8QGHğQHG ]PLHQQD]RVWDïD]DGHNODURZDQDDOH
MHV]F]HQLHSU]\SLVDQRMHMZDUWRĂFL Null ]PLHQQDQLHSRVLDGDZDUWRĂFLĽPRJïD
ZF]HĂQLHMPLHÊZDUWRĂÊDOHREHFQLHMHMQLH
SRVLDGD Obiekt
-DNPRJïHĂ]REDF]\Ê]DUöZQRSU]HJOÈGDUND
LQWHUQHWRZDMDNLELHĝÈF\GRNXPHQWPRJÈE\Ê
PRGHORZDQH]DSRPRFÈRELHNWöZNWöUH]NROHL
PRJÈPLHÊPHWRG\LZïDĂFLZRĂFL
2GNU\FLHĝHSURVWDZDUWRĂÊ WDNDMDNFLÈJ
WHNVWRZ\OLF]EDOXEZDUWRĂÊERRORZVND PRĝH
PLHÊPHWRG\LZïDĂFLZRĂFLF]DVDPLZSURZDG]D
Z]DNïRSRWDQLH:WOHMÚ]\N-DYD6FULSWWUDNWXMH
NDĝGÈ]PLHQQÈMDNRRELHNWQDZïDVQ\FKSUDZDFK
String-HĝHOL]PLHQQDOXEZïDĂFLZRĂÊRELHNWX
]DZLHUDFLÈJWHNVWRZ\WRSRGF]DVSUDF\]WÈ
]PLHQQÈPRĝHV]Xĝ\ZDÊZïDĂFLZRĂFLLPHWRG
RELHNWXString
Number-HĝHOL]PLHQQDOXEZïDĂFLZRĂÊRELHNWX
SU]HFKRZXMHOLF]EÚWRSRGF]DVSUDF\]WÈ]PLHQQÈ
PRĝHV]Xĝ\ZDÊZïDĂFLZRĂFLLPHWRGRELHNWX
Number SDWU]NROHMQDVWURQD :WOHWDEOLFHLIXQNFMHVÈX]QDZDQH]DRELHNW\
TABLICA JEST OBIEKTEM
-DN]REDF]\ïHĂZSRGUR]G]LDOHķ7DEOLFDMHVWRELHNWHPĵWDEOLFDWR]ELöUSDUNOXF]ZDUWRĂÊ SRGREQLH
MDNNDĝG\LQQ\RELHNW -HGQDNZWDEOLF\QLHWU]HED
SRGDZDÊQD]Z\ZSDU]HNOXF]ZDUWRĂÊĽWRMHVW
QXPHULQGHNVX
3RGREQLHMDNLQQHRELHNW\WDNĝHWDEOLFDPDZïDĂFLZRĂFLLPHWRG\:UR]G]LDOHZSRGUR]G]LDOH
ķ:DUWRĂFLZWDEOLF\ĵGRZLHG]LDïHĂVLÚĝHWDEOLFD
PDZïDĂFLZRĂÊRQD]ZLHlengthNWöUDSRGDMH
OLF]EÚHOHPHQWöZ]QDMGXMÈF\FKVLÚZWDEOLF\
,VWQLHMHUöZQLHĝ]ELöUPHWRGSU]H]QDF]RQ\FKGR
GRGDZDQLDLXVXZDQLDHOHPHQWöZWDEOLF\DWDNĝH
]PLDQ\LFKNROHMQRĂFL:VSRPQLDQHPHWRG\
SR]QDV]ZUR]G]LDOH
FUNKCJA JEST OBIEKTEM
3RGZ]JOÚGHPWHFKQLF]Q\PIXQNFMDUöZQLHĝMHVW
RELHNWHPDOHFKDUDNWHU\]XMHVLÚGRGDWNRZ\PL
FHFKDPL3U]HGHZV]\VWNLPPRĝQDMÈZ\ZRïDÊ
FRR]QDF]DPRĝOLZRĂÊSRLQIRUPRZDQLDLQWHUSUHWHUDĝHFKFHV]Z\NRQDÊSROHFHQLD]QDMGXMÈFHVLÚ
ZIXQNFML
Boolean,VWQLHMHRELHNWBooleanNWöU\MHGQDN
U]DGNRE\ZDXĝ\ZDQ\
:DUWRĂFLXQGHğQHGLnullQLHVÈRELHNWDPL FUNKCJE, METODY I OBIEKTY OBIEKTY GLOBALNE —
OBIEKT NUMBER
-HĝHOLPDV]ZDUWRĂÊEÚGÈFÈOLF]EÈWRPRĝHV]
QDQLHMXĝ\ZDÊPHWRGLZïDĂFLZRĂFLRELHNWXNumber
:\PLHQLRQHSRQLĝHMPHWRG\
RND]XMÈVLÚXĝ\WHF]QHZZLHOX
UöĝQHJRURG]DMXDSOLNDFMDFK
SRF]ÈZV]\RGSU]HSURZDG]DMÈF\FKREOLF]HQLDğQDQVRZHDĝGR
DQLPDFML
:LHOHREOLF]HñQDZDUWRĂFLDFK
SLHQLÚĝQ\FK QDSU]\NïDG
Z\VRNRĂÊSRGDWNX PXVLE\Ê
]DRNUÈJORQ\FKGRRNUHĂORQHM
OLF]E\PLHMVFSRSU]HFLQNX
G]LHVLÚWQ\P
=NROHLZSU]\SDGNXDQLPDFML
PRĝHZ\VWÈSLÊSRWU]HED
ZVND]DQLDĝHRNUHĂORQD
OLF]EDHOHPHQWöZPDE\ÊUöZQR
UR]ïRĝRQDQDVWURQLH
0(72'$
23,6
isNaN()
6SUDZG]DF]\ZDUWRĂÊQLHMHVWOLF]EÈ
toFixed()
=DRNUÈJODZDUWRĂÊGRSRGDQHMOLF]E\PLHMVFSRSU]HFLQNXG]LHVLÚWQ\P ZDUWRĂFLÈ
]ZURWQÈMHVWFLÈJWHNVWRZ\ toPrecision()
=DRNUÈJODZDUWRĂÊGRSRGDQHMOLF]E\F\IU ZDUWRĂFLÈ]ZURWQÈMHVWFLÈJWHNVWRZ\ toExponential()
=ZUDFDFLÈJWHNVWRZ\SU]HGVWDZLDMÈF\OLF]EÚZ\UDĝRQÈZQRWDFMLZ\NïDGQLF]HM
NAJCZĘŚCIEJ UŻYWANE POJĘCIA
ľ/LF]EDFDïNRZLWDWROLF]EDSR]EDZLRQDF]ÚĂFLXïDPNRZHM
ľ/LF]EDU]HF]\ZLVWDWROLF]EDNWöUDPRĝH]DZLHUDÊF]ÚĂÊXïDPNRZÈ
ľ/LF]ED]PLHQQRSU]HFLQNRZDWROLF]EDU]HF]\ZLVWD]DSLVDQD]Z\NRU]\VWDQLHPQRWDFMLXïDPNRZHM
3RMÚFLHķ]PLHQQRSU]HFLQNRZDĵRGQRVLVLÚGRSU]HFLQNDRGG]LHODMÈFHJRF]ÚĂÊG]LHVLÚWQÈ
ľ1RWDFMDZ\NïDGQLF]DWRVSRVöE]DSLVXOLF]ENWöUHVÈ]E\WGXĝHOXE]E\WPDïHDE\PRĝQDE\ïR
Z\JRGQLH]DSLVDÊMHZSRVWDFLG]LHVLÚWQHM1DSU]\NïDGOLF]EÚPRĝQD]DSLVDÊ
ZSRVWDFLŚ9OXEH
FUNKCJE, METODY I OBIEKTY
PRACA Z LICZBAMI
DZIESIĘTNYMI
3RGREQLHMDNZSU]\SDGNX
RELHNWXStringZïDĂFLZRĂFL
LPHWRG\RELHNWXNumberPRJÈ
E\ÊXĝ\WHGODNDĝGHMZDUWRĂFL
EÚGÈFHMOLF]EÈ
:RPDZLDQ\PSU]\NïDG]LH
OLF]EDMHVWSU]HFKRZ\ZDQD
Z]PLHQQHMRQD]ZLH
originalNumberDQDVWÚSQLH
]DRNUÈJODQD]DSRPRFÈGZöFK
UöĝQ\FKWHFKQLN
JAVASCRIPT
1
2
3
:REXSU]\SDGNDFKNRQLHF]QH
MHVWSRGDQLHOLF]E\F\IUGR
NWöU\FKPDQDVWÈSLÊ]DRNUÈJOHQLH:LHONRĂÊ]DRNUÈJOHQLD
MHVWSRGDZDQDZQDZLDVLHMDNR
SDUDPHWUPHWRG\
c03/js/number-object.js
YDURULJLQDO1XPEHU YDUPVJ ijK!OLF]EDSRF]ÈWNRZDK!S!ijRULJLQDO1XPEHUijS!ij
PVJ ijK!WU]\PLHMVFDG]LHVLÚWQHK!S!ijRULJLQDO1XPEHUWR)L[HG ijS!ij
PVJ ijK!WU]\F\IU\K!S!ijRULJLQDO1XPEHUWR3UHFLVLRQ ijS!ij
YDUHO GRFXPHQWJHW(OHPHQW%\,G ijLQIRij HOLQQHU+70/ PVJ
WYNIK
3ROHFHQLH
originalNumber.toFixed(3)
VSRZRGXMH]DRNUÈJOHQLH
OLF]E\SU]HFKRZ\ZDQHM
Z]PLHQQHMoriginalNumber
GRWU]HFKPLHMVFSRSU]HFLQNX
G]LHVLÚWQ\P /LF]EDPLHMVF
SRSU]HFLQNXMHVWSRGDQD
ZQDZLDVLH :DUWRĂFLÈ]ZURWQÈ
PHWRG\MHVWFLÈJWHNVWRZ\
SRQLHZDĝJG\OLF]ED]RVWDQLH
]DRNUÈJORQDQLHPRĝQD
GRNïDGQLHMHMSU]HGVWDZLÊMDNR
OLF]E\]PLHQQRSU]HFLQNRZHM
0HWRGDtoPrecision(3)
Xĝ\ZDZDUWRĂFLSRGDQHMZQDZLDVLHGRZVND]DQLDFDïNRZLWHM
OLF]E\F\IUNWöUHPDMÈWZRU]\Ê
OLF]EÚ:DUWRĂÊ]ZURWQDUöZQLHĝ
MHVWFLÈJLHPWHNVWRZ\P *G\
LVWQLHMHZLÚNV]DOLF]EDF\IUQLĝ
SRGDQDZZ\ZRïDQLXZDUWRĂÊ
]ZURWQDPRĝHE\ÊZSRVWDFL
QRWDFMLZ\NïDGQLF]HM FUNKCJE, METODY I OBIEKTY OBIEKTY GLOBALNE —
OBIEKT MATH
2ELHNWMathPDZïDĂFLZRĂFLLPHWRG\SU]H]QDF]RQH
GRSUDF\]IXQNFMDPLLVWDï\PLPDWHPDW\F]Q\PL
:’$¥&,:2¥m
23,6
Math.PI
=ZUDFDZDUWRĂÊSL F]\OLZSU]\EOLĝHQLX 0(72'$
23,6
Math.round()
=DRNUÈJODOLF]EÚGRQDMEOLĝV]HMOLF]E\FDïNRZLWHM
Math.sqrt(n)
=ZUDFDSLHUZLDVWHNNZDGUDWRZ\OLF]E\GRGDWQLHMQDSU]\NïDGZ\ZRïDQLH
0DWKVTUW ]ZUDFD3
Math.ceil()
=DRNUÈJODOLF]EÚZJöUÚGRQDMEOLĝV]HMOLF]E\FDïNRZLWHM
0DWKĠRRU
=DRNUÈJODOLF]EÚZGöïGRQDMEOLĝV]HMOLF]E\FDïNRZLWHM
Math.random()
*HQHUXMHORVRZRZ\EUDQÈOLF]EÚ]]DNUHVXRG0 ZïÈF]QLH GR1 Z\NOXF]DMÈF 3RQLHZDĝRELHNWMathMHVW
RELHNWHPJOREDOQ\PPRĝQD
SRSURVWXSRGDÊMHJRQD]ZÚ
NURSNÚRUD]QD]ZÚZïDĂFLZRĂFL
OXEPHWRG\GRNWöUHMFKFHV]
X]\VNDÊGRVWÚS
2WU]\PDQÈOLF]EÚEÚG]LHV]
SöěQLHM]Z\NOHSU]HFKRZ\ZDÊ
Z]PLHQQHM2ELHNWPRĝHPLHÊ
ZLHOHIXQNFMLWU\JRQRPHWU\F]Q\FKQDSU]\NïDGsin(), cos()
Ltan()
FUNKCJE, METODY I OBIEKTY
:DUWRĂÊ]ZURWQDIXQNFMLWU\JRQRPHWU\F]Q\FKMHVWSRGDZDQD
ZUDGLDQDFKNWöUHPRĝQD
VNRQZHUWRZDÊQDVWRSQLH
:W\PFHOXZDUWRĂÊSRG]LHO
SU]H](Pi/180)
WYGENEROWANIE LICZBY
LOSOWEJ ZA POMOCĄ
OBIEKTU MATH
7HQSU]\NïDGSRND]XMHZ\JHQHURZDQLHOLF]E\FDïNRZLWHM
]]DNUHVXRGGR
0HWRGDrandom()RELHNWXMath
SRZRGXMHZ\JHQHURZDQLHOLF]E\
ORVRZHM]]DNUHVXRGGR
L]DZLHUDMÈFHMZLHOHPLHMVFSR
SU]HFLQNXG]LHVLÚWQ\P $E\RWU]\PDÊOLF]EÚFDïNRZLWÈ]]DNUHVXRGGR
NRQLHF]QHMHVWSRPQRĝHQLH
OLF]E\ORVRZRZ\JHQHURZDQHM
SU]H]
7DOLF]EDQDGDOEÚG]LHPLDïD
F]ÚĂÊG]LHVLÚWQÈLGODWHJRWU]HED
MÈ]DRNUÈJOLÊZGöïGRQDMEOLĝV]HMOLF]E\FDïNRZLWHM
:WHQVSRVöERWU]\PDV]ZDUWRĂÊ]]DNUHVXRGGR-HĝHOL
QDVWÚSQLHGRGDV]WRPDV]
OLF]EÚ]]DNUHVXRGGR
c03/js/math-object.js
JAVASCRIPT
YDUUDQGRP1XP 0DWKĠRRU
0HWRGDĠRRU MHVWXĝ\ZDQD
GRQDND]DQLDSU]HSURZDG]HQLD
RSHUDFML]DRNUÈJOHQLDOLF]E\
ZGöï DQLHZJöUÚlubZGöï 0DWKUDQGRP
YDUHO GRFXPHQWJHW(OHPHQW%\,G ijLQIRij HOLQQHU+70/ ijK!ORVRZRZ\JHQHURZDQDOLF]EDK!S!ijUDQGRP1XPijS!ij
WYNIK
:SU]\SDGNXXĝ\FLDPHWRG\
round()]DPLDVWĠRRU OLF]E\
LEÚGÈZ\ELHUDQH]QDF]QLH
F]ÚĂFLHMQLĝOLF]E\RGGR
:V]\VWNLHOLF]E\]]DNUHVXRG
GREÚGÈ]DRNUÈJODQH
GRQDWRPLDVWPLÚG]\L
EÚGÈ]DRNUÈJODQHGR
8ĝ\FLHPHWRG\ĠRRU JZDUDQWXMHĝHZ\JHQHURZDQDOLF]ED
]DZV]HEÚG]LH]DRNUÈJORQD
ZGöïGRQDMEOLĝV]HMOLF]E\
FDïNRZLWHM1DVWÚSQLHPRĝQD
GRQLHMGRGDÊLW\PVDP\P
X]\VNDÊOLF]EÚ]]DNUHVXRG
GR
FUNKCJE, METODY I OBIEKTY
UTWORZENIE EGZEMPLARZA
OBIEKTU DATE
$E\PöFSUDFRZDÊ]GDWÈWU]HEDXWZRU]\ÊHJ]HPSODU]RELHNWXDate
1DVWÚSQLHPRĝQDZVND]DÊGDWÚLJRG]LQÚMDNDPDE\Ê
SU]HGVWDZLRQD]DSRPRFÈWHJRRELHNWX
$E\XWZRU]\ÊRELHNWDateQDOHĝ\Xĝ\ÊIXQNFML
NRQVWUXNWRUDRQD]ZLHDate()6NïDGQLDMHVW
GRNïDGQLHWDNDVDPDMDNZSU]\SDGNXLQQ\FK
IXQNFMLNRQVWUXNWRUD SDWU]SRGUR]G]LDïķ8WZRU]HQLHZLHOXRELHNWöZĽQRWDFMD]Xĝ\FLHP
NRQVWUXNWRUDĵ :\PLHQLRQÈIXQNFMÚNRQVWUXNWRUD
PRĝQDZ\NRU]\VWDÊGRXWZRU]HQLDZLÚFHMQLĝW\ONR
MHGQHJRRELHNWXDate
NAZWA
ZMIENNEJ
'RP\ĂOQLHWZRU]RQ\RELHNWDateEÚG]LH]DZLHUDï
ELHĝÈFÈGDWÚLELHĝÈFÈJRG]LQÚ-HĝHOLFKFHV]
ZQLPSU]HFKRZ\ZDÊLQQÈGDWÚPXVLV]Z\UDěQLH
SRGDÊGDWÚLJRG]LQÚNWöUHPDMÈE\ÊSU]HFKRZ\ZDQH
SŁOWO
KLUCZOWE
NEW
var today = new Date()
DEKLARACJA
ZMIENNEJ
OPERATOR
PRZYPISANIA
3RZ\ĝV]HSROHFHQLHPRĝHV]SRWUDNWRZDÊMDNR
WZRU]ÈFH]PLHQQÈRQD]ZLHtodayLSU]HFKRZXMÈFÈOLF]EÚ:\QLNDWR]IDNWXĝHZMÚ]\NX-DYD6FULSWGDWDMHVWSU]HFKRZ\ZDQDZSRVWDFLOLF]E\
DGRNïDGQLHOLF]E\PLOLVHNXQGNWöUHXSï\QÚï\RG
SöïQRF\GQLDVW\F]QLDURNX
=ZUöÊXZDJÚĝHELHĝÈFDGDWDLJRG]LQDVÈ
RNUHĂODQHQDSRGVWDZLH]HJDUDNRPSXWHUD-HĝHOL
Xĝ\WNRZQLN]QDMGXMHVLÚZLQQHMVWUHğHF]DVRZHM
QLĝ7\MHJRG]LHñPRĝH]DF]\QDÊVLÚZF]HĂQLHM
OXESöěQLHMQLĝ7ZöM3RQDGWRMHĂOLZHZQÚWU]Q\
]HJDUNRPSXWHUDEÚG]LHSRGDZDïQLHSUDZLGïRZÈ
GDWÚOXEJRG]LQÚWRRELHNWDateRG]ZLHUFLHGOLWÚ
QLHSUDZLGïRZRĂÊLUöZQLHĝEÚG]LH]DZLHUDïEïÚGQÈ
GDWÚ
FUNKCJE, METODY I OBIEKTY
KONSTRUKTOR
OBIEKTU DATE
)XQNFMDNRQVWUXNWRUDDate()LQIRUPXMH-DYD6FULSW
ĝH]PLHQQDMHVWGDWÈ7RSR]ZDODQDXĝ\FLHPHWRG
RELHNWXDateZFHOXXVWDZLDQLDLSRELHUDQLDGDW\
RUD]JRG]LQ\]RELHNWXDate OLVWÚPHWRG]QDMG]LHV]QDVWURQLHSRSUDZHM 8VWDZLHQLHGDW\L OXE JRG]LQ\PRĝQDSU]HSURZDG]LÊ]DSRPRFÈGRZROQHJR]SRQLĝV]\FKIRUPDWöZ
OXEPHWRGZ\PLHQLRQ\FKQDVWURQLHSRSUDZHM YDUGRE QHZ'DWH YDUGRE QHZ'DWH ij'HFij YDUGRE QHZ'DWH OBIEKTY GLOBALNE — OBIEKT
DATY (I GODZINY)
*G\PDP\XWZRU]RQ\RELHNWDateZ\PLHQLRQHSRQLĝHMPHWRG\
SR]ZDODMÈQDXVWDZLHQLHOXESRELHUDQLHGDW\LJRG]LQ\
SU]HGVWDZLDQHMSU]H]GDQ\RELHNW
0(72'$
getDate()
23,6
setDate()
=ZUDFDOXEXVWDZLDG]LHñPLHVLÈFD RGGR =ZUDFDG]LHñW\JRGQLD RGGR getDay()
getFullYear()
setFullYear()
=ZUDFDOXEXVWDZLDURN F\IU\ getHours()
setHours()
=ZUDFDOXEXVWDZLDJRG]LQÚ RGGR getMilliseconds()
setMilliseconds() =ZUDFDOXEXVWDZLDPLOLVHNXQG\ RGGR setMilliseconds()
setMinutes()
=ZUDFDOXEXVWDZLDPLQXW\ RGGR getMonth()
setMonth()
=ZUDFDOXEXVWDZLDPLHVLÈF RGGR getSeconds()
setSeconds()
=ZUDFDOXEXVWDZLDVHNXQG\ RGGR getTime()
setTime()
/LF]EDPLOLVHNXQGNWöUHXSï\QÚï\RGVW\F]QLDURNX
87&'ODGDW\VSU]HGSRGDQHJRGQLDZDUWRĂÊMHVWXMHPQD
getTimezoneOffset()
=ZUDFDZ\UDĝRQHZPLQXWDFKSU]HVXQLÚFLHVWUHI\F]DVRZHMGOD
ELHĝÈFHMORNDOL]DFML
toDateString()
=ZUDFDķGDWÚĵZSRVWDFLFLÈJXWHNVWRZHJRF]\WHOQHJRGODF]ïRZLHND
toTimeString()
=ZUDFDķJRG]LQÚĵZSRVWDFLFLÈJXWHNVWRZHJRF]\WHOQHJRGOD
F]ïRZLHND
toString()
=ZUDFDFLÈJWHNVWRZ\SU]HGVWDZLDMÈF\ZVND]DQÈGDWÚ
0HWRGDtoDateString()
Z\ĂZLHWOLGDWÚZQDVWÚSXMÈF\P
IRUPDFLHĂUNZL
-HĝHOLFKFHV]Z\ĂZLHWOLÊGDWÚ
ZLQQ\VSRVöEWRQDOHĝ\SU]\JRWRZDÊRGSRZLHGQLIRUPDW]D
SRPRFÈPHWRGZ\PLHQLRQ\FK
SRZ\ĝHMLSU]HGVWDZLDMÈF\FK
SRV]F]HJöOQHNRPSRQHQW\GDW\
G]LHñW\JRGQLDNROHMQ\G]LHñ
PLHVLÈFDPLHVLÈFLURN
0HWRGDtoTimeString()Z\ĂZLHWODJRG]LQÚ:LHOHMÚ]\NöZ
SURJUDPRZDQLDSRGDMHGDWÚ
ZSRVWDFLOLF]E\PLOLVHNXQG
NWöUHXSï\QÚï\RGSöïQRF\GQLD
VW\F]QLDURNX7RMHVW
WDN]ZDQ\F]DVV\VWHPX8QL[
3RïRĝHQLHJHRJUDğF]QHRGZLHG]DMÈFHJRZLWU\QÚPRĝHPLHÊ
ZSï\ZQDVWUHIÚF]DVRZÈLMÚ]\N
Z\NRU]\VW\ZDQ\ZXU]ÈG]HQLX
RGZLHG]DMÈFHJR3URJUDPLĂFL
Xĝ\ZDMÈZ\UDĝHQLDORNDOL]DFMD
ZRGQLHVLHQLXGRLQIRUPDFML
RSRïRĝHQLXXĝ\WNRZQLND
2ELHNWDateQLHSU]HFKRZXMH
QD]ZGQLW\JRGQLDLPLHVLÚF\
SRQLHZDĝVÈRQHUöĝQH
ZSRV]F]HJöOQ\FKMÚ]\NDFK
=DPLDVWWHJRXĝ\ZDF\IU\RG
GRZFHOXSU]HGVWDZLHQLD
GQLDW\JRGQLDRUD]RGGR
ZFHOXSU]HGVWDZLHQLD
PLHVLÈFD
$E\Z\ĂZLHWOLÊQD]ZÚGQLD
W\JRGQLDOXEPLHVLÈFD
NRQLHF]QHMHVWXWZRU]HQLH
WDEOLF\LSU]HFKRZ\ZDQLHZQLHM
RGSRZLHGQLFKQD]Z SDWU]
SU]\NïDGķ)XQNFMHPHWRG\
LRELHNW\ĵ FUNKCJE, METODY I OBIEKTY UTWORZENIE OBIEKTU DATE
:RPDZLDQ\PSU]\NïDG]LH
QRZ\RELHNWDateRQD]ZLH
today]RVWDMHXWZRU]RQ\]D
SRPRFÈIXQNFMLNRQVWUXNWRUD
Date()
-HĝHOLSRGF]DVWZRU]HQLD
RELHNWXDateQLH]RVWDQLH
SRGDQDĝDGQDGDWDWRRELHNW
EÚG]LH]DZLHUDïGDWÚLJRG]LQÚ
QDSRWNDQLDWHJRZLHUV]DNRGX
SU]H]LQWHUSUHWHU-DYD6FULSW
c03/js/date-object.js
JAVASCRIPT
1
2
3
YDUWRGD\ QHZ'DWH YDU\HDU WRGD\JHW)XOO<HDU
3RXWZRU]HQLXHJ]HPSODU]D
RELHNWXDate SU]HFKRZXMÈFHJRELHĝÈFÈGDWÚLJRG]LQÚ PRĝQDXĝ\ZDÊMHJRZïDĂFLZRĂFL
LPHWRG
YDUHO GRFXPHQWJHW(OHPHQW%\,G ijIRRWHUij HOLQQHU+70/ ijS!&RS\ULJKW FRS\ij\HDUijS!ij
WYNIK
:W\PSU]\NïDG]LHZLG]LV]
Xĝ\FLHPHWRG\getFullYear()
ZFHOXSREUDQLDURNXSU]HFKRZ\ZDQHJRZRELHNFLHDate
:RPDZLDQ\PSU]\NïDG]LH
URNZ\NRU]\VWXMHP\ZZLHUV]X
LQIRUPDFMLRSUDZDFKDXWRUVNLFK
FUNKCJE, METODY I OBIEKTY
PRACA Z DATĄ I GODZINĄ
$E\ZVND]DÊGDWÚLJRG]LQÚ
PRĝQDXĝ\ÊSRQLĝV]HJR
IRUPDWX
.ROHMQRĂÊLVNïDGQLDNRPSRQHQWöZSU]HGVWDZLDVLÚ
QDVWÚSXMÈFR
<<<<00''++0066
5RN
0LHVLÈF
3RZ\ĝV]\]DSLVSU]HGVWDZLD
GDWÚNZLHWQLDURNX
LJRG]LQÚ
']LHñ
*RG]LQD
0LQXWD
6HNXQGD
F]WHU\F\IU\
ļ
VW\F]HñWR
ļ
ļ
ļ
ļ
,QQ\IRUPDWGDW\MHVWQDVWÚSXMÈF\
000''<<<<++0066
$SU
-HĝHOLJRG]LQDMHVWQLHSRWU]HEQDPRĝQDMÈSRPLQÈÊ
0LOLVHNXQGD ļ
JAVASCRIPT
1
2
3
c03/js/date-object-difference.js
YDUWRGD\ QHZ'DWH YDU\HDU WRGD\JHW)XOO<HDU YDUHVW QHZ'DWH ij$SUij YDUGLIIHUHQFH WRGD\JHW7LPH HVWJHW7LPH GLIIHUHQFH GLIIHUHQFH YDUHO0VJ GRFXPHQWJHW(OHPHQW%\,G ijPHVVDJHij HO0VJWH[W&RQWHQW 0DWKĠRRU GLIIHUHQFH ijODWGRĂZLDGF]HQLDij
WYNIK
:RPDZLDQ\PSU]\NïDG]LH
SRND]DQRXVWDZLHQLHGDW\
]SU]HV]ïRĂFL
-HĝHOLSUöEXMHV]RNUHĂOLÊ
UöĝQLFÚPLÚG]\GZRPD
GDWDPLZ\QLNMHVWSRGDZDQ\
ZPLOLVHNXQGDFK
$E\X]\VNDÊUöĝQLFÚ
Z\UDĝRQÈZGQLDFKW\JRGQLDFK
OXEODWDFKRWU]\PDQÈOLF]EÚ
QDOHĝ\SRG]LHOLÊSU]H]OLF]EÚ
PLOLVHNXQGZGQLXW\JRGQLX
OXEURNX
7XWDMZDUWRĂÊMHVWG]LHORQD
SU]H]F]\OL
OLF]EÚPLOLVHNXQGZURNX WRQLH
MHVWURNSU]HVWÚSQ\ FUNKCJE, METODY I OBIEKTY FUNKCJE, METODY I OBIEKTY
PRZYKŁAD
FUNKCJE, METODY I OBIEKTY
3U]HGVWDZLRQ\WXWDMSU]\NïDGMHVWSRG]LHORQ\QD
GZLHF]ÚĂFL:SLHUZV]HM]QDMGXMÈVLÚLQIRUPDFMH
V]F]HJöïRZHRKRWHOXPLÚG]\LQQ\PLNRV]WZ\QDMÚFLD
SRNRMXLZ\VRNRĂÊUDEDWX:GUXJLHMF]ÚĂFLSRGDQR
LQIRUPDFMHRF]DVLHWUZDQLDSURPRFML
&Dï\NRGMHVWXPLHV]F]RQ\ZIXQNFMLW\SX,,)( Z\NRQ\ZDQHQDW\FKPLDVW
Z\UDĝHQLHIXQNFML 0DWRQDFHOX]DJZDUDQWRZDQLHĝHQD]Z\]PLHQQ\FK
ZVNU\SFLHQLHEÚGÈNROLGRZDï\]QD]ZDPL]PLHQQ\FKSRFKRG]ÈF\FK
]LQQ\FKVNU\SWöZ
&]ÚĂÊSLHUZV]DVNU\SWXWZRU]\RELHNWhotelZUD]]WU]HPDZïDĂFLZRĂFLDPL QD]ZDKRWHOXNRV]WZ\QDMÚFLDSRNRMXLZ\VRNRĂÊRIHURZDQHJR
UDEDWX 2SUöF]WHJRRELHNW]DZLHUDPHWRGÚNWöUDREOLF]DZ\ĂZLHWODQÈ
Xĝ\WNRZQLNRZLFHQÚXZ]JOÚGQLDMÈFÈUDEDW
,QIRUPDFMHV]F]HJöïRZHRUDEDFLHVÈZ\ĂZLHWODQHXĝ\WNRZQLNRZL]DSRPRFÈRELHNWXhotel$E\FHQDXZ]JOÚGQLDMÈFDUDEDWE\ïDZ\ĂZLHWODQD
ZUD]]F]ÚĂFLÈG]LHVLÚWQÈ MDNPDWRPLHMVFHZZLÚNV]RĂFLSU]\SDGNöZ
SRGDZDQLDFHQ ]DVWRVRZDQRPHWRGÚtoFixed()RELHNWXNumber
&]ÚĂÊGUXJDVNU\SWXSRND]XMHĝHRIHUWDZ\JDĂQLHZFLÈJXGQL'RWHJR
FHOXVïXĝ\IXQNFMDRQD]ZLHofferExpires()$NWXDOQLHXVWDZLRQDGDWD
ZNRPSXWHU]HXĝ\WNRZQLNDMHVWSU]HND]\ZDQDMDNRDUJXPHQWIXQNFML
offerExpires()REOLF]DMÈFHMGDWÚZ\JDĂQLÚFLDRIHUW\SURPRF\MQHM
:HZQÈWU]IXQNFMLofferExpires()WZRU]RQ\MHVWQRZ\RELHNWDate,
DGRGDW\]RVWDMHGRGDQ\FKVLHGHPGQL2ELHNWDateSU]HGVWDZLD
GQLLPLHVLÈFHZSRVWDFLOLF]E SRF]ÈZV]\RG 'ODWHJRWHĝZFHOX
Z\ĂZLHWOHQLDQD]Z\GQLDW\JRGQLDLPLHVLÈFD]RVWDï\XWZRU]RQHGZLH
WDEOLFHSU]HFKRZXMÈFHZV]\VWNLHQD]Z\GQLW\JRGQLDLPLHVLÚF\:FKZLOL
Z\ĂZLHWODQLDNRPXQLNDWXQDVWÚSXMHSREUDQLHRGSRZLHGQLHMQD]Z\GQLD
W\JRGQLDLPLHVLÈFD]HZVSRPQLDQ\FKWDEOLF
.RPXQLNDWZ\ĂZLHWODMÈF\GDWÚZ\JDĂQLÚFLDRIHUW\SURPRF\MQHMMHVW
SU]\JRWRZ\ZDQ\Z]PLHQQHMRQD]ZLHexpiryMsg.RGZ\ZRïXMÈF\
IXQNFMÚofferExpires()LZ\ĂZLHWODMÈF\NRPXQLNDW]QDMGXMHVLÚQDNRñFX
VNU\SWX:\V]XNXMHHOHPHQWZNWöU\PSRZLQLHQ]QDOHěÊVLÚNRPXQLNDWDQDVWÚSQLHXDNWXDOQLDMHJR]DZDUWRĂÊ]DSRPRFÈZïDĂFLZRĂFL
innerHTMLNWöUD]RVWDQLHRPöZLRQDZUR]G]LDOH
FUNKCJE, METODY I OBIEKTY
PRZYKŁAD
FUNKCJE, METODY I OBIEKTY
c03/js/example.js
JAVASCRIPT
7HQVNU\SWMHVWXPLHV]F]RQ\ZQDW\FKPLDVWZ\NRQ\ZDQ\PZ\UDĝHQLXIXQNFML
FRSRPDJDZRFKURQLH]DNUHVX]PLHQQ\FK (function() {
&]ÚĂÊ,8WZRU]HQLHRELHNWXKRWHORUD]Z\ĂZLHWOHQLHV]F]HJöïöZRIHUW\
8WZRU]HQLHRELHNWXKRWHO]DSRPRFÈVNïDGQLOLWHUDïXRELHNWX
var hotel = {
QDPHij3DUNij
URRP5DWH// :DUWRĂÊZ\UDĝRQDZ]ïRW\FK
GLVFRXQW5DEDWZ\UDĝRQ\ZSURFHQWDFK
offerPrice: function() {
YDURIIHU5DWH WKLVURRP5DWH WKLVGLVFRXQW UHWXUQRIIHU5DWH
}
}
:\ĂZLHWOHQLHQD]Z\KRWHOXFHQ\VWDQGDUGRZHMRUD]FHQ\VSHFMDOQHM
]XZ]JOÚGQLRQ\PUDEDWHP
YDUKRWHO1DPHURRP5DWHVSHFLDO5DWH'HNODUDFMD]PLHQQ\FK
KRWHO1DPH GRFXPHQWJHW(OHPHQW%\,G ijKRWHO1DPHij 3REUDQLHHOHPHQWöZ
URRP5DWH GRFXPHQWJHW(OHPHQW%\,G ijURRP5DWHij VSHFLDO5DWH GRFXPHQWJHW(OHPHQW%\,G ijVSHFLDO5DWHij KRWHO1DPHWH[W&RQWHQW KRWHOQDPH:\ĂZLHWOHQLHQD]Z\KRWHOX
URRP5DWHWH[W&RQWHQW KRWHOURRP5DWHWR)L[HG ij]ïij
:\ĂZLHWOHQLHFHQ\VWDQGDUGRZHM
VSHFLDO5DWHWH[W&RQWHQW KRWHORIIHU3ULFH ij]ïij
:\ĂZLHWOHQLHFHQ\VSHFMDOQHM]XZ]JOÚGQLRQ\PUDEDWHP
*G\]DSR]QDV]VLÚ]NRPHQWDU]DPL]DPLHV]F]RQ\PLZNRG]LH]UR]XPLHV]MDNG]LDïDRPDZLDQ\
WXWDMSU]\NïDG
FUNKCJE, METODY I OBIEKTY
PRZYKŁAD
FUNKCJE, METODY I OBIEKTY
c03/js/example.js
JAVASCRIPT
&]ÚĂÊ,,2EOLF]HQLHLZ\ĂZLHWOHQLHV]F]HJöïöZGRW\F]ÈF\FKF]DVXWUZDQLDRIHUW\
SURPRF\MQHM YDUH[SLU\0VJ.RPXQLNDWZ\ĂZLHWODQ\Xĝ\WNRZQLNRZL
YDUWRGD\%LHĝÈFDGDWD
YDUHO(QGV(OHPHQWZ\ĂZLHWODMÈF\NRPXQLNDWRGDFLHZ\JDĂQLÚFLDRIHUW\SURPRF\MQHM
function offerExpires(today) {
=DGHNODURZDQLH]PLHQQ\FKZIXQNFMLDZLÚFPDMÈ]DNUHVORNDOQ\
YDUZHHN)URP7RGD\GD\GDWHPRQWK\HDUGD\1DPHVPRQWK1DPHV
'RGDQLHVLHGPLXGQL Z\UDĝRQ\FKZPLOLVHNXQGDFK ZHHN)URP7RGD\ QHZ'DWH WRGD\JHW7LPH 8WZRU]HQLHWDEOLFSU]HFKRZXMÈF\FKQD]Z\GQLW\JRGQLDLPLHVLÚF\
GD\1DPHV >ijQLHG]LHOÚijijSRQLHG]LDïHNijijZWRUHNijijĂURGÚijijF]ZDUWHNij
ijSLÈWHNijijVRERWÚij@
PRQWK1DPHV >ijVW\F]QLDijijOXWHJRijijPDUFDijijNZLHWQLDijijPDMDijijF]HUZFDij
ijOLSFDijijVLHUSQLDijijZU]HĂQLDijijSDěG]LHUQLNDijijOLVWRSDGDijijJUXGQLDij@
:\EöUNRPSRQHQWöZGDW\Z\ĂZLHWODQHMQDVWURQLH
GD\ GD\1DPHV>ZHHN)URP7RGD\JHW'D\ @
GDWH ZHHN)URP7RGD\JHW'DWH PRQWK PRQWK1DPHV>ZHHN)URP7RGD\JHW0RQWK @
\HDU ZHHN)URP7RGD\JHW)XOO<HDU 3U]\JRWRZDQLHNRPXQLNDWX
H[SLU\0VJ ij2IHUWDZ\JDVDZij
H[SLU\0VJ GD\ijEU! ijGDWHijijPRQWKijij\HDUij ij
UHWXUQH[SLU\0VJ
}
WRGD\ QHZ'DWH 8PLHV]F]HQLHG]LVLHMV]HMGDW\Z]PLHQQHM
HO(QGV GRFXPHQWJHW(OHPHQW%\,G ijRIIHU(QGVij 3REUDQLHHOHPHQWXRIIHU(QGV
HO(QGVLQQHU+70/ RIIHU([SLUHV WRGD\ :\ĂZLHWOHQLHSU]\JRWRZDQHJRNRPXQLNDWX
.RQLHFQDW\FKPLDVWZ\ZRïDQHJRZ\UDĝHQLDIXQNFML
`
7HQV\PEROR]QDF]DĝHNRG
SRFKRG]L]SRSU]HGQLHJRZLHUV]DLQLHZROQRWXWDMZVWDZLDÊ
]QDNXQRZHJRZLHUV]D
:W\PSU]\NïDG]LHSU]HGVWDZLRQRNLONDNRQFHSFML]ZLÈ]DQ\FK]GDWÈ
-HĝHOLXĝ\WNRZQLNPDXVWDZLRQÈQLHSUDZLGïRZÈGDWÚZNRPSXWHU]H
EïÚGQLHG]LDïDMÈF\]HJDU WRZ\ĂZLHWORQDGDWDEÚG]LHZVND]\ZDïD
VLHGHPGQLQLHRGFKZLOLREHFQHMDOHRGGDW\XVWDZLRQHMZNRPSXWHU]HXĝ\WNRZQLND
FUNKCJE, METODY I OBIEKTY
PODSUMOWANIE
FUNKCJE, METODY I OBIEKTY
f )XQNFMHSR]ZDODMÈQD]JUXSRZDQLHSRZLÈ]DQ\FK]HVREÈ
SROHFHñSU]HGVWDZLDMÈF\FK]DGDQLH
f )XQNFMHPRJÈSRELHUDÊSDUDPHWU\ LQIRUPDFMHZ\PDJDQH
GRZ\NRQDQLD]DGDQLD RUD]]ZUDFDÊZDUWRĂÊ
f 2ELHNWWRVHULD]PLHQQ\FKLIXQNFMLSU]HGVWDZLDMÈF\FKU]HF]
SRFKRG]ÈFÈ]HĂZLDWDU]HF]\ZLVWHJR
f :RELHNFLH]PLHQQHVÈQD]\ZDQHZïDĂFLZRĂFLDPLRELHNWX
QDWRPLDVWIXQNFMHWRPHWRG\RELHNWX
f 3U]HJOÈGDUNLLQWHUQHWRZHLPSOHPHQWXMÈRELHNW\
SU]HGVWDZLDMÈFH]DUöZQRRNQRSU]HJOÈGDUNLMDNLZF]\WDQ\
ZQLPGRNXPHQW
f -DYD6FULSWPDZLHOHZEXGRZDQ\FKRELHNWöZWDNLFKMDN
String, Number, MathLDate,FKZïDĂFLZRĂFLLPHWRG\RIHUXMÈ
IXQNFMRQDOQRĂÊNWöUDPRĝHSRPöFZWZRU]HQLXVNU\SWöZ
f 7DEOLFHLRELHNW\PRJÈE\ÊXĝ\ZDQHZFHOXWZRU]HQLD
VNRPSOLNRZDQ\FK]ELRUöZGDQ\FK REDW\S\PRJÈ]DZLHUDÊVLÚ
QDZ]DMHP FUNKCJE, METODY I OBIEKTY
4
DECYZJE I PĘTLE
3DWU]ÈFQDGLDJUDP\ ]ïRĝRQ\FKVNU\SWöZ ïDWZRGRVWU]HF
ĝHNRGPRĝHE\ÊZ\NRQ\ZDQ\QDZLHOHVSRVREöZ2]QDF]D
WRĝHSU]HJOÈGDUNDLQWHUQHWRZDZ\NRQXMHUöĝQHIUDJPHQW\
NRGXZ]DOHĝQRĂFLRGV\WXDFML:W\PUR]G]LDOHGRZLHV]
VLÚMDNNRQWURORZDÊSU]HSï\ZGDQ\FKZVNU\SWDFKDE\W\P
VDP\P]DSHZQLÊLPPRĝOLZRĂÊREVïXJLUöĝQ\FKV\WXDFML
=DFKRZDQLHVNU\SWöZ]D]Z\F]DMSRZLQQRE\ÊX]DOHĝQLRQHRGVSRVREXZMDNLXĝ\WNRZQLN
NRU]\VWD]HVWURQ\LQWHUQHWRZHMOXERNQDSU]HJOÈGDUNL:FHOXRNUHĂOHQLDVWRVRZDQHJR
SRGHMĂFLDSURJUDPLĂFL]Z\NOHRSLHUDMÈVLÚQDWU]HFKQDVWÚSXMÈF\FKNRQFHSFMDFK
152
OCENA
DECYZJE
PĘTLE
:DUWRĂFLZVNU\SFLHPRĝQD
SU]HDQDOL]RZDÊLXVWDOLÊF]\
VÈ]JRGQH]RF]HNLZDQLDPL
1DSRGVWDZLHZ\QLNXRFHQ\
PRĝQDSRGMÈÊGHF\]MHRVSRVRELHZ\NRQDQLDVNU\SWX
,VWQLHMHZLHOHV\WXDFML
ZNWöU\FK]DFKRG]LSRWU]HED
NROHMQHJRZ\NRQDQLDW\FK
VDP\FKNURNöZ
'(&<=-(,3}7/(
'(&<=-(,3}7/( 153
PODEJMOWANIE DECYZJI
:VNU\SFLH]UHJXï\]QDMGXMHVLÚZLHOHPLHMVFZNWöU\FKSRGHMPRZDQHVÈ
GHF\]MHZSï\ZDMÈFHQDZ\NRQ\ZDQHQDVWÚSQLHZLHUV]HNRGX
'LDJUDP\PRJÈSRPöFZ]DSODQRZDQLXZVSRPQLDQ\FKPLHMVF
1DSU]HGVWDZLRQ\PGLDJUDPLHURPEZVND]XMH
SXQNWZNWöU\PWU]HEDSRGMÈÊGHF\]MÚDNRG
PRĝHSRGÈĝDÊW\ONRMHGQÈ]GZöFKGRVWÚSQ\FK
ĂFLHĝHN.DĝGD]HĂFLHĝHNVNïDGDVLÚ]UöĝQHJR
]HVWDZX]DGDñFRR]QDF]DNRQLHF]QRĂÊSU]\JRWRZDQLDNRGXGODREXV\WXDFML
N
:FHOXRNUHĂOHQLDĂFLHĝNLNRGXGRZ\NRQDQLD
QDOHĝ\]GHğQLRZDÊwarunek1DSU]\NïDGPRĝQD
VSUDZG]LÊZDUWRĂÊMHGQHM]PLHQQHMZ]JOÚGHPLQQHM ķZLÚNV]DQLĝĵķUöZQDĵķPQLHMV]DQLĝĵ -HĝHOL
ZDUXQHNSU]\MPXMHZDUWRĂÊtrueWRZ\ELHUDQD
MHVWMHGQDĂFLHĝNDNRGXQDWRPLDVWZDUWRĂÊfalse
R]QDF]DZ\EöULQQHMĂFLHĝNLNRGX
Czy wynik testu
jest większy niż
50?
Komunikat: Spróbuj ponownie…
T
Komunikat: Zaliczyłeś!
KONTYNUACJA SKRYPTU
3R]DRSHUDWRUDPLSU]HSURZDG]DMÈF\PLSRGVWDZRZHRSHUDFMHPDWHPDW\F]QHOXEïÈF]ÈF\PLGZD
FLÈJLWHNVWRZHLVWQLHMÈMHV]F]Hoperatory porównaniaNWöUHSR]ZDODMÈQDSRUöZQ\ZDQLHZDUWRĂFL
LVSUDZG]DQLHF]\ZDUXQHN]RVWDïVSHïQLRQ\
154 '(&<=-(,3}7/(
'RRSHUDWRUöZSRUöZQDQLD]DOLF]DP\ķZLÚNV]\
QLĝĵ > ķPQLHMV]\QLĝĵ < LUöZQRĂFL == 2VWDWQL
]QLFKWRGZD]QDNLUöZQRĂFLĽRSHUDWRUVSUDZG]DF]\ZDUWRĂFLVÈWDNLHVDPH
OCENA WARUNKU I POLECEŃ
WARUNKOWYCH
0DP\GZDVNïDGQLNLSRGF]DVSRGHMPRZDQLDGHF\]ML
2FHQLDQHZ\UDĝHQLHNWöUH]ZUDFDZDUWRĂÊ
3ROHFHQLHZDUXQNRZHZVND]XMÈFHG]LDïDQLHSRGHMPRZDQH
ZGDQHMV\WXDFML
OCENA WARUNKU
POLECENIA WARUNKOWE
:FHOXSRGMÚFLDGHF\]MLNRGVSUDZG]DELHĝÈF\
VWDQVNU\SWX1DMF]ÚĂFLHMRGE\ZDVLÚWRSU]H]
SRUöZQDQLHGZöFKZDUWRĂFL]DSRPRFÈRSHUDWRUD
SRUöZQDQLDNWöUHJRZDUWRĂFLÈ]ZURWQÈMHVWtrue
OXEfalse
3ROHFHQLHZDUXQNRZHMHVWRSDUWHQDNRQFHSFML
SROHFHñif/then/else-HĝHOL if ZDUXQHN]RVWDï
VSHïQLRQ\WR then NRGZ\NRQXMHSROHFHQLH
SROHFHQLD ZSU]HFLZQ\PUD]LH else NRG
Z\NRQXMHFRĂ]XSHïQLHLQQHJR OXEWHĝ]XSHïQLH
SRPLMDNURN WARUNEK
DZIAŁANIE KODU
if (score > 50) {
-HĝHOLZDUXQHN]ZUöFLZDUWRĂÊtrue
GRFXPHQWZULWH ij=DOLF]\ïHĂij Z\NRQDQH]RVWDQÈSROHFHQLDXMÚWH
ZpierwszymQDZLDVLHNODPURZ\P
} else {
ZSU]HFLZQ\PUD]LH
GRFXPHQWZULWH ij6SUöEXMSRQRZQLHij Z\NRQDQH]RVWDQÈSROHFHQLDXMÚWH
ZdrugimQDZLDVLHNODPURZ\P
}
,VWQLHMHPRĝOLZRĂÊ]DVWRVRZDQLDZLHOXZDUXQNöZ
SU]H]LFKSRïÈF]HQLH]DSRPRFÈGZöFKOXEZLÚFHM
RSHUDWRUöZSRUöZQDQLD1DSU]\NïDGPRĝQD
VSUDZG]LÊF]\VSHïQLRQH]RVWDï\REDZDUXQNLOXE
W\ONRMHGHQ]NLONX]GHğQLRZDQ\FK
:SRGUR]G]LDOHķ:DUWRĂFLWUXWK\LIDOV\ĵ
SR]QDV]ZDUWRĂFLtruthyLfalsyĽVÈ
RQHWUDNWRZDQHMDNRtrueLfalse 1DNROHMQ\FKNLONXVWURQDFKSR]QDV]UöĝQH
RGPLDQ\SROHFHñifDWDNĝHSROHFHQLHRQD]ZLH
switch:V]\VWNLHUD]HPVÈRNUHĂODQHPLDQHP
SROHFHñZDUXQNRZ\FK
'(&<=-(,3}7/(
155
OPERATORY PORÓWNANIA —
OCENA WARUNKÓW
6\WXDFMÚPRĝQDRFHQLÊSU]H]SRUöZQDQLHZDUWRĂFLZVNU\SFLH]RF]HNLZDQÈ
:\QLNLHPEÚG]LHZDUWRĂÊERRORZVNDtrueOXEfalse
==
(RÓWNY Z)
(RÓŻNY)
7HQRSHUDWRUSRUöZQXMHGZLHZDUWRĂFL OLF]E\
FLÈJLWHNVWRZHZDUWRĂFLERRORZVNLH LVSUDZG]D
F]\VÈWDNLHVDPH
7HQRSHUDWRUSRUöZQXMHGZLHZDUWRĂFL OLF]E\
FLÈJLWHNVWRZHZDUWRĂFLERRORZVNLH LVSUDZG]D
F]\VÈUöĝQH
:\QLNLHPSRUöZQDQLD’Witaj’ == ij¿HJQDMij MHVW
IDOVHSRQLHZDĝZDUWRĂFLnieSU]HGVWDZLDMÈWHJR
VDPHJRFLÈJXWHNVWRZHJR
:\QLNLHPSRUöZQDQLD ’Witaj’ != ij¿HJQDMij MHVW
WUXHSRQLHZDĝZDUWRĂFLnieSU]HGVWDZLDMÈWHJR
VDPHJRFLÈJXWHNVWRZHJR
:\QLNLHPSRUöZQDQLD ’Witaj’ == ’Witaj’ MHVW
WUXHSRQLHZDĝRELHZDUWRĂFLSU]HGVWDZLDMÈWHQ
VDPFLÈJWHNVWRZ\
:\QLNLHPSRUöZQDQLD ’Witaj’ != ’Witaj’ MHVW
IDOVHSRQLHZDĝRELHZDUWRĂFLSU]HGVWDZLDMÈWHQ
VDPFLÈJWHNVWRZ\
=Z\NOHSUHIHURZDQHMHVWXĝ\FLHPHWRG\ĂFLVïHM
=Z\NOHSUHIHURZDQHMHVWXĝ\FLHPHWRG\ĂFLVïHM
===
(IDENTYCZNY Z)
(NIEIDENTYCZNY Z)
7HQRSHUDWRUSRUöZQXMHGZLHZDUWRĂFLLVSUDZG]D
F]\]DUöZQRZDUWRĂFLMDNLW\S\GDQ\FKVÈWDNLH
VDPH
7HQRSHUDWRUSRUöZQXMHGZLHZDUWRĂFLLVSUDZG]D
F]\]DUöZQRZDUWRĂÊMDNLW\SGDQ\FKnieVÈWDNLH
VDPH
:\QLNLHPSRUöZQDQLD’3’ === 3 MHVW IDOVH
SRQLHZDĝSRUöZQ\ZDQHZDUWRĂFLnieVÈWHJR
VDPHJRW\SX
:\QLNLHPSRUöZQDQLD ’3’ !== 3 MHVW WUXH
SRQLHZDĝSRUöZQ\ZDQHZDUWRĂFLnieVÈGDQ\PL
WHJRVDPHJRW\SX
:\QLNLHPSRUöZQDQLD’3’ === ’3’ MHVW WUXH
SRQLHZDĝSRUöZQ\ZDQHZDUWRĂFLVÈWHJRVDPHJR
W\SXGDQ\FK
:\QLNLHPSRUöZQDQLD’3’ !== ’3’ MHVW IDOVH
SRQLHZDĝSRUöZQ\ZDQHZDUWRĂFLVÈGDQ\PLWHJR
VDPHJRW\SX
156 '(&<=-(,3}7/(
!==
=DGDQLHWHVWRZDQLDOXEVSUDZG]DQLDZDUXQNXSURJUDPLĂFL]Z\NOHRNUHĂODMÈPLDQHPoszacowania
ZDUXQNX6SUDZG]DQHZDUXQNLPRJÈE\Ê]QDF]QLH
EDUG]LHMVNRPSOLNRZDQHQLĝSU]HGVWDZLRQHWXWDM
DOHZ\QLNLHPRSHUDFML]Z\NOHMHVWZDUWRĂÊtrue
OXEfalse
,VWQLHMÈGZDZ\MÈWNLQDNWöUHZDUWR]ZUöFLÊ
XZDJÚ
L .DĝGDZDUWRĂÊPRĝHE\ÊpotraktowanaMDNR
trueOXEfalseQDZHWMHĂOLQLHMHVWZDUWRĂFLÈ
ERRORZVNÈĽSDWU]SRGUR]G]LDïķ:DUWRĂFLWUXWK\
LIDOV\ĵ
LL :NUöWNLPRV]DFRZDQLXZDUXQHNQLHPXVLE\Ê
VSUDZG]DQ\ĽSDWU]SRGUR]G]LDïķ3U]HUZDQLH
REOLF]DQLDZDUWRĂFLĵ
(WIĘKSZY NIŻ)
>
(MNIEJSZY NIŻ)
7HQRSHUDWRUVSUDZG]DF]\OLF]EDSROHZHMVWURQLH
MHVWZLÚNV]DQLĝOLF]EDSRSUDZHMVWURQLH
7HQRSHUDWRUVSUDZG]DF]\OLF]EDSROHZHMVWURQLH
MHVWPQLHMV]DQLĝOLF]EDSRSUDZHMVWURQLH
:\QLNLHPSRUöZQDQLD 4 > 3 MHVW WUXH
:\QLNLHPSRUöZQDQLD 4 < 3 MHVW IDOVH
:\QLNLHPSRUöZQDQLD 3 < 4 MHVW IDOVH
:\QLNLHPSRUöZQDQLD 3 < 4 MHVW WUXH
>=
<
<=
(WIĘKSZY NIŻ LUB RÓWNY)
(MNIEJSZY NIŻ LUB RÓWNY)
7HQRSHUDWRUVSUDZG]DF]\OLF]EDSROHZHMVWURQLH
MHVWZLÚNV]DQLĝOXEUöZQDOLF]ELHSRSUDZHM
VWURQLH
7HQRSHUDWRUVSUDZG]DF]\OLF]EDSROHZHMVWURQLH
MHVWPQLHMV]DQLĝOXEUöZQDOLF]ELHSRSUDZHM
VWURQLH
:\QLNLHPSRUöZQDQLD 4 >= 3 MHVW WUXH
:\QLNLHPSRUöZQDQLD 4 <= 3 MHVW IDOVH
:\QLNLHPSRUöZQDQLD 3 <= 4 MHVW IDOVH
:\QLNLHPSRUöZQDQLD 3 <= 4 MHVW WUXH
:\QLNLHPSRUöZQDQLD 3 >= 3 MHVW WUXH
:\QLNLHPSRUöZQDQLD 3 <= 3 MHVW WUXH
'(&<=-(,3}7/(
157
STRUKTURA OPERATORÓW
PORÓWNANIA
3UDNW\F]QLHZNDĝG\PZDUXQNXVÈMHGHQRSHUDWRULGZDRSHUDQG\
XPLHV]F]RQHSRREXVWURQDFKRSHUDWRUD2SHUDQGDPLPRJÈE\ÊZDUWRĂFL
OXE]PLHQQH&]ÚVWRPRĝQDVSRWNDÊVLÚ]Z\UDĝHQLDPLXMÚW\PLZQDZLDV
NAWIAS OBEJMUJĄCY WYRAŻENIE
(score >= pass)
OPERAND
OPERATOR
PORÓWNANIA
-HĝHOLSRZUöFLV]SDPLÚFLÈGRUR]G]LDïX
SU]\SRPQLV]VRELHĝHSRZ\ĝHMPDP\SU]\NïDG
Z\UDĝHQLDSRQLHZDĝMHJRZ\QLNLHPMHVWSRMHG\QF]DZDUWRĂÊ:RPDZLDQ\PSU]\NïDG]LHEÚG]LH
WRtrueOXEfalse
158 '(&<=-(,3}7/(
OPERAND
1DZLDVREHMPXMÈF\Z\UDĝHQLHMHVWEDUG]RZDĝQ\
JG\WRZ\UDĝHQLHMHVWXĝ\ZDQHZFKDUDNWHU]H
ZDUXQNXZRSHUDWRU]HSRUöZQDQLD1DWRPLDVW
SRGF]DVSU]\SLV\ZDQLDZDUWRĂFL]PLHQQHMQLHPD
NRQLHF]QRĂFLVWRVRZDQLDQDZLDVX SDWU]VWURQD
SRSUDZHM UŻYCIE OPERATORÓW
PORÓWNANIA
JAVASCRIPT
c04/js/comparison-operator.js
YDUSDVV // Minimalna liczba punktów
]DOLF]DMÈF\FKWHVW
YDUVFRUH :\QLNWHVWX
6SUDZG]HQLHF]\Xĝ\WNRZQLN]DOLF]\ïWHVW
YDUKDV3DVVHG VFRUH! SDVV
:\ĂZLHWOHQLHRGSRZLHGQLHJRNRPXQLNDWXQDVWURQLH
YDUHO GRFXPHQWJHW(OHPHQW%\,G ijDQVZHUij HOWH[W&RQWHQW ij7HVW]DOLF]RQ\ijKDV3DVVHG
WYNIK
1DQDMQLĝV]\PSR]LRPLHGZLH
]PLHQQHPRĝQDVSUDZG]LÊ]D
SRPRFÈRSHUDWRUDSRUöZQDQLD
NWöU\]ZUDFDZDUWRĂÊtrueOXE
false
:RPDZLDQ\PSU]\NïDG]LH
Xĝ\WNRZQLNUR]ZLÈ]XMHWHVW
DVNU\SWLQIRUPXMHF]\WHVW
]RVWDï]DOLF]RQ\
1DSRF]ÈWNXNRGX]RVWDMÈ
]GHğQLRZDQHGZLH]PLHQQH
1. passSU]HFKRZXMHZDUWRĂÊ
ZVND]XMÈFÈPLQLPDOQÈ
OLF]EÚSXQNWöZ]DOLF]DMÈFÈ
WHVW
2. scoreSU]HFKRZXMHZ\QLN
RVLÈJQLÚW\SU]H]Xĝ\WNRZQLND
:NRG]LHSU]HSURZDG]DQD
MHVWRSHUDFMDVSUDZG]HQLD
F]\ZDUWRĂÊ]PLHQQHMscore
MHVWZLÚNV]DOXEUöZQDpass
:\QLNLHPEÚG]LHZDUWRĂÊ
trueOXEfalseSU]HFKRZ\ZDQDZ]PLHQQHMRQD]ZLH
hasPassed:NROHMQ\PZLHUV]X
NRGXZ\QLNWHVWX]RVWDMH
Z\ĂZLHWORQ\QDHNUDQLH
2VWDWQLHGZDZLHUV]HSRZRGXMÈ
Z\EöUHOHPHQWXNWöUHJRZDUWRĂFLÈDWU\EXWXidMHVWanswer
DQDVWÚSQLHXDNWXDOQLDMÈMHJR
]DZDUWRĂÊ:LÚFHMLQIRUPDFML
QDWHPDWWHMWHFKQLNL]QDMG]LHV]
ZQDVWÚSQ\PUR]G]LDOH
'(&<=-(,3}7/(
159
UŻYCIE WYRAŻEŃ WRAZ
Z OPERATORAMI PORÓWNANIA
2SHUDQGQLHPXVLE\ÊSRMHG\QF]ÈZDUWRĂFLÈOXEQD]ZÈ]PLHQQHM
2SHUDQGPRĝHE\ÊUöZQLHĝZ\UDĝHQLHPSRQLHZDĝNDĝGHZ\UDĝHQLH
GDMHZZ\QLNXSRMHG\QF]ÈZDUWRĂÊ
NAWIAS OBEJMUJĄCY WYRAŻENIE
((score1 + score2) > (highScore1 + highScore2))
OPERAND
160 '(&<=-(,3}7/(
OPERATOR
PORÓWNANIA
OPERAND
PORÓWNANIE DWÓCH
WYRAŻEŃ
:SRQLĝV]\PSU]\NïDG]LH
PDP\QLHFRZLÚFHMZDUWRĂFL
GRVSUDZG]HQLD.RGVSUDZG]D
F]\Xĝ\WNRZQLNX]\VNDïQRZ\
UHNRUGLF]\SRELïW\PVDP\P
SRSU]HGQL
1DSRF]ÈWNXVNU\SWXPDP\GHNODUDFMH]PLHQQ\FKSU]HFKRZXMÈF\FKZ\QLNLRVLÈJQLÚWHSU]H]
Xĝ\WNRZQLNDZSRV]F]HJöOQ\FK
JAVASCRIPT
UXQGDFK1DVWÚSQLHQDMZ\ĝV]\
Z\QLNUXQG\MHVWSU]HFKRZ\ZDQ\ZRGG]LHOQHM]PLHQQHM
2SHUDWRUSRUöZQDQLDVSUDZG]D
F]\ïÈF]Q\Z\QLNX]\VNDQ\
SU]H]Xĝ\WNRZQLNDMHVWZLÚNV]\
QLĝQDMZLÚNV]\GRWÈGDZ\QLN
SRUöZQDQLDMHVWXPLHV]F]DQ\
Z]PLHQQHMRQD]ZLH
comparison
:RSHUDWRU]HSRUöZQDQLD
RSHUDQGSROHZHMVWURQLHREOLF]D
FDïNRZLW\Z\QLNX]\VNDQ\SU]H]
Xĝ\WNRZQLND=NROHLRSHUDQGSR
SUDZHMVWURQLHïÈF]\QDMZ\ĝV]H
Z\QLNLZSRV]F]HJöOQ\FK
UXQGDFK:\QLNSRUöZQDQLD
MHVWQDVWÚSQLHZ\ĂZLHWODQ\
QDVWURQLH
c04/js/comparison-operator-continued.js
YDUVFRUH :\QLNUXQG\
YDUVFRUH :\QLNUXQG\
YDUKLJK6FRUH 1DMZ\ĝV]\Z\QLNUXQG\
YDUKLJK6FRUH 1DMZ\ĝV]\Z\QLNUXQG\
6SUDZG]HQLHF]\ïÈF]Q\Z\QLNMHVWZLÚNV]\RGDNWXDOQLHQDMOHSV]\FKZ\QLNöZ
YDUFRPSDULVRQ VFRUHVFRUH ! KLJK6FRUHKLJK6FRUH :\ĂZLHWOHQLHRGSRZLHGQLHJRNRPXQLNDWXQDVWURQLH
YDUHO GRFXPHQWJHW(OHPHQW%\,G ijDQVZHUij HOWH[W&RQWHQW ij1RZ\QDMZ\ĝV]\Z\QLNijFRPSDULVRQ
WYNIK
3RGF]DVSU]\SLV\ZDQLD]PLHQQHMZ\QLNXSRUöZQDQLDQLH
MHVWNRQLHF]QHXĝ\FLHQDZLDVX
Z\ĂZLHWORQ\ZNRORU]HELDï\P
QDVWURQLHSROHZHM 1LHNWöU]\SURJUDPLĂFLLWDN
LFKXĝ\ZDMÈDE\ZVND]DÊĝH
Z\QLNLHPGDQHJRNRGXEÚG]LH
SRMHG\QF]DZDUWRĂÊ,QQL
SURJUDPLĂFLXĝ\ZDMÈQDZLDVX
REHMPXMÈFHJRW\ONRZWHG\JG\
VWDQRZLRQF]ÚĂÊZ\UDĝHQLD
'(&<=-(,3}7/(
161
OPERATORY LOGICZNE
:\QLNLHPG]LDïDQLDRSHUDWRUöZSRUöZQDQLD]Z\NOHMHVWSRMHG\QF]DZDUWRĂÊ
WUXHOXEIDOVH2SHUDWRU\ORJLF]QHSR]ZDODMÈQDSRUöZQ\ZDQLHZ\QLNöZ
G]LDïDQLDFRQDMPQLHMGZöFKRSHUDWRUöZSRUöZQDQLD
&]\Z\QLNLHPREXZ\UDĝHñMHVW WUXH?
IDOVH
WYRAŻENIE 3
((5 < 2) && (2 >= 3))
WYRAŻENIE 1
OPERATOR
LOGICZNY
&]\SLÚÊMHVWPQLHMV]HQLĝGZD"
IDOVH
:SRZ\ĝV]\PZLHUV]XNRGX]QDMGXMÈVLÚWU]\
Z\UDĝHQLDDZDUWRĂFLÈNDĝGHJR]QLFKMHVW WUXH
OXE IDOVH
:\UDĝHQLDSROHZHMLSUDZHMVWURQLHXĝ\ZDMÈ
RSHUDWRUöZSRUöZQDQLDDZ\QLNLHPREXMHVW
IDOVH
162
'(&<=-(,3}7/(
WYRAŻENIE 2
&]\GZDMHVWZLÚNV]HQLĝOXEUöZQHWU]\"
IDOVH
7U]HFLHZ\UDĝHQLHXĝ\ZDRSHUDWRUDORJLF]QHJR
DQLHSRUöZQDQLD2SHUDWRUORJLF]Q\$1'VSUDZG]DF]\REDZ\UDĝHQLDSRMHJROHZHMLSUDZHM
VWURQLH]ZUDFDMÈZDUWRĂÊ WUXH:RPDZLDQ\P
SU]\SDGNXWDNQLHMHVWLGODWHJRZDUWRĂFLÈ
RSHUDWRUDORJLF]QHJRMHVW IDOVH
&&
||
LOGICZNE AND
LOGICZNE OR
LOGICZNE NOT
7HQRSHUDWRUVSUDZG]DFR
QDMPQLHMGZDZDUXQNL
7HQRSHUDWRUVSUDZG]DFR
QDMPQLHMMHGHQZDUXQHN
7HQRSHUDWRUSRELHUDSRMHG\QF]ÈZDUWRĂÊERRORZVNÈ
LRGZUDFDMÈ
((2 < 5) && (3 >= 2))
((2 < 5) || (2 < 1))
( < 1)2
3RZ\ĝV]HZ\UDĝHQLH]ZUDFD
ZDUWRĂÊWUXH
3RZ\ĝV]HZ\UDĝHQLH]ZUDFD
ZDUWRĂÊ WUXH
3RZ\ĝV]HZ\UDĝHQLH]ZUDFD
ZDUWRĂÊWUXH
-HĝHOLREDZ\UDĝHQLD]ZUDFDMÈ
ZDUWRĂÊ WUXHWRZDUWRĂFLÈ
FDïHJRZ\UDĝHQLDUöZQLHĝ
EÚG]LH WUXH-HĝHOLFKRÊMHGQR
Z\UDĝHQLH]ZUöFL IDOVHWRFDïH
Z\UDĝHQLHWDNĝH]ZUöFL IDOVH
-HĝHOLNWöUHNROZLHNZ\UDĝHQLH
]ZUDFDZDUWRĂÊ WUXHWR
ZDUWRĂFLÈFDïHJRZ\UDĝHQLD
UöZQLHĝEÚG]LH WUXH-HĝHOLRED
Z\UDĝHQLD]ZUDFDMÈ IDOVHWR
FDïHZ\UDĝHQLHWDNĝH]ZUöFL
IDOVH
']LDïDQLHRSHUDWRUDSROHJDQD
RGZUöFHQLXVWDQXZ\UDĝHQLD
-HĝHOLMHJRZ\QLNLHPE\ïD
ZDUWRĂÊIDOVH EH]]QDNXQD
SRF]ÈWNXZ\UDĝHQLD WRRVWDWHF]QLH]ZUöFLWUXH1DWRPLDVW
MHĂOLZ\QLNLHPZ\UDĝHQLDE\ïD
ZDUWRĂÊIDOVH]ZUöFLWUXH
WUXH
WUXH
IDOVH
IDOVH
&&
&&
&&
&&
WUXH zwraca WUXH
IDOVH zwraca IDOVH
WUXH zwraca IDOVH
IDOVH zwraca IDOVH
WUXH
WUXH
IDOVH
IDOVH
||
||
||
||
WUXH zwraca WUXH
IDOVH zwraca WUXH
WUXH zwraca WUXH
IDOVH zwraca IDOVH
WUXH zwraca IDOVH
IDOVH zwraca WUXH
SZYBKA OCENA
:\UDĝHQLDORJLF]QHVÈRFHQLDQH
RGOHZHMGRSUDZHMVWURQ\
-HĝHOLSLHUZV]\ZDUXQHNPRĝH
GRVWDUF]\ÊZ\VWDUF]DMÈFHM
LORĂFLLQIRUPDFMLDE\X]\VNDÊ
RGSRZLHGěWRQLHMHVWNRQLHF]QHSU]HSURZDG]DQLHRFHQ\
GUXJLHJRZ\UDĝHQLD
IDOVH && FRNROZLHN
^
]QDOH]LRQRZDUWRĂÊIDOVH
WUXH || FRNROZLHN
^
]QDOH]LRQRZDUWRĂÊWUXH
1LHWU]HEDVSUDZG]DÊZDUWRĂFL
GUXJLHJRZDUXQNXSRQLHZDĝ
REDQLHEÚGÈMXĝPLDï\ZDUWRĂFL
WUXH
1LHWU]HEDVSUDZG]DÊZDUWRĂFL
GUXJLHJRZDUXQNXSRQLHZDĝ
FRQDMPQLHMMHGHQPDZDUWRĂÊ
WUXH
'(&<=-(,3}7/( 163
UŻYCIE LOGICZNEGO AND
:SRQLĝV]\PSU]\NïDG]LH
WHVWPDWHPDW\F]Q\VNïDGDVLÚ
]GZöFKUXQG'ODNDĝGHMUXQG\
LVWQLHMÈGZLH]PLHQQH-HGQD
SU]HFKRZXMHOLF]EÚSXQNWöZ
]GRE\W\FKSU]H]Xĝ\WNRZQLND
ZWHMUXQG]LHQDWRPLDVWGUXJD
ZVND]XMHPLQLPDOQÈOLF]EÚ
SXQNWöZ]DOLF]DMÈF\FKWÚUXQGÚ
/RJLF]QH$1'MHVWXĝ\ZDQH
GRVSUDZG]HQLDF]\ZDUWRĂÊ
X]\VNDQDSU]H]Xĝ\WNRZQLND
MHVWZLÚNV]DOXEUöZQDZDUWRĂFL
]DOLF]DMÈFHMZREXUXQGDFK
WHVWX:\QLNMHVWSU]HFKRZ\ZDQ\Z]PLHQQHMRQD]ZLH
passBoth
c04/js/logical-and.js
1DNRñFXMHVWZ\ĂZLHWODQ\
NRPXQLNDWLQIRUPXMÈF\
Xĝ\WNRZQLNDRZ\QLNXWHVWX
JAVASCRIPT
YDUVFRUH :\QLNUXQG\
YDUVFRUH :\QLNUXQG\
YDUSDVV :DUWRĂÊ]DOLF]DMÈFDGODUXQG\
YDUSDVV :DUWRĂÊ]DOLF]DMÈFDGODUXQG\
6SUDZG]HQLHF]\Xĝ\WNRZQLN]DOLF]\ïRELHUXQG\:\QLN]RVWDMHXPLHV]F]RQ\
Z]PLHQQHM
YDUSDVV%RWK VFRUH! SDVV VFRUH! SDVV 8WZRU]HQLHNRPXQLNDWX
YDUPVJ ij=DOLF]HQLHREXUXQGijSDVV%RWK
:\ĂZLHWOHQLHNRPXQLNDWXQDVWURQLH
YDUHO GRFXPHQWJHW(OHPHQW%\,G ijDQVZHUij HOWH[W&RQWHQW PVJ
1DSUDZGÚEDUG]RU]DGNRZ\VWÚSXMHSRWU]HEDZ\ĂZLHWODQLD
ZDUWRĂFLERRORZVNLHMQDVWURQLH
MDNWRG]LHMHVLÚZRPDZLDQ\PSU]\NïDG]LH :GDOV]HM
F]ÚĂFLUR]G]LDïX]REDF]\V]ĝH
]UHJXï\VSUDZG]DV]ZDUXQHN
DQDVWÚSQLHQDSRGVWDZLH
Z\QLNXVSUDZG]HQLDZ\NRQXMHV]RGSRZLHGQLHSROHFHQLD
164 '(&<=-(,3}7/(
WYNIK
UŻYCIE LOGICZNEGO OR I NOT
3RQLĝHMSU]HGVWDZLRQRWHQVDP
WHVWDOHW\PUD]HPRSDUW\QD
ORJLF]Q\PRSHUDWRU]H25ZFHOX
XVWDOHQLDF]\Xĝ\WNRZQLN
]DOLF]\ïFRQDMPQLHMMHGQÈ
]GZöFKUXQG-HĝHOL]DOLF]RQD
]RVWDïDMHGQDUXQGDQLHWU]HED
SRQRZQLHSRGFKRG]LÊGRWHVWX
6SöMU]QDOLF]E\SU]HFKRZ\ZDQHZF]WHUHFK]PLHQQ\FK
QDSRF]ÈWNXSU]\NïDGX
8ĝ\WNRZQLN]DOLF]\ïRELH
UXQG\DZLÚF]PLHQQDminPass
EÚG]LHSU]HFKRZ\ZDïDZDUWRĂÊ
ERRORZVNÈtrue
JAVASCRIPT
.RPXQLNDWZ\ĂZLHWODQ\QD
VWURQLH]QDMGXMHVLÚZ]PLHQQHM
RQD]ZLHmsg1DNRñFX
NRPXQLNDWXORJLF]Q\RSHUDWRU
127RGZUöFL]PLHQQÈERRORZVNÈDZLÚFMHMZDUWRĂFLÈEÚG]LH
false7DZDUWRĂÊ]RVWDQLH
Z\ĂZLHWORQDQDVWURQLH
c04/js/logical-or-logical-not.js
YDUVFRUH :\QLNUXQG\
YDUVFRUH :\QLNUXQG\
YDUSDVV :DUWRĂÊ]DOLF]DMÈFDGODUXQG\
YDUSDVV :DUWRĂÊ]DOLF]DMÈFDGODUXQG\
6SUDZG]HQLHF]\Xĝ\WNRZQLN]DOLF]\ïRELHUXQG\:\QLN]RVWDMHXPLHV]F]RQ\
Z]PLHQQHM
YDUPLQ3DVV VFRUH! SDVV __ VFRUH! SDVV 8WZRU]HQLHNRPXQLNDWX
YDUPVJ ij.RQLHF]QHSRZWöU]HQLHWHVWXij PLQ3DVV :\ĂZLHWOHQLHNRPXQLNDWXQDVWURQLH
YDUHO GRFXPHQWJHW(OHPHQW%\,G ijDQVZHUij HOWH[W&RQWHQW PVJ
WYNIK
'(&<=-(,3}7/(
165
POLECENIE IF
3ROHFHQLHifGRNRQXMHRFHQ\ZDUXQNX VSUDZG]DJR -HĝHOLZDUWRĂFLÈ
ZDUXQNXEÚG]LHWUXHWRQDVWÈSLZ\NRQDQLHSROHFHñ]QDMGXMÈF\FKVLÚ
ZEORNXNRGX]GHğQLRZDQ\PWXĝSRSROHFHQLXif
WARUNEK
SŁOWO KLUCZOWE
OTWIERAJĄCY
NAWIAS
KLAMROWY
if (score >= 50) {
FRQJUDWXODWH }
KOD DO WYKONANIA,
JEŚLI WARTOŚCIĄ POLECENIA IF
JEST TRUE
ZAMYKAJĄCY
NAWIAS
KLAMROWY
-HĝHOLZDUWRĂFLÈZDUXQNXEÚG]LH WUXHWRQDVWÈSL
Z\NRQDQLHEORNXNRGX]QDMGXMÈFHJRVLÚSRQLĝHM
F]\OLXMÚWHJRZSLHUZV]\QDZLDVNODPURZ\SR
SROHFHQLXif
166 '(&<=-(,3}7/(
1DWRPLDVWMHĂOLZDUWRĂFLÈZDUXQNXEÚG]LH IDOVH
WRSROHFHQLDZEORNXNRGXnieEÚGÈZ\NRQDQH
6NU\SWEÚG]LHNRQW\QXRZDïG]LDïDQLHGRSROHFHQLD
]QDMGXMÈFHJRVLÚWXĝSREORNXNRGX
UŻYCIE POLECENIA IF
c04/js/if-statement.js
JAVASCRIPT
YDUVFRUH :\QLN
YDUPVJ.RPXQLNDW
if (score >= 50) { -HĝHOLZ\QLNZ\QRVLOXE
ZLÚFHM
PVJ ij*UDWXODFMHij
PVJ ij3U]HFKRG]LV]GRNROHMQHMUXQG\ij
}
YDUHO GRFXPHQWJHW(OHPHQW%\,G ijDQVZHUij HOWH[W&RQWHQW PVJ
WYNIK
:SU]HGVWDZLRQ\PSU]\NïDG]LH
SROHFHQLHifVSUDZG]DF]\
DNWXDOQDZDUWRĂÊ]PLHQQHM
RQD]ZLHscoreZ\QRVL50OXE
ZLÚFHM
:RPDZLDQ\PSU]\SDGNXSROHFHQLHSU]\MPXMHZDUWRĂÊtrue
SRQLHZDĝZ\QLNWR75F]\OL
MHVWZLÚNV]\RG50'ODWHJRWHĝ
QDVWÚSXMHZ\NRQDQLHSROHFHñ
]QDMGXMÈF\FKVLÚZEORNXNRGX
SU]\JRWRZDQLHNRPXQLNDWX
]JUDWXODFMDPLGODXĝ\WNRZQLND
RUD]SRLQIRUPRZDQLHJRĝH
SU]HFKRG]LGRNROHMQHMUXQG\
3REORNXNRGX]QDMGXMHVLÚ
SROHFHQLHZ\ĂZLHWODMÈFHSU]\JRWRZDQ\ZF]HĂQLHMNRPXQLNDW
-HĝHOLZDUWRĂÊ]PLHQQHM
scoreEÚG]LHPQLHMV]DQLĝ50
SROHFHQLDZEORNXNRGXQLH
]RVWDQÈZ\NRQDQHDVNU\SW
EÚG]LHNRQW\QXRZDïG]LDïDQLH
RGSLHUZV]HJRZLHUV]D]QDMGXMÈFHJRVLÚSREORNXNRGX
JAVASCRIPT
c04/js/if-statement-with-function.js
YDUVFRUH :\QLN
YDUPVJ ijij.RPXQLNDW
function congratulate() {
PVJ ij*UDWXODFMHij
}
if (score >= 50) { -HĝHOLZ\QLNZ\QRVLOXE
ZLÚFHM
FRQJUDWXODWH PVJ ij3U]HFKRG]LV]GRNROHMQHMUXQG\ij
}
YDUHO GRFXPHQWJHW(OHPHQW%\,G ijDQVZHUij HOLQQHU+70/ PVJ
3ROHZHMVWURQLH]QDMGXMHVLÚ
DOWHUQDW\ZQDZHUVMDWHJRVDPHJRSU]\NïDGXNWöUDSRND]XMH
ĝHZLHUV]HNRGXQLH]DZV]HVÈ
Z\NRQ\ZDQHZVSRG]LHZDQHM
NROHMQRĂFL-HĝHOLZDUXQHNif
MHVWVSHïQLRQ\WR
1. 3LHUZV]HSROHFHQLH
ZEORNXNRGXZ\ZRïXMHIXQNFMÚ
congratulate()
2. .RG]QDMGXMÈF\VLÚZIXQNFML
congratulate()]RVWDQLH
Z\NRQDQ\
3. :\NRQDQ\EÚG]LHGUXJL
ZLHUV]ZEORNXNRGXSROHFHQLD
if
'(&<=-(,3}7/(
167
KONSTRUKCJA IF-ELSE
.RQVWUXNFMDif-elseVSUDZG]DZDUXQHN
-HĝHOLZ\QLNLHPMHVWZDUWRĂÊWUXHWRQDVWÚSXMHZ\NRQDQLH
SLHUZV]HJREORNXNRGX
1DWRPLDVWMHĂOLZ\QLNLHPMHVWIDOVHZ\NRQDQ\EÚG]LHGUXJLEORNNRGX
if (score >= 50) {
FRQJUDWXODWH }
else {
HQFRXUDJH }
KOD DO WYKONANIA, JEŚLI WARTOŚCIĄ POLECENIA IF JEST TRUE
KOD DO WYKONANIA, JEŚLI WARTOŚCIĄ POLECENIA IF JEST FALSE
POLECENIE WARUNKOWE
WARUNEK
BLOK KODU POLECENIA IF
BLOK KODU POLECENIA ELSE
168 '(&<=-(,3}7/(
UŻYCIE KONSTRUKCJI IF-ELSE
c04/js/if-else-statement.js
JAVASCRIPT
YDUSDVV 0LQLPDOQDZDUWRĂÊ]DOLF]DMÈFD
WHVW
YDUVFRUH %LHĝÈF\Z\QLN
YDUPVJ.RPXQLNDW
3U]\JRWRZDQLHNRPXQLNDWXZRSDUFLXRZ\QLN
X]\VNDQ\SU]H]Xĝ\WNRZQLND
if (score >= pass) {
PVJ ij*UDWXODFMH]DOLF]\ïHĂWHVWij
} else {
PVJ ij6SUöEXMSRQRZQLHij
}
1DSRGVWDZLHSU]\NïDGXPRĝHV]
]REDF]\ÊĝHNRQVWUXNFMD
if-elseSR]ZDODQDGRVWDUF]HQLHGZöFK]HVWDZöZNRGX
1. -HGHQ]HVWDZĽZ\NRQ\ZDQ\JG\ZDUWRĂFLÈZDUXQNX
EÚG]LHtrue
2. 'UXJL]HVWDZĽZ\NRQ\ZDQ\JG\ZDUWRĂFLÈZDUXQNX
EÚG]LHfalse
:WUDNFLHWHVWXPRJÈZ\VWÈSLÊ
GZLHV\WXDFMH3LHUZV]D
ĽXĝ\WNRZQLN]GRE\ZDFR
QDMPQLHMPLQLPDOQÈOLF]EÚ
SXQNWöZQLH]EÚGQÈGR
]DOLF]HQLDWHVWX LW\PVDP\P
]DOLF]DJR 'UXJDĽXĝ\WNRZQLNX]\VNXMHPQLHMV]ÈOLF]EÚ
SXQNWöZQLĝPLQLPDOQDZ\PDJDQD LW\PVDP\PQLH]DOLF]D
WHVWX :REXSU]\SDGNDFK
WU]HEDSU]\JRWRZDÊRGSRZLHGQL
NRPXQLNDWNWöU\SöěQLHM]RVWDMH
Z\ĂZLHWORQ\QDVWURQLH
YDUHO GRFXPHQWJHW(OHPHQW%\,G ijDQVZHUij HOWH[W&RQWHQW PVJ
WYNIK
=ZUöÊXZDJÚĝHSRSROHFHQLX
ifSRZLQLHQ]QDMGRZDÊVLÚ
ĂUHGQLN1LHPDQDWRPLDVW
SRWU]HE\XPLHV]F]DQLDĂUHGQLND
SR]DP\NDMÈF\PQDZLDVLH
NODPURZ\PEORNXNRGX
3ROHFHQLHifZ\NRQXMHSROHFHQLDZEORNXNRGX
W\ONRZWHG\JG\ZDUXQHNSU]\MPXMHZDUWRĂÊtrue
N
Czy VFRUH! ?
%ORNif-elseZ\NRQXMHW\ONRMHGHQ]HVWDZ
SROHFHñZ]DOHĝQRĂFLRGZDUWRĂFLZDUXQNX
Czy VFRUH! ?
T
N
Zaliczyłeś!
Spróbuj ponownie…
kontynuacja skryptu…
T
Zaliczyłeś!
kontynuacja skryptu…
'(&<=-(,3}7/(
169
KONSTRUKCJA SWITCH
.RQVWUXNFMDswitchUR]SRF]\QDVLÚ
RG]PLHQQHMQD]\ZDQHMZDUWRĂFLÈ
switch.DĝG\EORNcase]DZLHUD
PRĝOLZÈZDUWRĂÊGODWHM]PLHQQHM
LXUXFKDPLD]GHğQLRZDQHZQLP
SROHFHQLDMHĂOLQDVWÈSLGRSDVRZDQLH
ZDUWRĂFL]PLHQQHM
:SU]HGVWDZLRQ\PSU]\NïDG]LH]PLHQQDRQD]ZLH
OHYHOMHVWZDUWRĂFLÈswitch-HĝHOLZDUWRĂFLÈ
]PLHQQHMOHYHOEÚG]LHFLÈJWHNVWRZ\-HGHQWR
]RVWDQLHZ\NRQDQ\NRGZSLHUZV]\PEORNXcase
:SU]\SDGNXZDUWRĂFLDwaQDVWÈSLZ\NRQDQLH
SROHFHñZGUXJLPEORNXcase=NROHLZDUWRĂÊ
TrzyR]QDF]DZ\NRQDQLHSROHFHñZWU]HFLPEORNX
case-HĝHOLZDUWRĂÊ]PLHQQHMlevelQLH]RVWDQLH
GRSDVRZDQDGRĝDGQHJREORNXcaseQDVWÈSL
Z\NRQDQLHEORNXGHIDXOW
&DïDNRQVWUXNFMD]QDMGXMHVLÚZMHGQ\PEORNX
NRGX XMÚWDZQDZLDVNODPURZ\ DGZXNURSHN
RGG]LHODRSFMHRGSROHFHñZ\NRQ\ZDQ\FKSR
GRSDVRZDQLXZDUWRĂFLZSROHFHQLXcaseGR
ZDUWRĂFLswitch
switch (level) {
case ’Jeden’:
WLWOH ij3R]LRPij
EUHDN
case ’Dwa’:
WLWOH ij3R]LRPij
EUHDN
case ’Trzy’:
WLWOH ij3R]LRPij
EUHDN
default:
WLWOH ij7HVWij
EUHDN
}
1DNRñFXNDĝGHJREORNXcase]QDMGXMHVLÚVïRZR
NOXF]RZHEUHDN,QIRUPXMHRQRLQWHUSUHWHU-DYD6FULSWR]DNRñF]HQLXG]LDïDQLDGDQHJRSROHFHQLD
switchLQDVWÚSXMHSU]HMĂFLHGRZLHUV]DNRGX
]QDMGXMÈFHJRVLÚWXĝ]D]DP\NDMÈF\PQDZLDVHP
NODPURZ\PNRQVWUXNFMLswitch
IF-ELSE
SWITCH
•
• 'RVWÚSQDMHVWRSFMDdefaultZ\NRQ\ZD-
1LHPDNRQLHF]QRĂFLSRGDZDQLD
RSFMLelse :\VWDUF]\Xĝ\ÊMHG\QLH
SROHFHQLDif • :SU]\SDGNXVHULLSROHFHñifVSUDZ-
G]DQHVÈZV]\VWNLHSROHFHQLDnawetSR
]QDOH]LHQLXGRSDVRZDQLD DZLÚFG]LDïDQLH
NRQVWUXNFMLif-elseMHVWZROQLHMV]HQLĝ
switch 170
'(&<=-(,3}7/(
KONTRA
QDMHĂOLQLH]RVWDQLHGRSDVRZDQ\ĝDGHQ
EORNcase
• :SU]\SDGNX]QDOH]LHQLDGRSDVRZDQLD
QDVWÚSXMHZ\NRQDQLHNRGX3ROHFHQLH
EUHDN]DWU]\PXMHZ\NRQ\ZDQLHSR]RVWDïHM
F]ÚĂFLNRQVWUXNFMLswitch G]LÚNLF]HPX
NRQVWUXNFMDswitchFKDUDNWHU\]XMHVLÚ
OHSV]ÈZ\GDMQRĂFLÈQLĝZLHOHSROHFHñif UŻYCIE KONSTRUKCJI SWITCH
JAVASCRIPT
c04/js/switch-statement.js
YDUPVJ.RPXQLNDW
YDUOHYHO 3R]LRP
3U]\JRWRZDQLHNRPXQLNDWXQDSRGVWDZLHSR]LRPX
switch (level) {
case 1:
PVJ ij3RZRG]HQLDQDSLHUZV]\PWHĂFLHij
EUHDN
case 2:
PVJ ij'UXJL]WU]HFKMHVWQLHěOHij
EUHDN
case 3:
PVJ ij2VWDWQLDUXQGDMXĝSUDZLHVNRñF]\ïHĂij
EUHDN
default:
PVJ ij3RZRG]HQLDij
EUHDN
}
YDUHO GRFXPHQWJHW(OHPHQW%\,G ijDQVZHUij HOWH[W&RQWHQW PVJ
WYNIK
:SU]HGVWDZLRQ\PSU]\NïDG]LHFHOHPNRQVWUXNFMLswitchMHVWZ\ĂZLHWOHQLHRGSRZLHGQLHJRNRPXQLNDWX
Z]DOHĝQRĂFLRGSR]LRPXQDNWöU\P
VLÚ]QDMGXMHXĝ\WNRZQLN.RPXQLNDW
MHVWSU]HFKRZ\ZDQ\Z]PLHQQHM
RQD]ZLHmsg
=PLHQQDlevelSU]HFKRZXMHOLF]EÚ
ZVND]XMÈFÈSR]LRPQDNWöU\P
]QDMGXMHVLÚXĝ\WNRZQLN7D]PLHQQD
MHVWQDVWÚSQLHXĝ\ZDQDMDNRZDUWRĂÊ
switch :DUWRĂFLÈswitchPRĝH
E\ÊUöZQLHĝZ\UDĝHQLH :EORNXNRGXNRQVWUXNFML ZHZQÈWU]
QDZLDVXNODPURZHJR ]QDMGXMÈ
VLÚWU]\RSFMHRGSRZLDGDMÈFH
PRĝOLZ\PZDUWRĂFLRP]PLHQQHM
level12OXE3
-HĝHOL]PLHQQDlevelEÚG]LHPLDïDZDUWRĂÊ1WR
ZDUWRĂÊ]PLHQQHMmsgWR
3RZRG]HQLDQDSLHUZV]\PWHĂFLH
:SU]\SDGNXZDUWRĂFL2]PLHQQD
msg]DZLHUDFLÈJWHNVWRZ\
'UXJL]WU]HFKMHVWQLHěOH
1DWRPLDVWGODZDUWRĂFL3]PLHQQHM
levelZDUWRĂFLÈ]PLHQQHMmsgMHVW
2VWDWQLDUXQGDMXĝSUDZLH
VNRñF]\ïHĂ
:SU]\SDGNXEUDNXGRSDVRZDQLD
ZDUWRĂFLÈ]PLHQQHMmsgEÚG]LH
3RZRG]HQLD
.DĝG\EORNcaseNRñF]\VLÚVïRZHP
NOXF]RZ\PEUHDNNWöUHQDND]XMH
LQWHUSUHWHURZL-DYD6FULSWSRPLQLÚFLH
SR]RVWDïHMF]ÚĂFLNRGXLNRQW\QXRZDQLHZ\NRQ\ZDQLDVNU\SWXRG
SLHUZV]HJRSROHFHQLDSR]DP\NDMÈF\PQDZLDVLHNODPURZ\P
'(&<=-(,3}7/(
171
NARZUCANIE TYPU
I LUŹNE OKREŚLANIE TYPU
-HĝHOLZ-DYD6FULSWXĝ\MHV]QLHRF]HNLZDQHJRW\SXGDQ\FKWR]DPLDVW]JïRVLÊ
EïÈGLQWHUSUHWHUSUöEXMHZVHQVRZQ\VSRVöEZ\NRQDÊRSHUDFMÚ
-DYD6FULSWSRWUDğZWOH
SU]HSURZDG]LÊNRQZHUVMÚW\SöZ
GDQ\FKDE\PöFZ\NRQDÊ
]OHFRQÈRSHUDFMÚ1RVLWRQD]ZÚ
narzucania typu1DSU]\NïDG
ZZ\UDĝHQLX(’1’ > 0)FLÈJ
WHNVWRZ\’1’]RVWDQLHVNRQZHUWRZDQ\QDOLF]EÚ1:\QLNLHP
Z\PLHQLRQHJRZ\UDĝHQLDEÚG]LH
ZDUWRĂÊtrue
-DYD6FULSWXĝ\ZDOXěQHJR
RNUHĂODQLDW\SXSRQLHZDĝW\S
GDQ\FKGODZDUWRĂFLPRĝHXOHF
]PLDQLH:QLHNWöU\FKMÚ]\NDFK
SURJUDPRZDQLDZ\PDJDQHMHVW
ZVND]DQLHW\SXGDQ\FKNDĝGHM
]PLHQQHM:WDNLPSU]\SDGNX
PöZLP\RĂFLVï\PRNUHĂODQLX
typu
1DU]XFDQLHW\SXGDQ\FKPRĝH
GRSURZDG]LÊGRSRZVWDQLD
QLHRF]HNLZDQ\FKZDUWRĂFLZNRG]LH LW\PVDP\PSRZRGRZDÊ
EïÚG\ 'ODWHJRWHĝSRGF]DV
VSUDZG]DQLDF]\GZLHZDUWRĂFL
VÈUöZQHOHSV]\PUR]ZLÈ]DQLHPEÚG]LHXĝ\FLHĂFLVï\FK
RSHUDWRUöZUöZQRĂFL===L
]DPLDVW==L 3LHUZV]HGZD
]Z\PLHQLRQ\FKRSHUDWRUöZ
VSUDZG]DMÈQLHW\ONRZDUWRĂÊ
DOHUöZQLHĝW\SGDQ\FK
172
'(&<=-(,3}7/(
TYP DANYCH
OPIS
string
7HNVW
number
/LF]ED
Boolean
:DUWRĂÊtrueOXEfalse
null
3XVWDZDUWRĂÊ
XQGHğQHG
=PLHQQD]RVWDïD]DGHNODURZDQDDOHMHV]F]HQLHSU]\SLVDQRMHM
ZDUWRĂFL
NaNWRZDUWRĂÊX]QDZDQD]DOLF]EÚ0RĝHV]VLÚRW\PSU]HNRQDÊ
NLHG\OLF]EDMHVWRF]HNLZDQDDOHQLH]RVWDQLH]ZUöFRQD1DSU]\NïDG
Z\UDĝHQLH ijG]LHVLÚÊij ]ZUDFDZDUWRĂÊNaN
WARTOŚCI
TRUTHY I FALSY
=HZ]JOÚGXQDQDU]XFDQLHW\SXNDĝGDZDUWRĂÊZ-DYD6FULSWPRĝHE\ÊWUDNWRZDQDMDNRtrueLfalse7RSRZRGXMHSHZQHLQWHUHVXMÈFHHIHNW\XERF]QH
WARTOŚCI FALSY
:$572¥m
OPIS
YDUKLJK6FRUH IDOVH
7UDG\F\MQDZDUWRĂÊERRORZVNDfalse
YDUKLJK6FRUH /LF]ED]HUR
YDUKLJK6FRUH ijij
3XVWDZDUWRĂÊ
YDUKLJK6FRUH ijVFRUHij
:DUWRĂÊNaN
YDUKLJK6FRUH
=PLHQQDNWöUHMQLHSU]\SLVDQRZDUWRĂFL
1LHPDOZV]\VWNRSR]RVWDïHSU]\MPXMHZDUWRĂÊtruthy…
WARTOŚCI TRUTHY
:$572¥m
OPIS
YDUKLJK6FRUH WUXH
7UDG\F\MQDZDUWRĂÊERRORZVNDtrue
YDUKLJK6FRUH /LF]EDLQQDQLĝ]HUR
YDUKLJK6FRUH ijPDUFKHZij
&LÈJWHNVWRZ\ZUD]]]DZDUWRĂFLÈ
YDUKLJK6FRUH 2EOLF]HQLDQDOLF]EDFK
YDUKLJK6FRUH ijWUXHij
YDUKLJK6FRUH ijij
YDUKLJK6FRUH ijIDOVHij
:DUWRĂÊtrue]DSLVDQDZSRVWDFLFLÈJX
WHNVWRZHJR
=HUR]DSLVDQHZSRVWDFLFLÈJXWHNVWRZHJR
:DUWRĂÊfalse]DSLVDQDZSRVWDFLFLÈJX
WHNVWRZHJR
:DUWRĂFLfalsyVÈWUDNWRZDQH
WDNMDNE\E\ï\ZDUWRĂFLDPL
false:WDEHOLSROHZHM
VWURQLHZ\PLHQLRQR]PLHQQÈ
highScoreZUD]]VHULÈ
ZDUWRĂFL]NWöU\FKZV]\VWNLH
WRfalsy
:DUWRĂFLfalsyPRJÈE\ÊUöZQLHĝWUDNWRZDQHMDNROLF]ED0
:DUWRĂFLtruthyVÈWUDNWRZDQH
WDNMDNE\E\ï\ZDUWRĂFLDPL
true3UDNW\F]QLHZV]\VWNR
FRZWDEHOLQLHMHVWfalsyPRĝH
E\ÊSRWUDNWRZDQHMDNRZDUWRĂÊ
true
:DUWRĂFLtruthyPRJÈE\Ê
UöZQLHĝWUDNWRZDQHMDNR
OLF]ED1
3RQDGWRREHFQRĂÊRELHNWXOXE
WDEOLF\MHVW]Z\NOHX]QDZDQD
]DZDUWRĂÊtruthy1DMF]ÚĂFLHM
VSRW\NDVLÚWRSRGF]DV
VSUDZG]DQLDF]\GDQ\HOHPHQW
LVWQLHMHQDVWURQLH
1DNROHMQHMVWURQLHGRZLHV]
VLÚGODF]HJRZ\PLHQLRQHWXWDM
NRQFHSFMHVÈZDĝQH
'(&<=-(,3}7/(
173
SPRAWDZENIE RÓWNOŚCI
I ISTNIENIA
3RQLHZDĝREHFQRĂÊRELHNWXOXEWDEOLF\PRĝHE\ÊX]QDQD
]DZDUWRĂÊtruthyWHQIDNWEDUG]RF]ÚVWRZ\NRU]\VWXMHVLÚ
SRGF]DVVSUDZG]DQLDF]\GDQ\HOHPHQWLVWQLHMHQDVWURQLH
Operator jednoargumentowy
]ZUDFDZ\QLNQDSRGVWDZLH
RFHQ\SRSURVWXMHGQHJR
RSHUDQGX:SU]HGVWDZLRQ\P
SU]\NïDG]LHSROHFHQLHif
VSUDZG]DF]\LVWQLHMHHOHPHQW
-HĝHOLLVWQLHMHZ\QLNLHPEÚG]LH
ZDUWRĂÊtruthyDW\PVDP\P
Z\NRQDQ\]RVWDQLHSLHUZV]\
EORNNRGX1DWRPLDVWMHĂOL
HOHPHQWQLHLVWQLHMHZ\NRQDQ\
]RVWDQLHGUXJLEORNNRGX
if (document.getElementById(’header’)) {
=QDOH]LRQRZ\NRQDMSHZQH]DGDQLH
} else {
1LH]QDOH]LRQRZ\NRQDMLQQH]DGDQLH
}
2VRE\GRSLHUR]DF]\QDMÈFHSURJUDPRZDQLHZMÚ]\NX-DYD6FULSW
F]ÚVWRVÈG]ÈĝHSRQLĝV]\ZLHUV]NRGXG]LDïDGRNïDGQLHWDNVDPRMDN
SU]HGVWDZLRQ\SRZ\ĝHM
if (document.getElementById(’header’) == true)
-HGQDNZ\ZRïDQLHdocument.getElementById(’header’)]ZUDFD
RELHNWX]QDZDQ\]DZDUWRĂÊtruthyNWöUDnieMHVWUöZQDZDUWRĂFL
ERRORZVNLHMtrue
=SRZRGXVWRVRZDQLDQDU]XFDQLDW\SXĂFLVïHRSHUDWRU\UöZQRĂFL===L
GDMÈPQLHMV]ÈOLF]EÚQLHRF]HNLZDQ\FKZDUWRĂFLQLĝZSU]\SDGNXXĝ\FLD
RSHUDWRUöZ==L 174
-HĝHOLXĝ\MHV]RSHUDWRUD==WR
Z\PLHQLRQHZïDĂFLZRĂFLVÈ
X]QDZDQH]DUöZQHfalse0
L’’ SXVW\FLÈJWHNVWRZ\ -HGQDNQLHVÈRQHUöZQHSRGF]DV
Xĝ\FLDĂFLVï\FKRSHUDWRUöZ
:SUDZG]LHnullLXQGHğQHG
VÈX]QDZDQH]DfalsyDOHQLH
VÈUöZQHQLF]HPXLQQHPXQLĝ
RGSRZLHGQLRnullLXQGHğQHG
2]QDF]DWRĝHQLHVÈRGSRZLHGQLNDPLSRGF]DVXĝ\FLDĂFLVï\FK
RSHUDWRUöZ
:SUDZG]LHZDUWRĂÊNaNMHVW
X]QDZDQD]DfalsyDOHQLH
RGSRZLDGDĝDGQHMLQQHMQLHMHVW
QDZHWRGSRZLHGQLNLHPVDPHM
VLHELH VNRURNaNWRQLH]GHğQLRZDQDOLF]EDWRQLHPRĝQD
SRUöZQ\ZDÊ]HVREÈGZöFK
ZDUWRĂFLNaN :<5$¿(1,(
:<5$¿(1,(
:<5$¿(1,(
WYNIK
XQGHğQHG
(false == 0)
true
(false === 0)
false
(false == ’’)
true
XQGHğQHG
(false === ’’)
(null == false)
false
(null == 0)
(0 == ’’)
true
XQGHğQHG
(0 === ’’)
false
XQGHğQHG
'(&<=-(,3}7/(
QXOO
IDOVH
WYNIK
(NaN == null)
false
false
(NaN == NaN)
false
false
false
QXOO
WYNIK
true
false
false
PRZERWANIE OBLICZANIA
WARTOŚCI
2SHUDWRU\ORJLF]QHVÈSU]HWZDU]DQHRGOHZHMGRSUDZHMVWURQ\
3U]HUZDQLHREOLF]DQLDZDUWRĂFLQDVWÚSXMHQDW\FKPLDVWSRRWU]\PDQLXZ\QLNX
=ZUDFDQDMHVWZöZF]DVZDUWRĂÊNWöUDSU]HUZDïDSU]HWZDU]DQLH
WRQLHNRQLHF]QLHEÚG]LHtrueOXEfalse :ZLHUV]XSLHUZV]\P]PLHQQHMartist]RVWDMHSU]\SLVDQDZDUWRĂÊ
Rembrandt
:ZLHUV]XGUXJLP]PLHQQDartistPDZDUWRĂÊQDVWÚSQLH]PLHQQHM
artistA]RVWDMHSU]\SLVDQDWDVDPDZDUWRĂÊMDNÈPDartist
SRQLHZDĝQLHSXVW\FLÈJWHNVWRZ\MHVWX]QDZDQ\]DZDUWRĂÊtruthy YDUDUWLVW ij5HPEUDQGWij
YDUDUWLVW$ DUWLVW__ijQLH]QDQ\ij -HĝHOLFLÈJWHNVWRZ\MHVWSXVW\ SDWU]SRQLĝHM WR]PLHQQDartistA
PDSU]\SLVDQÈZDUWRĂÊnieznany
YDUDUWLVW ijij
YDUDUWLVW$ DUWLVW__ijQLH]QDQ\ij ,VWQLHMHQDZHWPRĝOLZRĂÊXWZRU]HQLDSXVWHJRRELHNWXMHĂOL]PLHQQD
artist QLHPDSU]\SLVDQHMZDUWRĂFL
YDUDUWLVW ijij
YDUDUWLVW$ DUWLVW__^` 3RQLĝHMSU]HGVWDZLRQRWU]\ZDUWRĂFL-HĝHOLNWöUDNROZLHN]QLFK
]RVWDQLHX]QDQD]DtruthyWRQDVWÈSLZ\NRQDQLHNRGX]QDMGXMÈFHJR
VLÚZSROHFHQLXif.LHG\VNU\SWQDSRWNDvalueBZRSHUDWRU]H
ORJLF]Q\PSU]HUZLHSU]HWZDU]DQLHZ\UDĝHQLDSRQLHZDĝOLF]EDMHVW
X]QDZDQD]DtruthyLQDVWÈSLZ\NRQDQLHNROHMQHJREORNXNRGX
YDOXH$ YDOXH% YDOXH& if (valueA || valueB || valueC) {
:\NRQDMSHZQH]DGDQLH
}
7DWHFKQLNDUöZQLHĝPRĝHE\ÊXĝ\ZDQDGRVSUDZG]HQLDF]\QD
VWURQLHLVWQLHMHGDQ\HOHPHQWMDNPLDïRWRPLHMVFHZSRGUR]G]LDOH
ķ6SUDZG]HQLHUöZQRĂFLLLVWQLHQLDĵ
2SHUDWRU\ORJLF]QHQLH]DZV]H
]ZUDFDMÈZDUWRĂÊtrueOXE
falseSRQLHZDĝ
ZDUWRĂFLÈ]ZURWQÈMHVWWD
NWöUDSU]HUZDïDSU]HWZDU]DQLHZ\UDĝHQLD
ZDUWRĂÊPRJïD]RVWDÊ
SRWUDNWRZDQDMDNRtruthy
OXEfalsyFKRÊQLHE\ïD
ZDUWRĂFLÈERRORZVNÈ
•
•
3URJUDPLĂFLNUHDW\ZQLH
Z\NRU]\VWXMÈWHPRĝOLZRĂFL
QDSU]\NïDGGRSU]\SLV\ZDQLD
ZDUWRĂFL]PLHQQ\POXEQDZHW
SRGF]DVWZRU]HQLDRELHNWöZ
1DW\FKPLDVWSR]QDOH]LHQLX
ZDUWRĂFLtruthyQDVWÚSXMHSU]HUZDQLHVSUDZG]DQLDNROHMQ\FK
RSFML'ODWHJRWHĝGRĂZLDGF]HQL
SURJUDPLĂFLF]ÚVWR
NRGNWöU\QDMSUDZGRSRGREQLHM]ZUöFLZDUWRĂÊtrue
XPLHV]F]DMÈMDNRpierwszy
ZRSHUDFMDFK25QDWRPLDVW
]ZUDFDMÈF\falseĽMDNR
SLHUZV]\ZRSHUDFMDFK$1'
RSFMHZ\PDJDMÈFHQDMZLÚNV]HM
PRF\REOLF]HQLRZHMXPLHV]F]DMÈQDNRñFXQDZ\SDGHN
JG\E\ZDUWRĂFLÈ]ZURWQÈE\ïR
trueLQLH]DFKRG]LïDSRWU]HED
SU]HSURZDG]DQLDZ\PDJDMÈF\FKREOLF]Hñ
•
•
'(&<=-(,3}7/(
175
PĘTLE
3ÚWODVSUDZG]DZDUXQHN-HĝHOLZDUWRĂFLÈEÚG]LHtrueWRQDVWÈSL
Z\NRQDQLHEORNXNRGX:öZF]DVZDUXQHN]RVWDMHVSUDZG]RQ\
SRQRZQLHLMHĂOLQDGDO]ZUDFDtrueEORNNRGX]QöZEÚG]LH
Z\NRQDQ\&Dï\SURFHVMHVWSRZWDU]DQ\GRFKZLOLJG\ZDUXQHN
]ZUöFLfalse1DMF]ÚĂFLHMVSRW\NDP\WU]\URG]DMHSÚWOL
FOR
WHILE
DO-WHILE
-HĝHOLFKFHV]Z\NRQDÊNRGRNUHĂORQÈOLF]EÚUD]\Xĝ\MSÚWOLfor
7RMHVWQDMF]ÚĂFLHMXĝ\ZDQD
SÚWOD :SÚWOLforZDUXQHNWR
]Z\NOHOLF]QLNRNUHĂODMÈF\OLF]EÚ
LWHUDFMLGDQHMSÚWOL
-HĝHOLQLHZLHV]LOHUD]\
SRZLQLHQE\ÊZ\NRQDQ\NRG
Xĝ\MSÚWOLwhile:DUXQNLHPWHM
SÚWOLPRĝHE\ÊFRNROZLHNLQQHJR
QLĝOLF]QLN.RGSÚWOLEÚG]LH
Z\NRQ\ZDQ\GRSöNLGRSöW\
ZDUXQHNSU]\MPXMHZDUWRĂÊ
true
3ÚWODdo-whileMHVWEDUG]R
SRGREQDGRwhileDOH]MHGQÈ
ZDĝQÈUöĝQLFÈ3ROHFHQLD
]QDMGXMÈFHVLÚZSÚWOL ZHZQÈWU]QDZLDVXNODPURZHJR ]RVWDQÈZ\NRQDQHFRQDMPQLHM
MHGHQUD]QDZHWMHĂOLZDUXQHN
SU]\MPXMHZDUWRĂÊfalse
WARUNEK (LICZNIK)
SŁOWO KLUCZOWE
OTWIERAJĄCY
NAWIAS
KLAMROWY
for YDUL LL {
GRFXPHQWZULWH L }
KOD DO WYKONANIA W TRAKCIE PĘTLI
ZAMYKAJĄCY NAWIAS
KLAMROWY
3RZ\ĝHMSU]HGVWDZLRQRSÚWOÚ
for:DUXQNLHPMHVWOLF]QLN
NWöU\RGOLF]DGR:\QLNLHP
G]LDïDQLDSÚWOLEÚG]LHZ\ĂZLHWOHQLHF\IU0123456789QDHNUDQLH
176
'(&<=-(,3}7/(
-HĝHOL]PLHQQDiPDZDUWRĂÊ
PQLHMV]ÈQLĝ10WRZ\NRQ\ZDQ\
MHVWNRGZQDZLDVLHNODPURZ\P1DVWÚSQLHSU]HSURZDG]DQDMHVWLQNUHPHQWDFMDOLF]QLND
:DUXQHN]RVWDMHVSUDZG]RQ\
SRQRZQLH-HĝHOL]PLHQQD
iQDGDOPDZDUWRĂÊPQLHMV]È
QLĝ10WRNRGMHVWZ\NRQ\ZDQ\
SRQRZQLH1DNROHMQ\FKWU]HFK
VWURQDFK]QDF]QLHGRNïDGQLHM
SR]QDV]G]LDïDQLHSÚWOL
LICZNIKI PĘTLI
3ÚWODforXĝ\ZDOLF]QLNDMDNRZDUXQNX/LF]QLNZVND]XMH
LOHUD]\]RVWDQLHZ\NRQDQ\NRGSÚWOL-DNPRĝHV]]REDF]\ÊSRQLĝHM
ZDUXQHNVNïDGDVLÚ]WU]HFKSROHFHñ
INICJALIZACJA
WARUNEK
UAKTUALNIENIE
8WZRU]HQLH]PLHQQHMLSU]\SLVDQLHMHMZDUWRĂFL07D]PLHQQD
F]ÚVWRPDQD]ZÚiRUD]G]LDïD
ZFKDUDNWHU]HOLF]QLND
3ÚWODSRZLQQDNRQW\QXRZDÊ
G]LDïDQLHDĝGRFKZLOLJG\
OLF]QLNRVLÈJQLHRNUHĂORQÈ
ZDUWRĂÊ
:WUDNFLHNDĝGHMLWHUDFMLSÚWOL
Z\NRQ\ZDQLD]QDMGXMÈF\FK
VLÚZQLHMSROHFHñ QDVWÚSXMH
GRGDQLHZDUWRĂFL1GROLF]QLND
YDUL L
i++
=PLHQQDMHVWWZRU]RQDW\ONR
ZWUDNFLHSLHUZV]HMLWHUDFMLSÚWOL
&]DVHPPRĝQDVLÚVSRWNDÊ
]V\WXDFMÈZNWöUHMWD]PLHQQD
PDQD]ZÚindex]DPLDVWSR
SURVWXi =PLHQQDiPLDïDSRF]ÈWNRZR
SU]\SLVDQÈZDUWRĂÊ0'ODWHJR
WHĝZRPDZLDQ\PSU]\SDGNX
SÚWOD]RVWDQLHZ\NRQDQD
UD]\
:DUWRĂÊOLF]QLNDMHVW]ZLÚNV]DQD]DSRPRFÈRSHUDWRUD
LQNUHPHQWDFML i++ 1LHUD]PRĝQD]REDF]\ÊĝH
]PLHQQD]RVWDMH]DGHNODURZDQD
MHV]F]HSU]HGZDUXQNLHPSÚWOL
3U]HGVWDZLRQ\SRQLĝHMNRGG]LDïDGRNïDGQLHWDNVDPR:\EöU
Xĝ\ZDQHJRSRGHMĂFLD]DOHĝ\RG
SUHIHUHQFMLSURJUDPLVW\
YDUL
IRU L LL ^
0LHMVFHQDNRGSÚWOL
}
:DUXQHNUöZQLHĝPRĝH]DZLHUDÊ]PLHQQÈSU]HFKRZXMÈFÈ
OLF]EÚ-HĝHOL]PLHQQDRQD]ZLH
roundsSU]HFKRZXMHOLF]EÚ
UXQGWHVWXDSÚWODMHVWZ\NRQ\ZDQDUD]GODNDĝGHMUXQG\WR
ZDUXQHNEÚG]LHPLDïSRVWDÊ
2WRLQQ\VSRVöERGF]\WDQLD
SRZ\ĝV]HJRZLHUV]DNRGX
ķ:Hě]PLHQQÈiDQDVWÚSQLH]D
SRPRFÈRSHUDWRUD++GRGDMGR
QLHMZDUWRĂÊ1ĵ
,VWQLHMHUöZQLHĝPRĝOLZRĂÊDE\
OLF]QLNSÚWOL]PQLHMV]DïVZRMÈ
ZDUWRĂÊSU]\Xĝ\FLXRSHUDWRUD
GHNUHPHQWDFML -- YDUURXQGV L URXQGV '(&<=-(,3}7/(
177
ZAPĘTLANIE
c z y 0 < 10
?
POCZĄTEK i = 0
:WUDNFLHSLHUZV]HMLWHUDFML
SÚWOL]PLHQQDi OLF]QLN PD
SU]\SLVDQÈZDUWRĂÊ0
178
'(&<=-(,3}7/(
czy 1 < 10?
j 1 do 0
doda
j 1 do 1
doda
wyświetl na stronie
wyświetl na stronie
0
1
i=1
3RGF]DVNDĝGHMNROHMQHM
LWHUDFMLQDVWÚSXMHVSUDZG]HQLH
ZDUXQNXF]\]PLHQQDiPD
ZDUWRĂÊPQLHMV]ÈQLĝ10
i=2
1DVWÚSQLHZ\NRQ\ZDQ\MHVW
NRGZHZQÈWU]SÚWOL SROHFHQLD
]QDMGXMÈFHVLÚZQDZLDVLH
NODPURZ\P for (YDUL L i++) {
GRFXPHQWZULWH L }
cz y 8 < 10
?
j 1 do 8
doda
c z y 9 < 10
?
j 1 do 9
doda
wyświetl na stronie
wyświetl na stronie
8
9
i=8
=PLHQQDiPRĝHE\ÊZ\NRU]\VWDQDZHZQÈWU]SÚWOL
:RPDZLDQ\PSU]\NïDG]LHMHVW
Xĝ\ZDQDZFHOXZ\ĂZLHWOHQLD
OLF]E\QDVWURQLH
i=9
3RZ\NRQDQLXSROHFHñ
ZSÚWOLQDVWÚSXMHLQNUHPHQWDFMD
]PLHQQHMi
cz y 1 0 < 1
i = 10
0?
END
']LDïDQLHSÚWOLNRñF]\VLÚJG\
ZDUXQHNQLHSU]\MPXMHGïXĝHM
ZDUWRĂFLtrue6NU\SWSU]HFKRG]LGRNROHMQHJRZLHUV]DNRGX
SREORNXSÚWOL
'(&<=-(,3}7/(
179
KLUCZOWE KONCEPCJE PĘTLI
3RQLĝHMZ\PLHQLRQRWU]\NZHVWLHNWöUHQDOHĝ\
Z]LÈÊSRGXZDJÚSRGF]DVSUDF\]SÚWODPL.DĝGD]QLFK
]RVWDQLH]LOXVWURZDQDSU]\NïDGHPQDWU]HFKNROHMQ\FKVWURQDFK
SŁOWA KLUCZOWE
PĘTLE I TABLICE
:SÚWODFKPRĝQDQDMF]ÚĂFLHM
VSRWNDÊGZDZ\PLHQLRQH
SRQLĝHMVïRZDNOXF]RZH
3ÚWOHVÈEDUG]RXĝ\WHF]QHSRGF]DVSUDF\]WDEOLFDPLMHĂOLWHQ
VDPNRGPDE\ÊZ\NRQ\ZDQ\
GODNDĝGHJRHOHPHQWXWDEOLF\
BREAK
7RVïRZRNOXF]RZHSRZRGXMH
SU]HUZDQLHZ\NRQ\ZDQLD
SÚWOLLQDND]XMHLQWHUSUHWHURZL
SU]HMĂFLHGRNROHMQHJRSROHFHQLD
MXĝQD]HZQÈWU]SÚWOL 7RVïRZR
NOXF]RZHPRĝQDVSRWNDÊWDNĝH
ZIXQNFMDFK CONTINUE
7RVïRZRNOXF]RZHQDND]XMH
LQWHUSUHWHURZL]DWU]\PDQLH
ELHĝÈFHMLWHUDFMLDQDVWÚSQLH
SRQRZQHVSUDZG]HQLHZDUXQNX
-HĝHOLZDUXQHNSU]\MPLH
ZDUWRĂÊtrueNRG]RVWDQLH
Z\NRQDQ\SRQRZQLH 1DSU]\NïDGFKFHV]Z\ĂZLHWOLÊ
QDVWURQLHZDUWRĂÊNDĝGHJR
HOHPHQWXSU]HFKRZ\ZDQHJR
ZWDEOLF\
3RGF]DVWZRU]HQLDVNU\SWXQLH
PXVLV]]QDÊOLF]E\HOHPHQWöZ
]QDMGXMÈF\FKVLÚZWDEOLF\
3RXUXFKRPLHQLXNRGXPRĝH
RQZSÚWOLVSUDZG]LÊZLHONRĂÊ
WDEOLF\1DVWÚSQLHWÚZLHONRĂÊ
Z\NRU]\VWXMHVLÚZOLF]QLNXGR
XVWDOHQLDOLF]E\LWHUDFMLSÚWOL
*G\SÚWOD]RVWDQLHZ\NRQDQD
RNUHĂORQÈOLF]EÚUD]\MHM
G]LDïDQLHVLÚNRñF]\
KWESTIE ZWIĄZANE
Z WYDAJNOŚCIĄ
7U]HEDNRQLHF]QLHSDPLÚWDÊĝH
NLHG\SU]HJOÈGDUNDLQWHUQHWRZD
GRWU]HGRVNU\SWX-DYD6FULSW
WRZVWU]\PXMHZV]\VWNLHLQQH
]DGDQLDDĝGRFKZLOLFDïNRZLWHJR
SU]HWZRU]HQLDGDQHJRVNU\SWX
-HĝHOLSÚWODSU]HWZDU]DW\ONR
QLHZLHONÈOLF]EÚHOHPHQWöZWR
QDSHZQRQLHEÚG]LHWRVWDQRZLïRSUREOHPX$OHMHĂOLSÚWOD
PXVLSU]HWZRU]\ÊEDUG]RGXĝR
HOHPHQWöZWRPRĝH]QDF]QLH
Z\GïXĝ\ÊF]DVZF]\W\ZDQLD
VWURQ\
:SU]\SDGNXZDUXQNXNWöU\QLJG\QLH]ZUDFDZDUWRĂFLfalse
PöZLP\RSÚWOLG]LDïDMÈFHM
ZQLHVNRñF]RQRĂÊ7DNLNRG
QLH]DNRñF]\G]LDïDQLDDĝGR
FKZLOL]Xĝ\FLDSU]H]SU]HJOÈGDUNÚLQWHUQHWRZÈFDïHMZROQHM
SDPLÚFLZV\VWHPLH SVXMÈFW\P
VDP\PG]LDïDQLHVNU\SWX :V]\VWNLH]PLHQQHNWöUH
PRĝQD]GHğQLRZDÊQD]HZQÈWU]
SÚWOLRUD]NWöUHQLH]PLHQLDMÈ
QLF]HJRZHZQÈWU]SÚWOL
]GHF\GRZDQLHSRZLQQ\E\Ê
GHğQLRZDQHQD]HZQÈWU]SÚWOL
-HĝHOL]RVWDQÈ]DGHNODURZDQH
ZHZQÈWU]SÚWOLWREÚGÈPXVLDï\
E\ÊREOLF]DQHZWUDNFLHNDĝGHM
LWHUDFMLSÚWOLQLHSRWU]HEQLH
]Xĝ\ZDMÈF]DVRE\V\VWHPX
180 '(&<=-(,3}7/(
UŻYCIE PĘTLI FOR
JAVASCRIPT
c04/js/for-loop.js
YDUVFRUHV >@
7DEOLFDZ\QLNöZ
YDUDUUD\/HQJWK VFRUHVOHQJWK
/LF]EDHOHPHQWöZZWDEOLF\
YDUURXQG1XPEHU %LHĝÈFDUXQGD
YDUPVJ ijij.RPXQLNDW
YDUL/LF]QLN
,WHUDFMDSU]H]HOHPHQW\]QDMGXMÈFHVLÚ
ZWDEOLF\
IRU L LDUUD\/HQJWKL ^
,QGHNV\HOHPHQWöZWDEOLF\UR]SRF]\QDMÈ
VLÚRG F]\OLR]QDF]DUXQGÚ 'RGDQLHGRELHĝÈFHMUXQG\
URXQG1XPEHU L :\ĂZLHWOHQLHZNRPXQLNDFLHQXPHUX
ELHĝÈFHMUXQG\
PVJ ij5XQGDijURXQG1XPEHUijij
3REUDQLHZ\QLNX]WDEOLF\Z\QLNöZ
PVJ VFRUHV>L@ijEU!ij
}
document.getElementById(’answer’).innerHTML
PVJ
WYNIK
/LF]QLNLLQGHNV\HOHPHQWöZWDEOLF\UR]SRF]\QDMÈVLÚRG
0 DQLHRG1 'ODWHJRWHĝZHZQÈWU]SÚWOLGRSREUDQLD
ELHĝÈFHJRHOHPHQWX]WDEOLF\Xĝ\ZDQDMHVW]PLHQQD
OLF]QLNDiNWöUDZQDVWÚSXMÈF\VSRVöEZVND]XMHHOHPHQW
WDEOLF\scores[i]3DPLÚWDMĝHWRMHVWOLF]EDQLĝV]DQLĝ
PRĝHV]RF]HNLZDÊ QDSU]\NïDGSLHUZV]DLWHUDFMDWR0
GUXJDWR1 3ÚWODforMHVWZ\NRU]\VWDQDZFHOX
SU]HSURZDG]HQLDLWHUDFMLSU]H]HOHPHQW\
]QDMGXMÈFHVLÚZWDEOLF\
:RPDZLDQ\PSU]\NïDG]LHZ\QLNLGOD
NDĝGHMUXQG\WHVWXVÈSU]HFKRZ\ZDQH
ZWDEOLF\RQD]ZLHscores
&DïNRZLWDOLF]EDHOHPHQWöZ]QDMGXMÈF\FKVLÚZWDEOLF\MHVWSU]HFKRZ\ZDQD
Z]PLHQQHMRQD]ZLHarrayLength
8VWDOHQLHWHMOLF]E\RGE\ZDVLÚ]DSRPRFÈ
ZïDĂFLZRĂFLlengthWDEOLF\
:VNU\SFLHPDP\MHV]F]HWU]\LQQH
]PLHQQH=PLHQQDroundNumberSU]HFKRZXMHQXPHUUXQG\WHVWXmsg]DZLHUD
NRPXQLNDWGRZ\ĂZLHWOHQLDQDWRPLDVWiWR
OLF]QLN ]PLHQQDi]RVWDïD]DGHNODURZDQD
QD]HZQÈWU]SÚWOL 3ÚWODUR]SRF]\QDVLÚRGVïRZDNOXF]RZHJR
forNWöUHZQDZLDVLH]DZLHUD]GHğQLRZDQ\ZDUXQHN'RSöNLZDUWRĂÊOLF]QLNDMHVW
PQLHMV]DRGFDïNRZLWHMOLF]E\HOHPHQWöZ
WDEOLF\GRSöW\Z\NRQ\ZDQ\MHVWNRGSÚWOL
]GHğQLRZDQ\ZQDZLDVLHNODPURZ\P
:WUDNFLHNDĝGHMLWHUDFMLSÚWOLQDVWÚSXMH
]ZLÚNV]HQLHQXPHUXUXQG\R
:QDZLDVLHNODPURZ\P]QDMGXMÈVLÚ
SROHFHQLDRGSRZLDGDMÈFH]DSU]HFKRZ\ZDQLHQXPHUXUXQG\RUD]ZVWDZLHQLH
JRGRSU]\JRWRZ\ZDQHJRNRPXQLNDWX
=PLHQQH]DGHNODURZDQHQD]HZQÈWU]SÚWOL
VÈXĝ\ZDQHZHZQÈWU]SÚWOL
1DVWÚSQLH]DZDUWRĂÊ]PLHQQHMmsg
]RVWDMHZ\ĂZLHWORQDQDVWURQLH:DUWRĂFLÈ
]PLHQQHMMHVWNRG+70/ZLÚFZ\NRU]\VWXMHP\ZïDĂFLZRĂÊinnerHTML3DPLÚWDM
R]DSR]QDQLXVLÚZUR]G]LDOHZSRGUR]G]LDOHķ$WDNLW\SX;66ĵ]LQIRUPDFMDPL
RQLHEH]SLHF]HñVWZDFKZLÈĝÈF\FKVLÚ
]Xĝ\FLHPZ\PLHQLRQHMZïDĂFLZRĂFL
'(&<=-(,3}7/(
181
UŻYCIE PĘTLI WHILE
3RQLĝHMSU]HGVWDZLRQRSU]\NïDG
SÚWOLwhileNWöUDZ\ĂZLHWODQD
VWURQLHIUDJPHQWWDEOLF]NLPQRĝHQLD
:WUDNFLHNDĝGHMLWHUDFMLSÚWOLNROHMQ\
ZLHUV]IUDJPHQWXWDEOLF]NLPQRĝHQLD
MHVWGRGDZDQ\GR]PLHQQHMmsg
']LDïDQLHSÚWOLMHVWNRQW\QXRZDQH
GRSöNLGRSöW\ZDUWRĂFLÈZDUXQNX
]GHğQLRZDQHJRZQDZLDVLHMHVW
true:VSRPQLDQ\PZDUXQNLHP
MHVWOLF]QLNRNUHĂODMÈF\ĝHGRSöNL
]PLHQQDiPDZDUWRĂÊPQLHMV]È
QLĝ10SRZLQQ\E\ÊZ\NRQ\ZDQH
SROHFHQLD]QDMGXMÈFHVLÚZEORNX
NRGX
c04/js/while-loop.js
JAVASCRIPT
YDUL 3U]\SLVDQLHOLF]QLNRZLZDUWRĂFL
YDUPVJ ijij.RPXQLNDW
=PLHQQDSU]HFKRZXMHIUDJPHQWWDEOLF]NL
PQRĝHQLD
while (i < 10) {
PVJ Lij[ ij L ijEU!ij
L
}
GRFXPHQWJHW(OHPHQW%\,G ijDQVZHUij LQQHU+70/ PVJ
WYNIK
:HZQÈWU]EORNXNRGXPDP\GZD
SROHFHQLD
3LHUZV]HXĝ\ZDRSHUDWRUD+=Z\NRU]\VW\ZDQHJRZFHOXGRGDQLDQRZHM
]DZDUWRĂFLGR]PLHQQHMmsg:WUDNFLHNDĝGHMLWHUDFMLSÚWOLQDNRñFX
NRPXQLNDWXSU]H]QDF]RQHJRGR
Z\ĂZLHWOHQLDGRGDZDQ\MHVWQRZ\
ZLHUV]IUDJPHQWXWDEOLF]NLPQRĝHQLD
RUD]]QDNQRZHJRZLHUV]D'ODWHJR
WHĝRSHUDWRU+=MHVWVNUöWHPGOD
SROHFHQLDmsg = msg + ’nowy msg’
'RNïDGQHRPöZLHQLHWHJRSROHFHQLD
]QDMG]LHV]QDGROHQDVWÚSQHMVWURQ\ 'UXJLHSROHFHQLHSRZRGXMH
LQNUHPHQWDFMÚRMHGHQZDUWRĂFL
]PLHQQHMOLF]QLND ,QNUHPHQWDFMD
MHVWSU]HSURZDG]DQDZHZQÈWU]SÚWOL
DQLHZMHMZDUXQNX 3R]DNRñF]HQLXG]LDïDQLDSÚWOL
LQWHUSUHWHUSU]HFKRG]LGRZ\NRQDQLD
SLHUZV]HJRZLHUV]DSREORNX
SÚWOLFRZRPDZLDQ\PSU]\NïDG]LH
R]QDF]DZ\ĂZLHWOHQLHQDVWURQLH
]DZDUWRĂFL]PLHQQHMmsg
182 '(&<=-(,3}7/(
:RPDZLDQHMSÚWOLZDUXQHNRNUHĂODĝHNRGSRZLQLHQE\Ê
Z\NRQDQ\G]LHZLÚFLRNURWQLH=QDF]QLHEDUG]LHMW\SRZH
Xĝ\FLHSÚWOLwhile]DFKRG]LZV\WXDFMDFKNLHG\QLH
wiadomoLOHUD]\SRZLQLHQE\ÊZ\NRQDQ\NRGSÚWOL3ÚWOD
EÚG]LHG]LDïDïDGRSöNLGRSöW\ZDUXQHNMHVWVSHïQLDQ\
UŻYCIE PĘTLI DO-WHILE
c04/js/do-while-loop.js
JAVASCRIPT
YDUL 3U]\SLVDQLHOLF]QLNRZLZDUWRĂFL
YDUPVJ ijij.RPXQLNDW
=PLHQQDSU]HFKRZXMHIUDJPHQWWDEOLF]NLPQRĝHQLD
do {
PVJ Lij[ ij L ijEU!ij
L
`ZKLOH L =ZUöÊXZDJÚĝHFKRÊOLF]QLNPDZDUWRĂÊ
WRSÚWODLWDN]RVWDMHZ\NRQDQD
GRFXPHQWJHW(OHPHQW%\,G ijDQVZHUij LQQHU+70/ PVJ
.OXF]RZDUöĝQLFDPLÚG]\
SÚWODPLwhileLdo-while
SROHJDQDW\PĝHZWHMGUXJLHM
SÚWOLSROHFHQLDZEORNXNRGXVÈ
Z\NRQ\ZDQHSU]HGVSUDZG]HQLHPZDUXQNX2]QDF]DWRĝH
SROHFHQLD]RVWDQÈZ\NRQDQHFR
QDMPQLHMMHGHQUD]QDZHWMHĂOL
ZDUXQHNQLH]RVWDQLHVSHïQLRQ\
6SöMU]QDZDUXQHNVSUDZG]DP\F]\ZDUWRĂÊ]PLHQQHMiMHVW
PQLHMV]DQLĝ1:DUWRĂÊELHĝÈFD
WHM]PLHQQHMWR1
'ODWHJRWHĝIUDJPHQWWDEOLF]NL
PQRĝHQLD]RVWDMHZ\ĂZLHWORQ\
QDVWURQLHSRPLPRWHJRĝH
ZDUWRĂÊOLF]QLNDMHVWZLÚNV]D
RG1
WYNIK
1LHNWöU]\SURJUDPLĂFL]DSLVXMÈ
SROHFHQLHwhileZRGG]LHOQ\P
ZLHUV]XSR]DP\NDMÈF\P
QDZLDVLHNODPURZ\P
2PöZLHQLHSLHUZV]HJRSROHFHQLD]SU]\NïDGöZ
SU]HGVWDZLRQ\FKQDREXVWURQDFK
1
2 3
4
5
6
PVJ Lij[ ij L ijEU!ij
1. 3REUDQLH]PLHQQHMRQD]ZLHmsg
2. 'RGDQLHGRQLHMZVND]DQHMZDUWRĂFL
3. :DUWRĂÊOLF]QLND
4. 'RGDQLHFLÈJXWHNVWRZHJRx 5 =
5. 3RPQRĝHQLHOLF]QLNDSU]H]5
6. 'RGDQLH]QDNXNRñFDZLHUV]D
'(&<=-(,3}7/( 183
184 '(&<=-(,3}7/(
PRZYKŁAD
DECYZJE I PĘTLE
:W\PSU]\NïDG]LHXĝ\WNRZQLN]REDF]\
Z\ĂZLHWORQÈRSHUDFMÚGRGDZDQLDOXEPQRĝHQLD
GDQHMOLF]E\6NU\SWSRND]XMHXĝ\FLHORJLNL
ZDUXQNRZHMRUD]SÚWOL
1DSRF]ÈWNXPDP\GHNODUDFMHGZöFK]PLHQQ\FK
1. =PLHQQDnumberSU]HFKRZXMHOLF]EÚQDNWöUHM]RVWDQÈSU]HSURZDG]RQHREOLF]HQLD ZRPDZLDQ\PSU]\SDGNXWR3 2. =PLHQQDoperatorZVND]XMHURG]DMZ\NRQ\ZDQHMRSHUDFMLGRGDZDQLHOXEPQRĝHQLH ZRPDZLDQ\PSU]\SDGNXWRGRGDZDQLH .RQVWUXNFMDif-elseVïXĝ\GRZ\ERUXRSHUDFML GRGDZDQLHOXE
PQRĝHQLH SU]HSURZDG]DQHMQDGDQHMOLF]ELH-HĝHOLZDUWRĂFLÈ
]PLHQQHMRQD]ZLHoperatorEÚG]LHadditionWROLF]E\]RVWDQÈ
GRGDQH:SU]HFLZQ\PUD]LHEÚGÈSRPQRĝRQH
:NRQVWUXNFMLZDUXQNRZHMSÚWODwhileMHVWXĝ\ZDQDGRREOLF]HQLD
Z\QLNX3ÚWODZ\NRQDLWHUDFMLSRQLHZDĝZZDUXQNXVSUDZG]DP\
F]\ZDUWRĂÊOLF]QLNDMHVWPQLHMV]DQLĝ11
'(&<=-(,3}7/( 185
PRZYKŁAD
DECYZJE I PĘTLE
c04/example.html
HTML
'2&7<3(KWPO!
<html>
<head>
<title>7UDğÊZG]LHVLÈWNÚ</title>
OLQNUHO ĵVW\OHVKHHWĵKUHI ĵFVVFFVVĵ!
</head>
<body>
VHFWLRQLG ĵSDJHĵ!
<h1>7UDğÊZG]LHVLÈWNÚ</h1>
LPJVUF ĵLPDJHVWHDFKHUSQJĵLG ĵWHDFKHUĵDOW ĵĵ!
VHFWLRQLG ĵEODFNERDUGĵ!VHFWLRQ!
</section>
VFULSWVUF ĵMVH[DPSOHMVĵ!VFULSW!
</body>
</html>
2PDZLDQ\WXWDMNRG+70/MHVWQLHFRLQQ\
RGSR]RVWDï\FKSU]\NïDGöZSU]HGVWDZLRQ\FK
ZUR]G]LDOHSRQLHZDĝJHQHUXMHWDEOLFÚV]NROQÈ
QDNWöUHMQDVWÚSQLHEÚGÈZ\ĂZLHWORQHGDQH
186 '(&<=-(,3}7/(
-DNPRĝHV]]REDF]\ÊVNU\SW]RVWDïQDVWURQLH
GRGDQ\WXĝSU]HG]DP\NDMÈF\P]QDF]QLNLHP
</body>
PRZYKŁAD
DECYZJE I PĘTLE
c04/js/example.js
JAVASCRIPT
YDUWDEOH /LF]EDQDNWöUHMEÚGÈSU]HSURZDG]DQHRSHUDFMH
YDURSHUDWRU ijDGGLWLRQij5RG]DMREOLF]Hñ GRP\ĂOQLHWRGRGDZDQLH YDUL 3U]\SLVDQLHOLF]QLNRZLZDUWRĂFL
YDUPVJ ijij.RPXQLNDW
if (operator === ’addition’) {
-HĝHOLZDUWRĂFLÈ]PLHQQHMRSHUDWRUMHVW
DGGLWLRQ
while (i < 11) {
'RSöNLOLF]QLNPDZDUWRĂÊPQLHMV]ÈQLĝ
PVJ LijijWDEOHij ij LWDEOH ijEU!ij2EOLF]HQLD
L'RGDQLHGRZDUWRĂFLOLF]QLND
}
} else {
:SU]HFLZQ\PUD]LH
while (i < 11) {
'RSöNLOLF]QLNPDZDUWRĂÊPQLHMV]ÈQLĝ
PVJ Lij[ijWDEOHij ij L WDEOH ijEU!ij2EOLF]HQLD
L'RGDQLHGRZDUWRĂFLOLF]QLND
}
}
:\ĂZLHWOHQLHQDVWURQLH]DZDUWRĂFL]PLHQQHMPVJ
YDUHO GRFXPHQWJHW(OHPHQW%\,G ijEODFNERDUGij HOLQQHU+70/ PVJ
*G\]DSR]QDV]VLÚ]NRPHQWDU]DPLZNRG]LH
EÚG]LHV]ZLHG]LDïMDNRQG]LDïD1DSRF]ÈWNX
VNU\SWXPDP\GHNODUDFMÚLSU]\SLVDQLHZDUWRĂFL
F]WHUHP]PLHQQ\P
1DVWÚSQLHZSROHFHQLXifVSUDZG]DP\F]\
ZDUWRĂFLÈ]PLHQQHMRQD]ZLHoperatorMHVW
addition-HĝHOLWDNWRSÚWODwhileMHVWXĝ\ZDQD
GRSU]HSURZDG]HQLDREOLF]HñLXPLHV]F]HQLDLFK
Z\QLNXZ]PLHQQHMmsg
-HĝHOL]PLHQLV]ZDUWRĂÊ]PLHQQHMoperatorQD
MDNÈNROZLHNLQQÈQLĝadditionWRNRQVWUXNFMD
ZDUXQNRZDZ\ELHU]HGUXJL]HVWDZSROHFHñ7HQ
]HVWDZWDNĝH]DZLHUDSÚWOÚwhileDOHW\PUD]HP
SU]HSURZDG]DMÈFÈRSHUDFMHPQRĝHQLD ]DPLDVW
GRGDZDQLD *G\Z\EUDQDSÚWOD]DNRñF]\G]LDïDQLHRVWDWQLH
GZDZLHUV]HVNU\SWXSRELHUDMÈHOHPHQWNWöUHJR
DWU\EXWidPDZDUWRĂÊEODFNERDUGDQDVWÚSQLH
XPLHV]F]DMÈQDVWURQLH]DZDUWRĂÊ]PLHQQHMmsg
'(&<=-(,3}7/(
187
PODSUMOWANIE
DECYZJE I PĘTLE
f 3ROHFHQLDZDUXQNRZHSR]ZDODMÈQDSRGHMPRZDQLHZNRG]LH
GHF\]MLGRW\F]ÈF\FKGDOV]HJRVSRVREXMHJRZ\NRQ\ZDQLD
f 2SHUDWRU\SRUöZQDQLD === == <><==> VÈ
Xĝ\ZDQHGRSRUöZQ\ZDQLDGZöFKRSHUDQGöZ
f 2SHUDWRU\ORJLF]QHSR]ZDODMÈQDïÈF]HQLHFRQDMPQLHMGZöFK
]HVWDZöZRSHUDWRUöZSRUöZQDQLD
f .RQVWUXNFMDif-elseSR]ZDODQDZ\NRQDQLHMHGQHJR]HVWDZX
NRGXJG\ZDUXQHNSU]\MPXMHZDUWRĂÊtrueRUD]LQQHJRMHĂOL
ZDUXQHNPDZDUWRĂÊfalse
f .RQVWUXNFMDswitchSR]ZDODQDSRUöZQ\ZDQLHZDUWRĂFL
]PRĝOLZ\PLGRX]\VNDQLDZ\QLNDPL DSRQDGWR]DSHZQLD
RSFMÚGRP\ĂOQÈXĝ\ZDQÈZSU]\SDGNXEUDNXGRSDVRZDQLD f 7\S\GDQ\FKPRJÈE\Ê]PLHQLDQH
f :V]\VWNLHZDUWRĂFLPRĝQDRFHQLÊMDNRtruthyOXEfalsy
f ,VWQLHMÈWU]\URG]DMHSÚWOLforwhileLdo-while.DĝGD]QLFK
SR]ZDODQDSRZWöU]HQLHZ\NRQDQLDSHZQHJR]HVWDZXSROHFHñ
188 '(&<=-(,3}7/(
5
OBIEKTOWY
MODEL
DOKUMENTU
Obiektowy model dokumentu (ang. document
object modelĽ'20 RNUHĂODMDNSU]HJOÈGDUND
SRZLQQDXWZRU]\ÊPRGHO+70/VWURQ\LQWHUQHWRZHM
DWDNĝHMDN-DYD6FULSWPRĝHX]\VNDÊGRVWÚSGR]DZDUWRĂFLVWURQ\L]PRG\ğNRZDÊWÚ]DZDUWRĂÊSRGF]DVZ\ĂZLHWODQLDVWURQ\ZRNQLHSU]HJOÈGDUNL
0RGHO'20QLHMHVWF]ÚĂFLÈDQL+70/DQL-DYD6FULSWĽMHVWWRRGG]LHOQ\]ELöUUHJXï
LPSOHPHQWRZDQ\SU]H]SURGXFHQWöZZV]\VWNLFKQDMZDĝQLHMV]\FKSU]HJOÈGDUHNLQWHUQHWRZ\FK
REHMPXMHGZDSRGVWDZRZHREV]DU\
UTWORZENIE MODELU STRONY HTML
.LHG\SU]HJOÈGDUNDZF]\WXMHVWURQÚZSDPLÚFLWZRU]\PRGHOWHMVWURQ\
0RGHO'20RNUHĂODVSRVöEZMDNLSU]HJOÈGDUNDSRZLQQDSU]\JRWRZDÊMHJRVWUXNWXUÚ
]Z\NRU]\VWDQLHPdrzewa modelu DOM.
0RGHO'20MHVWQD]\ZDQ\PRGHOHP
RELHNWRZ\PSRQLHZDĝVNïDGDVLÚ]RELHNWöZ
GU]HZRPRGHOX'20 .DĝG\RELHNWSU]HGVWDZLDLQQÈF]ÚĂÊVWURQ\
ZF]\WDQÈZRNQLHSU]HJOÈGDUNL
190 OBIEKTOWY MODEL DOKUMENTU
UZYSKANIE DOSTĘPU DO STRONY
HTML I JEJ MODYFIKACJA
0RGHO'20GHğQLXMHUöZQLHĝPHWRG\
LZïDĂFLZRĂFLVïXĝÈFHGRX]\VNLZDQLDGRVWÚSX
GR LXDNWXDOQLDQLD SRV]F]HJöOQ\FKRELHNWöZ
PRGHOXNWöUH]NROHLXDNWXDOQLDMÈ]DZDUWRĂÊ
ZLG]LDQÈSU]H]Xĝ\WNRZQLNDZRNQLHSU]HJOÈdarki.
0RĝHV]VLÚVSRWNDÊ]V\WXDFMÈZNWöUHMPRGHO
'20MHVWQD]\ZDQ\interfejsem programowania aplikacji (API),QWHUIHMVXĝ\WNRZQLND
SR]ZDODOXG]LRPQDNRU]\VWDQLH]SURJUDPöZ
]NROHL$3,SR]ZDODSURJUDPRP LVNU\SWRP QDZ]DMHPQÈNRPXQLNDFMÚ0RGHO'20
RNUHĂODFRVNU\SWPRĝH]URELÊ]ELHĝÈFÈ
VWURQÈZF]\WDQÈZSU]HJOÈGDUFHLQWHUQHWRZHM
DWDNĝHMDNPRĝHZ\GDZDÊSU]HJOÈGDUFH
SROHFHQLDXDNWXDOQLDMÈFH]DZDUWRĂÊZ\ĂZLHWODQÈXĝ\WNRZQLNRZL
:SU]\NïDGDFKSRND]DQ\FKZW\P
UR]G]LDOHNRG-DYD6FULSWEÚG]LH
PRG\ğNRZDïSU]HGVWDZLRQ\WXWDM
GRNXPHQW+70/.RORU\]RVWDï\
Xĝ\WHZFHOXR]QDF]HQLDSULRU\WHWX
LVWDQXSRV]F]HJöOQ\FKHOHPHQWöZ
OLVW\U]HF]\GR]URELHQLD
PILNE
SPOKOJNIE
NORMALNE
ZAKOŃCZONE
OBIEKTOWY MODEL DOKUMENTU
191
DRZEWO MODELU DOM
JEST MODELEM STRONY
INTERNETOWEJ
.LHG\SU]HJOÈGDUNDZF]\WXMHVWURQÚLQWHUQHWRZÈWZRU]\MHMPRGHOĽ
W]ZPRGHOGU]HZD'20NWöU\MHVWSU]HFKRZ\ZDQ\ZSDPLÚFL]DMPRZDQHM
SU]H]SU]HJOÈGDUNÚ6NïDGDVLÚ]F]WHUHFKSRGVWDZRZ\FKW\SöZZÚ]ïöZ
CZĘŚĆ GŁÓWNA STRONY HTML
<html>
<body>
<div id=”page”>
<h1 id=”header”>Lista</h1>
<h2>$UW\NXï\VSRĝ\ZF]H</h2>
<ul>
<li LG ĵRQHĵFODVV ĵKRWĵ><em>ĂZLHĝH</em> ğJL</li>
<li LG ĵWZRĵFODVV ĵKRWĵ>RU]HV]NLSLQLRZH</li>
<li LG ĵWKUHHĵFODVV ĵKRWĵ>miód</li>
<li id=”four”>RFHWEDOVDPLF]Q\</li>
</ul>
VFULSWVUF ĵMVOLVWMVĵ!VFULSW!
</div>
</body>
</html>
WĘZEŁ DOCUMENT
3RZ\ĝHMSU]HGVWDZLRQRNRG+70/OLVW\U]HF]\
GRNXSLHQLDQDWRPLDVWSRSUDZHMVWURQLHdrzewo
modelu DOM.DĝG\HOHPHQWDWU\EXWLIUDJPHQW
WHNVWXZNRG]LH+70/MHVWSU]HGVWDZLDQ\]DSRPRFÈZïDVQHJRZÚ]ïD'201DVDPHMJöU]HGU]HZD
]QDMGXMHVLÚZÚ]HïGRFXPHQWNWöU\SU]HGVWDZLD
FDïÈVWURQÚ LMHGQRF]HĂQLHRGSRZLDGDRELHNWRZL
GRFXPHQWNWöU\SR]QDïHĂZUR]G]LDOH .LHG\X]\VNXMHV]GRVWÚSGRGRZROQHJRZÚ]ïD
HOHPHQWXDWU\EXWXOXEWHNVWXSU]HFKRG]LV]GR
QLHJR]DSRPRFÈZÚ]ïDGRFXPHQW7RMHVWSXQNW
Z\MĂFLDGODZV]\VWNLFKZL]\WZGU]HZLHPRGHOX
DOM.
192 OBIEKTOWY MODEL DOKUMENTU
WĘZŁY ELEMENTÓW
(OHPHQW\+70/RSLVXMÈVWUXNWXUÚVWURQ\+70/
=QDF]QLNLRG<h1> do <h6>ZVND]XMÈQDJïöZNL
]QDF]QLN<p>R]QDF]DDNDSLWWHNVWXLWG $E\X]\VNDÊGRVWÚSGRGU]HZDPRGHOX'20
QDOHĝ\UR]SRF]ÈÊRGZ\V]XNLZDQLDHOHPHQWöZ
Po]QDOH]LHQLXĝÈGDQHJRHOHPHQWXPDP\GRVWÚS
GRZÚ]ïöZMHJRWHNVWXLDWU\EXWXRLOH]DFKRG]L
SRWU]HED'ODWHJRPHWRG\SR]ZDODMÈFHQDGRVWÚS
GRZÚ]ïöZHOHPHQWXSR]QDV]ZF]HĂQLHMQLĝ
VSRVRE\QDX]\VNDQLHGRVWÚSXGRWHNVWXEÈGě
DWU\EXWöZ
Uwaga:3U]\NïDGOLVW\U]HF]\GRNXSLHQLD
EÚG]LHP\Z\NRU]\VW\ZDÊZUR]G]LDOHELHĝÈF\P
RUD]ZGZöFKNROHMQ\FK']LÚNLWHPXEÚG]LHV]
PöJï]REDF]\ÊMDNUöĝQHWHFKQLNLSR]ZDODMÈQD
XDNWXDOQLHQLHVWURQ\LQWHUQHWRZHM SU]HGVWDZLDQHM
SU]H]WRGU]HZRPRGHOX'20 5HODFMHPLÚG]\ZÚ]ïHPGRFXPHQWLZV]\VWNLPL
ZÚ]ïDPLHOHPHQWöZVÈRNUHĂODQHW\PLVDP\PL
WHUPLQDPLQDGU]ÚGQ\SRWRPQ\UöZQRU]ÚGQ\
SU]RGHNLSRWRPHN .DĝG\ZÚ]HïMHVWSRWRPNLHP
ZÚ]ïDGRFXPHQW).
.DĝG\ZÚ]HïMHVWGRNXPHQWHPZUD]]PHWRGDPLLZïDĂFLZRĂFLDPL
6NU\SW\X]\VNXMÈGRVWÚSGRGU]HZDPRGHOX'20 QLHSOLNXěUöGïRZHJR
+70/ LXDNWXDOQLDMÈMH:V]HONLH]PLDQ\ZSURZDG]RQHZGU]HZLH
PRGHOX'20VÈRG]ZLHUFLHGODQHZSU]HJOÈGDUFH
GRFXPHQW
DRZEWO MODELU
DOM
html
body
div
h1
em
atrybut
tekst
h2
atrybut
tekst
li
atrybut
ul
VFULSW
atrybut
tekst
li
atrybut
tekst
li
atrybut
tekst
li
atrybut
tekst
tekst
WĘZŁY ATRYBUTÓW
2WZLHUDMÈF\]QDF]QLNHOHPHQWX+70/PRĝH
]DZLHUDÊDWU\EXW\NWöUHZGU]HZLHPRGHOX'20
VÈSUH]HQWRZDQHSU]H]ZÚ]ï\DWU\EXWöZ
:Ú]ï\DWU\EXWöZQLHVÈelementami potomnymi
]DZLHUDMÈFHJRJRHOHPHQWXDOHVWDQRZLÈF]ÚĂÊ
GRNXPHQWX*G\X]\VNDV]GRVWÚSGRHOHPHQWX
GRVWÚSQHEÚGÈRNUHĂORQHPHWRG\LZïDĂFLZRĂFL
-DYD6FULSWSR]ZDODMÈFHQDRGF]\WOXE]PLDQÚ
DWU\EXWöZWHJRHOHPHQWX1DSU]\NïDGF]ÚVWRWU]HEDGRNRQ\ZDÊ]PLDQZDUWRĂFLDWU\EXWöZFODVV
ZFHOX]DVWRVRZDQLDQRZ\FKUHJXï&66PDMÈF\FK
ZSï\ZQDVSRVöESUH]HQWDFMLGDQHJRHOHPHQWX
WĘZŁY TEKSTOWE
*G\X]\VNDP\GRVWÚSGRZÚ]ïDHOHPHQWX
PRĝHP\SU]HMĂÊGRWHNVWXSU]HFKRZ\ZDQHJR
ZW\PHOHPHQFLH7HNVW]QDMGXMHVLÚZHZïDVQ\P
ZÚěOHWHNVWRZ\P
:Ú]ï\WHNVWRZHQLHPRJÈPLHÊHOHPHQWöZ
SRWRPQ\FK-HĝHOLHOHPHQW]DZLHUDWHNVWRUD]LQQ\
HOHPHQWSRWRPQ\WRWHQHOHPHQWSRWRPQ\nieMHVW
SRWRPNLHPZÚ]ïDWHNVWRZHJRDOHUDF]HMobejmuMÈFHJRJRHOHPHQWX =DSR]QDMVLÚ]HOHPHQWHP
<em>ZSLHUZV]\PHOHPHQFLH<li> 7RSRND]XMH
ĝHZÚ]HïWHNVWRZ\]DZV]HMHVWQRZÈJDïÚ]LÈ
ZGU]HZLHPRGHOX'20]NWöUHMQLHZ\ZRG]ÈVLÚ
ĝDGQHGDOV]HJDïÚ]LH
OBIEKTOWY MODEL DOKUMENTU 193
PRACA
Z DRZEWEM
MODELU DOM
8]\VNDQLHGRVWÚSXGRGU]HZDPRGHOX
'20LPRĝOLZRĂÊMHJRXDNWXDOQLDQLD
Z\PDJDMÈZ\NRQDQLDGZöFKNURNöZ
2GV]XNDQLHZÚ]ïDSU]HGVWDZLDMÈFHJR
HOHPHQW]NWöU\PFKFHV]SUDFRZDÊ
8ĝ\FLHMHJR]DZDUWRĂFLWHNVWRZHM
HOHPHQWöZSRWRPQ\FKLDWU\EXWöZ
KROK 1. UZYSKANIE DOSTĘPU DO ELEMENTÓW
3RQLĝHMSU]HGVWDZLRQRRJöOQHRPöZLHQLHPHWRGLZïDĂFLZRĂFLSR]ZDODMÈF\FKQDX]\VNDQLHGRVWÚSX
GRHOHPHQWöZ,FKSU]\EOLĝHQLH]QDMG]LHV]ZSRGUR]G]LDïDFKRGķ8]\VNDQLHGRVWÚSXGRHOHPHQWöZĵ
GRķ3LHUZV]\LRVWDWQLHOHPHQWSRWRPQ\ĵ
3LHUZV]HGZLHNROXPQ\VÈ]QDQHMDNR]DS\WDQLDPRGHOX'20=NROHLRVWDWQLDNROXPQDMHVW]QDQDMDNR
SRUXV]DQLHVLÚSRPRGHOX'20
WYBÓR KONKRETNEGO
WĘZŁA ELEMENTU
WYBÓR WIELU
ELEMENTÓW (NODELIST)
PORUSZANIE SIĘ MIĘDZY
WĘZŁAMI ELEMENTÓW
3RQLĝHMZ\PLHQLRQRWU]\VSRVRE\
QDMF]ÚĂFLHMXĝ\ZDQHZFHOX
wyboru konkretnego elementu.
3RQLĝHMZ\PLHQLRQRWU]\
VSRVRE\QDMF]ÚĂFLHMXĝ\ZDQH
ZFHOXZ\ERUXZLHOXHOHPHQWöZ
,VWQLHMHPRĝOLZRĂÊSU]HMĂFLD
]MHGQHJRZÚ]ïDHOHPHQWXGR
LQQHJRSRZLÈ]DQHJR]QLP
getElementById()
8ĝ\ZDZDUWRĂFLDWU\EXWXid
HOHPHQWX SRZLQQDE\ÊXQLNDOQD
QDVWURQLH 3DWU]SRGUR]G]LDï
ķ3REUDQLHHOHPHQWXQDSRGVWDZLHZDUWRĂFLDWU\EXWXLGĵ
getElementsByClassName()
:\ELHUDZV]\VWNLHHOHPHQW\
NWöUHPDMÈRNUHĂORQÈZDUWRĂÊ
atrybutu FODVV3DWU]SRGUR]G]LDïķ3REUDQLHHOHPHQWXQD
SRGVWDZLHZDUWRĂFLDWU\EXWX
FODVVĵ
parentNode
:\ELHUDHOHPHQWQDGU]ÚGQ\
ELHĝÈFHJRZÚ]ïDHOHPHQWX
NWöU\]ZUöFLSRSURVWXMHGHQ
HOHPHQW 3DWU]SRGUR]G]LDï
ķ3RUXV]DQLHVLÚSRPRGHOX
'20ĵ
TXHU\6HOHFWRU
8ĝ\ZDVHOHNWRUD&66L]ZUDFD
SLHUZV]\GRSDVRZDQ\HOHPHQW
3DWU]SRGUR]G]LDïķ3REUDQLH
HOHPHQWXQDSRGVWDZLH
VHOHNWRUD&66ĵ
getElementsByTagName()
:\ELHUDZV]\VWNLHHOHPHQW\
NWöUHPDMÈRNUHĂORQÈQD]ZÚ
]QDF]QLND3DWU]SRGUR]G]LDï
ķ3REUDQLHHOHPHQWXQDSRGVWDZLHQD]Z\]QDF]QLNDĵ
previousSibling / nextSibling
:\ELHUDSRSU]HGQLOXEQDVWÚSQ\
HOHPHQWUöZQRU]ÚGQ\ZGU]HZLH
PRGHOX'203DWU]SRGUR]G]LDï
ķ3RSU]HGQLLQDVWÚSQ\HOHPHQW
UöZQRU]ÚGQ\ĵ
3RV]F]HJöOQHHOHPHQW\PRĝQD
WDNĝHZ\ELHUDÊSU]H]SU]HMĂFLH
]MHGQHJRHOHPHQWXGRLQQHJR
ZGU]HZLHPRGHOX'20 SDWU]
WU]HFLDNROXPQD TXHU\6HOHFWRU$OO
8ĝ\ZDVHOHNWRUD&66ZFHOX
Z\EUDQLDZV]\VWNLFKGRSDVRZDQ\FKHOHPHQWöZ3DWU]
SRGUR]G]LDïķ3REUDQLHHOHPHQWX
QDSRGVWDZLHVHOHNWRUD&66ĵ
ğUVW&KLOGODVW&KLOG
:\ELHUDSLHUZV]\OXERVWDWQL
HOHPHQWSRWRPQ\ELHĝÈFHJR
HOHPHQWX3DWU]SRGUR]G]LDï
ķ3LHUZV]\LRVWDWQLHOHPHQW
SRWRPQ\ĵ
194 OBIEKTOWY MODEL DOKUMENTU
:UR]G]LDOHQDWUDğV]QDXZDJLMHĂOLPHWRG\PRGHOX'20EÚGÈG]LDïDÊW\ONRZRNUHĂORQ\FKSU]HJOÈGDUNDFKOXEEÚGÈ]DZLHUDÊEïÚG\1LHVSöMQDREVïXJDPRGHOX'20SU]H]SU]HJOÈGDUNLWRQDMZDĝQLHMV]\
SRZöGGODNWöUHJRELEOLRWHNDM4XHU\]\VNDïDWDNZLHONÈSRSXODUQRĂÊ
3RMÚFLDelementy i ZÚ]ï\HOHPHQWöZVÈXĝ\ZDQHZ\PLHQQLH
-HGQDNNLHG\PöZLP\ĝHPRGHO'20G]LDïD]HOHPHQWHPWDNQDSUDZGÚ
PDP\QDP\ĂOLSUDFÚ]ZÚ]ïHPSU]HGVWDZLDMÈF\P dany element.
KROK 2. PRACA Z WYBRANYMI ELEMENTAMI
3RQLĝHMSU]HGVWDZLRQRRJöOQHRPöZLHQLHPHWRGLZïDĂFLZRĂFLSU]H]QDF]RQ\FKGRSUDF\]HOHPHQWDPL
ZSURZDG]RQ\PLZSRGUR]G]LDOHķ'U]HZRPRGHOX'20MHVWPRGHOHPVWURQ\LQWHUQHWRZHMĵ
UZYSKANIE DOSTĘPU DO
WĘZŁÓW TEKSTOWYCH
I ICH UAKTUALNIENIE
li
PRACA Z ZAWARTOŚCIĄ
HTML
li
atrybut
1. :\ELHU]HOHPHQW<li>.
2. 8ĝ\MZïDĂFLZRĂFLğUVW&KLOG
ZFHOXSREUDQLDZÚ]ïD
WHNVWRZHJR
3. 8ĝ\MZïDĂFLZRĂFLMHG\QLHZÚ]ïDWHNVWRZHJR nodeValue)
ZFHOXSREUDQLDWHNVWX
danego elementu.
nodeValue
7DZïDĂFLZRĂÊSR]ZDOD
QDX]\VNDQLHGRVWÚSXGR
]DZDUWRĂFLZÚ]ïDWHNVWRZHJR
LQDMHMXDNWXDOQLHQLH3DWU]
SRGUR]G]LDïķ8]\VNDQLHGRVWÚSX
GRZÚ]ïDWHNVWRZHJR]DSRPRFÈ
ZïDĂFLZRĂFLQRGH9DOXHLMHJR
XDNWXDOQLHQLHĵ
:Ú]HïWHNVWRZ\QLH]DZLHUD
WHNVWXSRFKRG]ÈFHJR]MDNLFKNROZLHNHOHPHQWöZSRWRPQ\FK
atrybut
tekst
tekst
7HNVWZGRZROQ\PHOHPHQFLH
MHVWSU]HFKRZ\ZDQ\ZHZQÈWU]
ZÚ]ïDWHNVWRZHJR$E\X]\VNDÊ
GRVWÚSGRSRND]DQHJRSRZ\ĝHM
ZÚ]ïDWHNVWRZHJR
UZYSKANIE DOSTĘPU
DO WARTOŚCI ATRYBUTU
LUB JEJ UAKTUALNIENIE
:\PLHQLRQDSRQLĝHMZïDĂFLZRĂÊ
XPRĝOLZLDX]\VNDQLHGRVWÚSX
GRHOHPHQWöZSRWRPQ\FK
L]DZDUWRĂFLWHNVWRZHM
innerHTML
3DWU]SRGUR]G]LDïķ8]\VNDQLH
GRVWÚSXGRWHNVWXRUD]NRGX
]QDF]QLNöZ]DSRPRFÈ
ZïDĂFLZRĂFLLQQHU+70/LLFK
XDNWXDOQLHQLHĵ
=NROHLSRQLĝV]DZïDĂFLZRĂÊ
SR]ZDODQDGRVWÚSGRMHG\QLH
]DZDUWRĂFLWHNVWRZHM
textContent
3DWU]SRGUR]G]LDïķ8]\VNDQLH
GRVWÚSXGRWHNVWXLMHJRXDNWXDOQLHQLH]DSRPRFÈZïDĂFLZRĂFL
WH[W&RQWHQW LLQQHU7H[W ĵ
.LONDPHWRGSR]ZDODQDWZRU]HQLHQRZ\FKZÚ]ïöZGRGDZDQLH
ZÚ]ïöZGRGU]HZDDWDNĝH
XVXZDQLHZÚ]ïöZ]GU]HZD
FUHDWH(OHPHQW FUHDWH7H[W1RGH appendChild() /
removeChild()
7RWDN]ZDQHRSHUDFMHQD
PRGHOX'203DWU]SRGUR]G]LDï
ķ'RGDQLHHOHPHQWöZ]DSRPRFÈ
RSHUDFMLQDPRGHOX'20ĵ
3RQLĝHMSU]HGVWDZLRQRNLOND
ZïDĂFLZRĂFLLPHWRGNWöUH
PRĝQDZ\NRU]\VWDÊSRGF]DV
SUDF\]DWU\EXWDPL
FODVV1DPHLG
3R]ZDODQDSREUDQLHOXEXDNWXDOQLHQLHZDUWRĂFLDWU\EXWöZ
FODVV i id3DWU]SRGUR]G]LDï
ķ:Ú]ï\DWU\EXWöZĵ
hasAttribute()
getAttribute()
setAttribute()
removeAttribute()
3LHUZV]D]Z\PLHQLRQ\FK
PHWRGVSUDZG]DF]\ZVND]DQ\
DWU\EXWLVWQLHMH'UXJDSRELHUD
MHJRZDUWRĂÊWU]HFLDXDNWXDOQLD
MHJRZDUWRĂÊ]NROHLF]ZDUWD
SR]ZDODQDMHJRXVXQLÚFLH
3DWU]SRGUR]G]LDïķ:Ú]ï\
DWU\EXWöZĵ
OBIEKTOWY MODEL DOKUMENTU 195
BUFOROWANIE ZAPYTAŃ
MODELU DOM
0HWRG\Z\V]XNXMÈFHHOHPHQW\ZGU]HZLHPRGHOX'20VÈQD]\ZDQH
]DS\WDQLDPLPRGHOX'20.LHG\]GDQ\PHOHPHQWHPPXVLV]SUDFRZDÊ
ZLÚFHMQLĝW\ONRMHGHQUD]UR]VÈGQ\PUR]ZLÈ]DQLHPMHVWXĝ\FLH]PLHQQHM
GRSU]HFKRZ\ZDQLDZ\QLNXGDQHJR]DS\WDQLD
*G\VNU\SWZ\ELHUDHOHPHQW
ZFHOXX]\VNDQLDGRQLHJR
GRVWÚSXOXEXDNWXDOQLHQLDJR
LQWHUSUHWHUPXVLZ\V]XNDÊHOHPHQW OXEHOHPHQW\ ZGU]HZLH
modelu DOM.
3RQLĝV]HSROHFHQLHQDND]XMH
LQWHUSUHWHURZLZ\V]XNDQLH
ZGU]HZLHPRGHOX'20
HOHPHQWXNWöUHJRZDUWRĂFLÈ
atrybutu idMHVWone.
3R]QDOH]LHQLXZÚ]ïDSU]HGVWDZLDMÈFHJRZVND]DQ\HOHPHQW
OXEZVND]DQHHOHPHQW\ PRĝQD
UR]SRF]ÈÊSUDFÚ]VDP\PZÚ]ïHPMHJRZÚ]ïHPQDGU]ÚGQ\P
OXEMHJRGRZROQ\PLZÚ]ïDPL
SRWRPQ\PL
getElementById(’one’);
body
div
h1
h2
ul
VFULSW
li
li
li
li
196 OBIEKTOWY MODEL DOKUMENTU
.LHG\SURJUDPLĂFLUR]PDZLDMÈRSU]HFKRZ\ZDQLXHOHPHQWöZZ]PLHQQ\FK
WDNQDSUDZGÚPDMÈQDP\ĂOLSU]HFKRZ\ZDQLHZ]PLHQQHMSRïRĝHQLD
HOHPHQWX OXEHOHPHQWöZ ZGU]HZLHPRGHOX'20:ïDĂFLZRĂFLLPHWRG\
WHJRZÚ]ïDHOHPHQWXG]LDïDMÈQD]PLHQQHM
-HĝHOLVNU\SWPXVLXĝ\ÊWHJR
VDPHJRHOHPHQWX OXEHOHPHQWöZ FRQDMPQLHMGZDUD]\
WRSRïRĝHQLHHOHPHQWXPRĝQD
SU]HFKRZ\ZDÊZ]PLHQQHM
7\PVDP\PSU]HJOÈGDUND
LQWHUQHWRZDQLHPXVLZLHORNURWQLHSU]HV]XNLZDÊGU]HZD
PRGHOX'20DE\SRQRZQLH
]QDOHěÊWHQVDPHOHPHQW7DNLH
UR]ZLÈ]DQLHMHVWRNUHĂODQLH
mianem buforowania.
3URJUDPLĂFLPöZLÈĝH]PLHQQD
SU]HFKRZXMHodniesienie
GRRELHNWX]QDMGXMÈFHJRVLÚ
ZGU]HZLHPRGHOX'20
3U]HFKRZ\ZDQHMHVWSRïRĝHQLH
ZÚ]ïD var itemOne = getElementById(’one’);
body
div
h1
h2
ul
VFULSW
li
li
li
li
Zmienna itemOneQLHSU]HFKRZXMHHOHPHQWX<li>DOH
odniesienieGRPLHMVFDZNWöU\PWHQZÚ]Hï]QDMGXMH
VLÚZGU]HZLHPRGHOX'20$E\X]\VNDÊGRVWÚSGR
]DZDUWRĂFLWHNVWRZHMHOHPHQWXPRĝQDXĝ\ÊQD]Z\
]PLHQQHMLWHP2QHWH[W&RQWHQW.
OBIEKTOWY MODEL DOKUMENTU
197
UZYSKANIE DOSTĘPU
DO ELEMENTÓW
=DS\WDQLDPRGHOX'20PRJÈ]ZUDFDÊW\ONRMHGHQHOHPHQWOXEWDN]ZDQ\
NodeListF]\OLNROHNFMÚZÚ]ïöZ
3U]HGVWDZLRQHSRQLĝHMGU]HZRPRGHOX'20
SRND]XMHF]ÚĂÊJïöZQÈVWURQ\]OLVWÈU]HF]\GR
NXSLHQLD3RQLHZDĝQDMSLHUZNRQFHQWUXMHP\VLÚ
QDX]\VNDQLXGRVWÚSXGRHOHPHQWöZGLDJUDP
]DZLHUDW\ONRZÚ]ï\HOHPHQWöZ'LDJUDP\QD
NROHMQ\FKVWURQDFKEÚGÈMDVQRZVND]\ZDï\
HOHPHQW\]ZUDFDQHSU]H]]DS\WDQLHPRGHOX'20
3DPLÚWDMZÚ]ï\HOHPHQWöZWRUHSUH]HQWDFMD'20
danego elementu).
&]DVDPL]DFKRG]LSRWU]HEDX]\VNDQLDGRVWÚSX
GRMHGQHJRHOHPHQWX F]\OLIUDJPHQWXVWURQ\
SU]HFKRZ\ZDQHMSU]H]WHQHOHPHQW =NROHL
ZLQQ\FKV\WXDFMDFKNRQLHF]QHMHVWZ\EUDQLH
JUXS\HOHPHQWöZQDSU]\NïDGZV]\VWNLFK<h1>
QDVWURQLHOXEWHĝZV]\VWNLFK<li>ZUDPDFK
ZVND]DQHMOLVW\
body
div
h1
h2
ul
VFULSW
li
li
li
li
GRUPY WĘZŁÓW ELEMENTÓW
NAJKRÓTSZA TRASA
-HĝHOLPHWRGDPRĝH]ZUöFLÊFRQDMPQLHMGZD
ZÚ]ï\WRMHMZDUWRĂFLÈ]ZURWQÈ]DZV]HEÚG]LH
NodeListF]\OLkolekcjaZÚ]ïöZ QDZHWZSU]\SDGNX]QDOH]LHQLDW\ONRMHGQHJRGRSDVRZDQHJR
HOHPHQWX 1DVWÚSQLH]RWU]\PDQHMOLVW\WU]HED
Z\EUDÊHOHPHQW]DSRPRFÈQXPHUXLQGHNVX
R]QDF]DWRĝHQXPHU\UR]SRF]\QDMÈVLÚRG0
SRGREQLHMDNZNDĝGHMWDEOLF\ :\V]XNDQLHQDMV]\EV]HJRVSRVREXX]\VNDQLD
GRVWÚSXGRHOHPHQWXQDVWURQLHSRZRGXMH
ĝHXĝ\WNRZQLNRGELHUDMÈMDNRIXQNFMRQXMÈFÈ
VSUDZQLHLV]\ENRUHDJXMÈFÈQDMHJRG]LDïDQLD
1DMNUöWV]DWUDVD]Z\NOHR]QDF]DDQDOL]ÚPLQLPDOQHMOLF]E\ZÚ]ïöZQDGURG]HGRHOHPHQWX
]NWöU\PVNU\SWPDSUDFRZDÊ1DSU]\NïDG
metoda getElementById()V]\ENR]ZUöFLMHGHQ
HOHPHQW SRQLHZDĝQDVWURQLHLQWHUQHWRZHMQLHSRZLQQ\]QDMGRZDÊVLÚGZDHOHPHQW\RWDNLHMVDPHM
ZDUWRĂFLDWU\EXWXid :\PLHQLRQÈPHWRGÚPRĝQD
MHGQDN]DVWRVRZDÊW\ONRZWHG\JG\HOHPHQWPD
]GHğQLRZDQ\DWU\EXWid.
1DSU]\NïDGNLONDHOHPHQWöZPRĝHPLHÊ
WDNÈVDPÈQD]ZÚ]QDF]QLNDDZLÚF
getElementsByTagName()]DZV]H]ZUöFL
NodeList.
198 OBIEKTOWY MODEL DOKUMENTU
METODY ZWRACAJĄCE JEDEN WĘZEŁ ELEMENTU
getElementById(’id’)
3RELHUDMHGHQHOHPHQWQDSRGVWDZLHZDUWRĂFLMHJRDWU\EXWXid.
$E\HOHPHQWPRĝQDE\ïRZ\EUDÊ]QDF]QLN+70/PXVL]DZLHUDÊ
atrybut id.
0HWRGDSRUD]SLHUZV]\REVïXJLZDQDZSU]HJOÈGDUNDFK,(
2SHUDZV]\VWNLHZHUVMH&KURPH)LUHIR[L6DIDUL
JHW(OHPHQW%\,G RQH
TXHU\6HOHFWRU ijVHOHNWRUFVVij
:\NRU]\VWXMHVNïDGQLÚVHOHNWRUD&66Z\ELHUDMÈFHJRMHGHQHOHPHQW
OXEZLÚFHMHOHPHQWöZ0HWRGDWD]ZUDFDW\ONRSLHUZV]\]GRSDVRZDQ\FKHOHPHQWöZ
0HWRGDSRUD]SLHUZV]\REVïXJLZDQDZSU]HJOÈGDUNDFK,(
)LUHIR[6DIDUL&KURPHL2SHUD
TXHU\6HOHFWRU OLKRW
METODY ZWRACAJĄCE CO NAJMNIEJ JEDEN ELEMENT (W POSTACI NODELIST)
getElementsByClassName(’klasa’)
:\ELHUDHOHPHQWOXEHOHPHQW\QDSRGVWDZLHZDUWRĂFLDWU\EXWX
FODVV$E\HOHPHQWPRĝQDE\ïRZ\EUDÊ]QDF]QLN+70/PXVL
]DZLHUDÊDWU\EXWFODVV']LDïDQLHWHMPHWRG\MHVWV]\EV]HQLĝ
TXHU\6HOHFWRU$OO .
JHW(OHPHQWV%\&ODVV1DPH KRW
0HWRGDSRUD]SLHUZV]\REVïXJLZDQDZSU]HJOÈGDUNDFK,(
)LUHIR[6DIDUL&KURPHL2SHUD .LONDZF]HĂQLHMV]\FK
ZHUVMLSU]HJOÈGDUHNRIHUXMHF]ÚĂFLRZÈOXE]DZLHUDMÈFÈEïÚG\REVïXJÚ
WHMPHWRG\ JHW(OHPHQWV%\7DJ1DPH ijQD]ZD=QDF]QLNDij
:\ELHUDZV]\VWNLHHOHPHQW\QDVWURQLHSRVLDGDMÈFH]QDF]QLN
RSRGDQHMQD]ZLH']LDïDQLHWHMPHWRG\MHVWV]\EV]HQLĝ
TXHU\6HOHFWRU$OO .LONDZF]HĂQLHMV]\FKZHUVMLSU]HJOÈGDUHN
RIHUXMHF]ÚĂFLRZÈOXE]DZLHUDMÈFÈEïÚG\REVïXJÚWHMPHWRG\ 0HWRGDSRUD]SLHUZV]\REVïXJLZDQDZSU]HJOÈGDUNDFK,(
)LUHIR[6DIDUL&KURPHL2SHUD
JHW(OHPHQWV%\7DJ1DPH OL
TXHU\6HOHFWRU$OO ijVHOHNWRUFVVij
8ĝ\ZDVNïDGQLVHOHNWRUD&66ZFHOXZ\EUDQLDMHGQHJRHOHPHQWXOXE
ZLÚNV]HMOLF]E\HOHPHQWöZDQDVWÚSQLH]ZUDFDZV]\VWNLHHOHPHQW\
GRSDVRZDQH
0HWRGDSRUD]SLHUZV]\REVïXJLZDQDZSU]HJOÈGDUNDFK,(
)LUHIR[6DIDUL&KURPHL2SHUD
TXHU\6HOHFWRU$OO OLKRW
OBIEKTOWY MODEL DOKUMENTU 199
METODY WYBIERAJĄCE
POSZCZEGÓLNE ELEMENTY
Metody getElementById() i TXHU\6HOHFWRU SRWUDğÈSU]HV]XNDÊFDï\
GRNXPHQWL]ZUöFLÊSRMHG\QF]HHOHPHQW\2ELHFKDUDNWHU\]XMÈVLÚSRGREQÈ
VNïDGQLÈ
Metoda getElementById()WRQDMV]\EV]\
LQDMHIHNW\ZQLHMV]\VSRVöEX]\VNDQLDGRVWÚSX
GRHOHPHQWXSRQLHZDĝGZDHOHPHQW\QLHPRJÈ
PLHÊWHMVDPHMZDUWRĂFLDWU\EXWXid6NïDGQLD
RPDZLDQHMPHWRG\]RVWDïDSU]HGVWDZLRQDSRQLĝHM
DSU]\NïDGMHMXĝ\FLD]QDMG]LHV]QDVWURQLHSR
SUDZHM
documentRGQRVLVLÚGRRELHNWX
GRFXPHQW=DSRPRFÈRELHNWXGRFXPHQW
]DZV]HPRĝHV]X]\VNDÊGRVWÚSGR
SRV]F]HJöOQ\FKHOHPHQWöZ
Metoda TXHU\6HOHFWRU WRQDMQRZV]\GRGDWHN
GRPRGHOX'20DZLÚFQLHMHVWREVïXJLZDQD
ZVWDUV]\FKZHUVMDFKSU]HJOÈGDUHN&KDUDNWHU\]XMHVLÚGXĝÈHODVW\F]QRĂFLÈSRQLHZDĝMHMSDUDPHWU
MHVWVHOHNWRUHP&662]QDF]DWRPRĝOLZRĂÊXĝ\FLD
RPDZLDQHMPHWRG\DE\WUDIQLHZ\EUDÊZLHOH
HOHPHQWöZ
Metoda getElementById()ZVND]XMH
ĝHFKFHV]Z\V]XNDÊHOHPHQWQDSRGVWDZLHZDUWRĂFLMHJRDWU\EXWXid.
OBIEKT
METODA
GRFXPHQWgetElementById(’one’)
OPERATOR ELEMENTU
SKŁADOWEGO
PARAMETR
1RWDFMD]Xĝ\FLHPNURSNLZVND]XMH
ĝHPHWRGD SRSUDZHM EÚG]LHZ\NRQDQD
ZZÚěOHSRGDQ\PSROHZHMVWURQLH
NURSNL
2PDZLDQHSROHFHQLH]ZUöFLZÚ]HïHOHPHQWXGOD
HOHPHQWXNWöUHJRDWU\EXWidPDZDUWRĂÊone.
%DUG]RF]ÚVWRPRĝQDVSRWNDÊVLÚ]V\WXDFMÈJG\
ZÚ]ï\HOHPHQWöZVÈSU]HFKRZ\ZDQHZ]PLHQQHM
ZFHOXLFKSöěQLHMV]HJRXĝ\FLDZVNU\SFLH ZVSRPQLDQRMXĝRW\PZSRGUR]G]LDOHķ%XIRURZDQLH
]DS\WDñPRGHOX'20ĵ 200 OBIEKTOWY MODEL DOKUMENTU
0HWRGDPXVL]QDÊZDUWRĂÊ
atrybutu idĝÈGDQHJR
HOHPHQWX7RMHVWSDUDPHWU
metody.
:RPDZLDQ\PSROHFHQLXPHWRGDMHVWXĝ\ZDQD
ZRELHNFLHGRFXPHQWDZLÚFZ\V]XNXMHHOHPHQW
QDFDïHMVWURQLH0HWRG\PRGHOX'20PRJÈE\Ê
WDNĝHXĝ\ZDQHZZÚ]ïDFKHOHPHQWöZQDVWURQLH
DE\Z\V]XNDÊSRWRPNöZGDQHJRZÚ]ïD
POBRANIE ELEMENTU NA
PODSTAWIE WARTOŚCI
ATRYBUTU ID
JAVASCRIPT
FMVJHWHOHPHQWE\LGMV
// Wybór elementu i umieszczenie go w zmiennej.
YDUHO GRFXPHQWJHW(OHPHQW%\,G ijRQHij =PLDQDZDUWRĂFLDWU\EXWXFODVV
HOFODVV1DPH ijFRROij
HTML
FMVH[DPSOHMV
<h1 id=”header”>List King</h1>
<h2>$UW\NXï\VSRĝ\ZF]H</h2>
<ul>
OLLG ĵRQHĵFODVV ĵKRWĵ!HP!ĂZLHĝH</em>ğJL</li>
OLLG ĵWZRĵFODVV ĵKRWĵ!RU]HV]NLSLQLRZH</li>
OLLG ĵWKUHHĵFODVV ĵKRWĵ!miód</li>
<li id=”four”>RFHWEDOVDPLF]Q\</li>
</ul>
WYNIK
Metoda getElementById()SR]ZDODQD
Z\EöUZÚ]ïDHOHPHQWXSU]H]SRGDQLH
ZDUWRĂFLMHJRDWU\EXWXid.
2PDZLDQDPHWRGDPDW\ONRMHGHQ
SDUDPHWUMDNLPMHVWZDUWRĂÊDWU\EXWX
idHOHPHQWXNWöU\PD]RVWDÊZ\EUDQ\
3RQLHZDĝZDUWRĂÊMHVWFLÈJLHP
WHNVWRZ\PWRQDOHĝ\MÈXMÈÊZ]QDNL
F\WRZDQLD1LHPD]QDF]HQLDF]\WR
EÚGÈDSRVWURI\F]\FXG]\VïöZZDĝQH
DE\SR]RVWDï\GRSDVRZDQH
:SU]\NïDG]LHSROHZHMVWURQLHSLHUZV]\
ZLHUV]NRGX-DYD6FULSWZ\V]XNXMH
HOHPHQWNWöUHJRZDUWRĂFLÈDWU\EXWX
idMHVWoneLRGQLHVLHQLHGRWHJRZÚ]ïD
SU]HFKRZXMHZ]PLHQQHMRQD]ZLHel.
1DVWÚSQLHNRGZ\NRU]\VWXMHZïDĂFLZRĂÊ
RQD]ZLHFODVV1DPH EÚG]LHRPöZLRQD
ZSRGUR]G]LDOHķ:Ú]ï\DWU\EXWöZĵ GRXDNWXDOQLHQLDZDUWRĂFLDWU\EXWX
FODVVHOHPHQWXZVND]\ZDQHJRSU]H]
]PLHQQÈel:DUWRĂFLÈDWU\EXWX
MHVWFRROFRSRZRGXMHZ\ZRïDQLH
QRZHMUHJXï\&66RGSRZLHG]LDOQHM
]DXVWDZLHQLHNRORUXWïDHOHPHQWX
=ZUöÊXZDJÚQDVSRVöEXĝ\FLDZïDĂFLZRĂFLFODVV1DPHZ]PLHQQHMSU]HFKRZXMÈFHMRGQLHVLHQLHGRHOHPHQWX
:\QLNSRND]XMHSU]\NïDGSRW\PMDNVNU\SWXDNWXDOQLï
SLHUZV]\HOHPHQWQDOLĂFLH3U]\NïDGZVWDQLHSRF]ÈWNRZ\P
SU]HGXUXFKRPLHQLHPVNU\SWX ]RVWDïSRND]DQ\QDU\VXQNX
]SRGUR]G]LDïXķ8]\VNDQLHGRVWÚSXGRVWURQ\+70/LMHM
PRG\ğNDFMDĵ
2EVïXJDZSU]HJOÈGDUNDFKLQWHUQHWRZ\FKĽWRMHGQD]QDMVWDUV]\FK
LQDMOHSLHMREVïXJLZDQ\FKPHWRG
SR]ZDODMÈF\FKQDX]\VNDQLHGRVWÚSX
do elementu.
OBIEKTOWY MODEL DOKUMENTU 201
NODELIST — ZAPYTANIA
MODELU DOM ZWRACAJĄCE
WIELE ELEMENTÓW
Kiedy metoda DOM PRĝH]ZUöFLÊZLHOHHOHPHQWöZ DQLHW\ONRMHGHQ ZDUWRĂFLÈ]ZURWQÈMHVWNodeList QDZHWZSU]\SDGNXGRSDVRZDQLD
W\ONRMHGQHJRHOHPHQWX NodeListWRNROHNFMDZÚ]ïöZHOHPHQWöZ.DĝG\
ZÚ]HïRWU]\PXMHQXPHULQGHNVX SRGREQLHMDN
ZSU]\SDGNXWDEOLF\QXPHU\UR]SRF]\QDMÈVLÚ
RG]HUD .ROHMQRĂÊXPLHV]F]DQLDZÚ]ïöZHOHPHQWöZ
w NodeListMHVWGRNïDGQLHWDNDVDPDZMDNLHMWH
ZÚ]ï\SRMDZLDMÈVLÚQDVWURQLH+70/
*G\]DS\WDQLHPRGHOX'20]ZUöFLNodeList
PRĝQDSRGMÈÊZ\PLHQLRQHSRQLĝHMNURNL
•
• 8ĝ\FLHSÚWOLLSU]HWZRU]HQLHZV]\VWNLFK
:\EöUMHGQHJRHOHPHQWX]NodeList.
HOHPHQWöZZNodeListDE\QDNDĝG\P]QLFK
Z\NRQDÊWHVDPHRNUHĂORQHSROHFHQLD
NodeListSU]\SRPLQDWDEOLFÚLMHVWSRQXPHURZDQD
MDNWDEOLFDDOHWDNQDSUDZGÚQLÈQLHMHVW7RMHVW
W\SRELHNWXRNUHĂODQ\PLDQHPkolekcji.
3RGREQLHMDNZSU]\SDGNXLQQ\FKRELHNWöZ
NodeListPDZïDĂFLZRĂFLPHWRG\PLÚG]\LQQ\PL
• ZïDĂFLZRĂÊlengthNWöUDSRGDMHOLF]EÚ
HOHPHQWöZ]QDMGXMÈF\FKVLÚZGDQHMNROHNFML
NodeList
• PHWRGÚitem()NWöUHMZDUWRĂFLÈ]ZURWQÈMHVW
RNUHĂORQ\HOHPHQW]NROHNFML3DUDPHWUHP
PHWRG\MHVW SRGDQ\ZQDZLDVLH QXPHU
LQGHNVXLQWHUHVXMÈFHJR&LÚHOHPHQWX-HGQDN
]QDF]QLHF]ÚĂFLHMVWRVRZDQHUR]ZLÈ]DQLHSROHJD
QDXĝ\FLXVNïDGQLWDEOLF\ QDZLDVNZDGUDWRZ\ GRSREUDQLDHOHPHQWX]NodeListMDN]RVWDQLH
SRND]DQHZSRGUR]G]LDOHķ0HWRGDLWHP ĵ
KOLEKCJA NODELIST STATYCZNA I TYPU LIVE
=GDU]DMÈVLÚV\WXDFMHJG\ZLHORNURWQLHWU]HED
SUDFRZDÊ]W\PVDP\P]HVWDZHPHOHPHQWöZ
'ODWHJRWHĝNROHNFMÚNodeListPRĝQDSU]HFKRZ\ZDÊZ]PLHQQHMLSRQRZQLHMÈZ\NRU]\VWDÊ
]DPLDVW]QöZZ\V]XNLZDÊWHVDPHHOHPHQW\ :SU]\SDGNXkolekcji NodeList typu liveJG\
VNU\SWXDNWXDOQLDVWURQÚNROHNFMDUöZQLHĝEÚG]LH
XDNWXDOQLRQD0HWRG\RQD]ZDFKUR]SRF]\QDMÈF\FKVLÚRGJHW(OHPHQWV%\]ZUDFDMÈNROHNFMH
NodeListW\SXOLYH7HJRURG]DMXNROHNFMH]Z\NOH
PRĝQDZ\JHQHURZDÊV]\EFLHMQLĝVWDW\F]QH
NROHNFMHNodeList.
202 OBIEKTOWY MODEL DOKUMENTU
:SU]\SDGNXstatycznej kolekcji NodeListJG\
VNU\SWXDNWXDOQLVWURQÚNROHNFMDSR]RVWDMHEH]
]PLDQDZLÚFQLHRG]ZLHUFLHGOD]PLDQZSURZDG]RQ\FKSU]H]VNU\SW
1RZHPHWRG\RQD]ZDFKUR]SRF]\QDMÈF\FKVLÚ
od TXHU\6HOHFWRU Xĝ\ZDMÈVNïDGQLVHOHNWRUD
&66 ]ZUDFDMÈVWDW\F]QHNROHNFMHNodeList. Tego
URG]DMXNROHNFMHRG]ZLHUFLHGODMÈVWDQGRNXPHQWX
]FKZLOLZ\NRQ\ZDQLD]DS\WDQLD-HĝHOLVNU\SW
]PLHQL]DZDUWRĂÊVWURQ\NROHNFMDNodeList nie
EÚG]LHXDNWXDOQLRQDZFHOXRG]ZLHUFLHGOHQLD
ZVSRPQLDQ\FK]PLDQ
3RQLĝHMSU]HGVWDZLRQRF]WHU\UöĝQH]DS\WDQLDPRGHOX'20]ZUDFDMÈFH
NROHNFMHNodeList'ODNDĝGHJR]DS\WDQLDSU]HGVWDZLRQR]ZUöFRQH
ZNROHNFMLHOHPHQW\RUD]QXPHU\LFKLQGHNVöZ
getElementsByTagName(’h1’)
0LPRĝHWR]DS\WDQLH]ZUDFD
W\ONRMHGHQHOHPHQWZDUWRĂÊ
]ZURWQDLWDNMHVWZSRVWDFL
NROHNFMLNodeListSRQLHZDĝ
PRĝH]ZUöFLÊZLÚFHMQLĝMHGHQ
element.
NUMER INDEKSU
0
ELEMENT
<h1>
getElementsByTagName(’li’)
7DPHWRGD]ZUDFDF]WHU\
HOHPHQW\FRRGSRZLDGDOLF]ELH
HOHPHQWöZ<li>]QDMGXMÈF\FK
VLÚQDVWURQLH3RMDZLDMÈVLÚRQH
ZWDNLHMVDPHMNROHMQRĂFLMDNQD
VWURQLH+70/
NUMER INDEKSU
ELEMENT
OLLG ĵRQHĵFODVV ĵKRWĵ!
OLLG ĵWZRĵFODVV ĵKRWĵ!
OLLG ĵWKUHHĵFODVV ĵKRWĵ!
3
<li id=”four”>
getElementsByClassName(’hot’)
=ZUöFRQDSU]H]WÚPHWRGÚ
NROHNFMDNodeList]DZLHUDW\ONR
WU]\HOHPHQW\<li>SRQLHZDĝ
Z\V]XNDQH]RVWDï\MHG\QLHWH
HOHPHQW\NWöU\FKZDUWRĂFLÈ
atrybutu FODVVMHVWhot.
NUMER INDEKSU
ELEMENT
OLLG ĵRQHĵFODVV ĵKRWĵ!
OLLG ĵWZRĵFODVV ĵKRWĵ!
OLLG ĵWKUHHĵFODVV ĵKRWĵ!
TXHU\6HOHFWRU$OO ijOL>LG@ij
0HWRGDWD]ZUDFDF]WHU\
HOHPHQW\FRRGSRZLDGDOLF]ELH
HOHPHQWöZ<li>]QDMGXMÈF\FK
VLÚQDVWURQLHLSRVLDGDMÈF\FK
atrybut id MHJRZDUWRĂÊQLHPD
WXWDMĝDGQHJR]QDF]HQLD NUMER INDEKSU
ELEMENT
OLLG ĵRQHĵFODVV ĵKRWĵ!
OLLG ĵWZRĵFODVV ĵKRWĵ!
OLLG ĵWKUHHĵFODVV ĵKRWĵ!
3
<li id=”four”>
OBIEKTOWY MODEL DOKUMENTU 203
POBRANIE ELEMENTU
Z KOLEKCJI NODELIST
0DP\GZDVSRVRE\Z\ELHUDQLDHOHPHQWXZNROHNFMLNodeList3LHUZV]\
WRXĝ\FLHPHWRG\item()QDWRPLDVWGUXJLRSLHUDVLÚQDVNïDGQLWDEOLF\
2EDVSRVRE\Z\PDJDMÈXĝ\FLDQXPHUXLQGHNVXZ\ELHUDQHJRHOHPHQWX
METODA ITEM()
.ROHNFMDNodeListRIHUXMH
PHWRGÚRQD]ZLHitem()NWöUHM
ZDUWRĂFLÈ]ZURWQÈMHVWSRMHG\QF]\ZÚ]Hï]NROHNFML
-DNRSDUDPHWUPHWRG\SRGDMHV]
ZQDZLDVLH QXPHULQGHNVX
LQWHUHVXMÈFHJR&LÚHOHPHQWX
:\NRQDQLHNRGXZV\WXDFMLJG\
QLH]RVWDï\Z\EUDQHĝDGQHHOHPHQW\R]QDF]DPDUQRWUDZVWZR
]DVREöZ'ODWHJRWHĝSU]HG
Z\NRQDQLHPNRGXSURJUDPLĂFL
EDUG]RF]ÚVWRVSUDZG]DMÈF]\
NROHNFMDNodeList]DZLHUD
SU]\QDMPQLHMMHGHQHOHPHQW
:W\PFHOXQDOHĝ\Z\NRU]\VWDÊ
ZïDĂFLZRĂÊlengthNROHNFML
NWöUDSRGDMHOLF]EÚHOHPHQWöZ
]QDMGXMÈF\FKVLÚZNodeList.
:SRQLĝV]\PIUDJPHQFLH
NRGXZ\NRU]\VWDQRSROHFHQLH
warunkowe if. Warunek dla
SROHFHQLDifVSUDZG]DF]\
ZDUWRĂÊZïDĂFLZRĂFLlength
MHVWZLÚNV]DQLĝ]HUR-HĝHOLWDN
Z\NRQDQH]RVWDQÈSROHFHQLD
]GHğQLRZDQHZEORNXNRQVWUXNFMLif-HĝHOLQLHG]LDïDQLH
VNU\SWXMHVWNRQW\QXRZDQH
SRF]ÈZV]\RGSLHUZV]HJRZLHUV]DSR]DP\NDMÈF\PQDZLDVLH
klamrowym.
YDUHOHPHQWV GRFXPHQWJHW(OHPHQWV%\&ODVV1DPH ijKRWij
LI HOHPHQWVOHQJWK! {
YDUğUVW,WHP HOHPHQWVLWHP }
:\EöUHOHPHQWöZNWöUHPDMÈ
atrybut FODVVRZDUWRĂFLhot.
(OHPHQW\WH]RVWDMÈXPLHV]F]RQHZNROHNFMLNodeList
SU]HFKRZ\ZDQHMSU]H]]PLHQQÈ
elements.
8ĝ\FLHZïDĂFLZRĂFLlength
ZFHOXVSUDZG]HQLDOLF]E\
]QDOH]LRQ\FKHOHPHQWöZ-HĝHOL
]QDOH]LRQ\MHVWFRQDMPQLHM
MHGHQHOHPHQW]RVWDQLHZ\NRQDQ\NRGZEORNXSROHFHQLDif.
3LHUZV]\HOHPHQWNROHNFML
NodeListMHVWSU]HFKRZ\ZDQ\
Z]PLHQQHMRQD]ZLHğUVW,WHP.
8ĝ\WRF\IU\0SRQLHZDĝ
QXPHU\LQGHNVöZ]DF]\QDMÈVLÚ
RG]HUD 204 OBIEKTOWY MODEL DOKUMENTU
=DPLDVWPHWRG\item()SUHIHURZDQDMHVWVNïDGQLDWDEOLF\SRQLHZDĝG]LDïD
V]\EFLHM3U]HGZ\EUDQLHPZÚ]ïD]NROHNFMLNodeListQDOHĝ\VSUDZG]LÊ
F]\NROHNFMD]DZLHUDMDNLHNROZLHNZÚ]ï\-HĝHOLF]ÚVWREÚG]LHV]Xĝ\ZDïGDQHM
NROHNFMLNodeListSU]HFKRZXMMÈZ]PLHQQHM
SKŁADNIA TABLICY
'RVWÚSGRSRV]F]HJöOQ\FK
ZÚ]ïöZPRĝQDX]\VNDÊ
NRU]\VWDMÈF]HVNïDGQL]Xĝ\FLHPQDZLDVXNZDGUDWRZHJR
F]\OLSRGREQHMGRVWRVRZDQHM
SRGF]DVSRELHUDQLDHOHPHQWöZ
]WDEOLF\
3RGREQLHMDNZSU]\SDGNX
ZV]\VWNLFK]DS\WDñPRGHOX
'20MHĂOL]DFKRG]LSRWU]HED
NLONDNURWQHJRX]\VNDQLDGRVWÚSX
GRWHMVDPHMNROHNFMLNodeList
Z\QLN]DS\WDQLDQDOHĝ\
SU]HFKRZ\ZDÊZ]PLHQQHM
:QDZLDVLHNZDGUDWRZ\P
SRQD]ZLHNROHNFMLNodeList
SRGDMHV]QXPHULQGHNVX
LQWHUHVXMÈFHJR&LÚHOHPHQWX
:SU]\NïDGDFKSU]HGVWDZLRQ\FKQDREXVWURQDFKNROHNFMD
NodeListMHVWSU]HFKRZ\ZDQD
Z]PLHQQHMRQD]ZLHelements.
-HĝHOLWZRU]\V]]PLHQQÈ
SU]H]QDF]RQÈGR
SU]HFKRZ\ZDQLDNROHNFML
NodeList MDNSRQLĝHM DOHQLH
]RVWDQÈGRSDVRZDQHĝDGQH
HOHPHQW\WR]PLHQQDEÚG]LH
SXVWÈNROHNFMÈNodeList.
*G\VSUDZG]LP\MHMZLHONRĂÊ
]DSRPRFÈZïDĂFLZRĂFL
lengthZDUWRĂFLÈ]ZURWQÈ
EÚG]LH0SRQLHZDĝZNROHNFML
QLH]QDMGXMÈVLÚĝDGQHHOHPHQW\
YDUHOHPHQWV GRFXPHQWJHW(OHPHQWV%\&ODVV1DPH ijKRWij LI HOHPHQWVOHQJWK! {
YDUğUVW,WHP HOHPHQWV>@
}
8WZRU]HQLHNROHNFMLNodeList
]DZLHUDMÈFHMHOHPHQW\NWöU\FK
atrybut FODVVPDZDUWRĂÊhot.
7HHOHPHQW\]RVWDMÈXPLHV]F]RQHZNROHNFMLNodeList
SU]HFKRZ\ZDQHMSU]H]]PLHQQÈ
elements.
-HĝHOLOLF]EDHOHPHQWöZ
Z\QRVLMHGHQOXEZLÚFHM
]RVWDQLHZ\NRQDQ\NRGZEORNX
SROHFHQLDif.
3REUDQLHSLHUZV]HJRHOHPHQWX
NROHNFMLNodeList 8ĝ\WRF\IU\
0SRQLHZDĝQXPHU\LQGHNVöZ
]DF]\QDMÈVLÚRG]HUD OBIEKTOWY MODEL DOKUMENTU 205
POBRANIE ELEMENTU NA
PODSTAWIE WARTOŚCI
ATRYBUTU CLASS
Metoda
getElementsByClassName()
SR]ZDODQDZ\EöUW\FKHOHPHQWöZNWöU\FKDWU\EXWFODVV ma
ZVND]DQÈZDUWRĂÊ
0HWRGDPDW\ONRMHGHQSDUDPHWU
ĽQD]ZÚNODV\XMÚWÈZ]QDNL
F\WRZDQLDLSRGDQÈZQDZLDVLH
WXĝSRQD]ZLHPHWRG\
FMVJHWHOHPHQWVE\FODVVQDPHMV
3RQLHZDĝZLHOHHOHPHQWöZ
QDVWURQLHPRĝHPLHÊWÚVDPÈ
ZDUWRĂÊDWU\EXWXFODVVZDUWRĂFLÈ]ZURWQÈPHWRG\]DZV]HMHVW
NROHNFMDNodeList.
JAVASCRIPT
YDUHOHPHQWV GRFXPHQWJHW(OHPHQWV%\&ODVV1DPH ijKRWij // Wyszukanie elementów o klasie hot.
LI HOHPHQWVOHQJWK! ^-HĝHOL]RVWDQÈ]QDOH]LRQHFRQDMPQLHMWU]\
YDUHO HOHPHQWV>@// Z kolekcji NodeList wybierz trzeci.
HOFODVV1DPH ijFRROij=PLDQDZDUWRĂFLDWU\EXWXFODVVZ\EUDQHJRHOHPHQWX
}
1DSRF]ÈWNXSU]\NïDGXNRGZ\V]XNXMHHOHPHQW\
NWöU\FKDWU\EXWFODVV zawieraZDUWRĂÊhot.
:DUWRĂÊDWU\EXWXFODVVPRĝH]DZLHUDÊZLHOH
QD]ZNODVUR]G]LHORQ\FKVSDFMDPL :\QLN
Z\NRQDQLDWHJR]DS\WDQLD'20MHVWSU]HFKRZ\ZDQ\Z]PLHQQHMRQD]ZLHelementsSRQLHZDĝ
]RVWDQLHXĝ\W\ZLHOHUD]\
3ROHFHQLHifVSUDZG]DF]\]DS\WDQLH]QDOD]ïRFR
QDMPQLHMWU]\HOHPHQW\-HĝHOLWDNZ\EUDQ\]RVWDMH
WU]HFLNWöU\MHVWXPLHV]F]DQ\Z]PLHQQHMel.
1DVWÚSQLHDWU\EXWFODVVWHJRHOHPHQWXMHVW
XDNWXDOQLDQ\ĽWXWDMRWU]\PXMHZDUWRĂÊFRRO.
7R]NROHLSRZRGXMHGRGDQLHQRZHJRVW\OX&66
NWöU\]PLHQLDZ\JOÈGZ\ĂZLHWODQHJRHOHPHQWX 2EVïXJDZSU]HJOÈGDUNDFK,()LUHIR[
&KURPH2SHUD6DIDUL
206 OBIEKTOWY MODEL DOKUMENTU
WYNIK
POBRANIE ELEMENTU
NA PODSTAWIE NAZWY
ZNACZNIKA
Metoda
getElementsByTagName()
SR]ZDODQDZ\EöUHOHPHQWöZ
QDSRGVWDZLHQD]Z\]QDF]QLND
1D]ZDMHVWSRGDZDQDMDNR
SDUDPHWUDZLÚFQDOHĝ\MÈXMÈÊ
Z]QDNLF\WRZDQLDLXPLHĂFLÊ
ZQDZLDVLH
=ZUöÊXZDJÚQDWRĝHQLH
Xĝ\ZDVLÚQDZLDVöZRVWU\FK
ZQD]ZLH]QDF]QLNöZ+70/
ZQDZLDVLHVÈSRGDZDQH
MHG\QLHOLWHU\ FMVJHWHOHPHQWVE\WDJQDPHMV
JAVASCRIPT
YDUHOHPHQWV GRFXPHQWJHW(OHPHQWV%\7DJ1DPH ijOLij // Wyszukanie elementów <li>.
LI HOHPHQWVOHQJWK! ^-HĝHOL]QDOH]LRQ\EÚG]LHFRQDMPQLHMMHGHQHOHPHQW
YDUHO HOHPHQWV>@:\ELHUDP\SLHUZV]\]Z\NRU]\VWDQLHPVNïDGQLWDEOLF\
HOFODVV1DPH ijFRROij=PLDQDZDUWRĂFLDWU\EXWXFODVVZ\EUDQHJRHOHPHQWX
}
WYNIK
:RPDZLDQ\PSU]\NïDG]LHZ\V]XNLZDQHVÈ
ZV]\VWNLHHOHPHQW\<li>ZGRNXPHQFLH:\QLN
RSHUDFMLMHVWSU]HFKRZ\ZDQ\Z]PLHQQHMRQD]ZLH
elementsSRQLHZDĝEÚG]LHZ\NRU]\VWDQ\ZLHOH
UD]\
3ROHFHQLHifVSUDZG]DF]\]RVWDï\]QDOH]LRQH
MDNLHNROZLHNHOHPHQW\<li>3RGREQLHMDN
ZSU]\SDGNXGRZROQHJRHOHPHQWXNWöU\PRĝH
]ZUöFLÊNROHNFMDNodeListVSUDZG]HQLHLVWQLHQLD
RGSRZLHGQLFKHOHPHQWöZSU]HSURZDG]DP\SU]HG
SUöEÈLFKZ\NRU]\VWDQLD
-HĝHOLGRSDVRZDQHEÚGÈMDNLHNROZLHNHOHPHQW\
WRZ\ELHUDP\SLHUZV]\DQDVWÚSQLH]PLHQLDP\
ZDUWRĂÊMHJRDWU\EXWXFODVV:SURZDG]RQD
]PLDQDGRW\F]\NRORUXWïDHOHPHQWX
2EVïXJDZSU]HJOÈGDUNDFKEDUG]RGREUDPHWRG\
WHMPRĝQDXĝ\ZDÊZGRZROQ\PVNU\SFLH
OBIEKTOWY MODEL DOKUMENTU 207
POBRANIE ELEMENTU NA
PODSTAWIE SELEKTORA CSS
Metoda TXHU\6HOHFWRU
]ZUDFDSLHUZV]\ZÚ]Hï
HOHPHQWXNWöU\]RVWDïGRSDVRZDQ\GRVHOHNWRUD&66
=NROHLZDUWRĂFLÈ]ZURWQÈ
metody querySeletorAll()MHVW
NROHNFMDNodeListZV]\VWNLFK
GRSDVRZDñ
2ELHPHWRG\SRELHUDMÈVHOHNWRU
&66MDNRLFKMHG\Q\SDUDPHWU
3RGF]DVZ\ERUXHOHPHQWöZ
VNïDGQLDVHOHNWRUD&66
FKDUDNWHU\]XMHVLÚZLÚNV]È
HODVW\F]QRĂFLÈLGRNïDGQRĂFLÈ
QLĝSRSURVWXSRGDQLHQD]Z\
NODV\OXE]QDF]QLND6NïDGQLD
WDSRZLQQDE\Ê]QDQDSURJUDPLVWRPDSOLNDFMLLQWHUQHWRZ\FK
NWöU]\VÈSU]\]Z\F]DMHQLGR
Z\ELHUDQLDHOHPHQWöZ]D
SRPRFÈ&66
'ZLHRPDZLDQHWXWDMPHWRG\
]RVWDï\ZSURZDG]RQHSU]H]
FMVTXHU\VHOHFWRUMV
JAVASCRIPT
// Metoda querySelector() zwraca jedynie pierwsze dopasowanie.
YDUHO GRFXPHQWTXHU\6HOHFWRU ijOLKRWij HOFODVV1DPH ijFRROij
0HWRGDTXHU\6HOHFWRU$OO ]ZUDFDNROHNFMÚ1RGH/LVW
'UXJLGRSDVRZDQ\HOHPHQW WRMHVWWU]HFLHOHPHQWQDOLĂFLH ]RVWDMHZ\EUDQ\
L]PRG\ğNRZDQ\
YDUHOV GRFXPHQWTXHU\6HOHFWRU$OO ijOLKRWij HOV>@FODVV1DPH ijFRROij
SURGXFHQWöZSU]HJOÈGDUHNLQWHUQHWRZ\FK
SRQLHZDĝZLHOXSURJUDPLVWöZGRïÈF]DïRQD
VWURQLHVNU\SW\WDNLHMDNELEOLRWHNDM4XHU\DE\
PLHÊPRĝOLZRĂÊZ\ERUXHOHPHQWöZ]DSRPRFÈ
VHOHNWRUöZ&66 :LÚFHMLQIRUPDFMLRELEOLRWHFH
M4XHU\]QDMG]LHV]ZUR]G]LDOH WYNIK
-HĝHOLVSRMU]\V]QDRVWDWQLZLHUV]NRGXWR]DXZDĝ\V]ĝHGRZ\ERUXGUXJLHJRHOHPHQWX]NROHNFML
NodeList]RVWDïDXĝ\WDVNïDGQLDWDEHOLSRPLPR
IDNWXSU]HFKRZ\ZDQLDNROHNFMLZ]PLHQQHM
2EVïXJDZSU]HJOÈGDUNDFKZDGÈREXRPDZLDQ\FKWXWDMPHWRGMHVWWRĝHVÈREVïXJLZDQH
MHG\QLHZQDMQRZV]\FKZHUVMDFKSU]HJOÈGDUHN
ZQDZLDVDFKSRGDQRSLHUZV]HZ\GDQLD 208 OBIEKTOWY MODEL DOKUMENTU
,( Z\GDQDZPDUFX )LUHIR[ Z\GDQDZF]HUZFX &KURPH Z\GDQDZHZU]HĂQLX 2SHUD Z\GDQDZHZU]HĂQLX 6DIDUL Z\GDQDZOLVWRSDG]LH 6NU\SW-DYD6FULSWZ\NRQXMH
MHGQRUD]RZRMHGHQZLHUV]
NRGXDSROHFHQLDZSï\ZDMÈ
QD]DZDUWRĂÊZ\ĂZLHWODQÈQD
VWURQLHSRGF]DVLFKSU]HWZDU]DQLDSU]H]LQWHUSUHWHU
-HĝHOL]DS\WDQLHPRGHOX'20
MHVWZ\NRQ\ZDQHZWUDNFLH
ZF]\W\ZDQLDVWURQ\L]RVWDQLH
RQRXĝ\WHSöěQLHMQDWHMVWURQLH
WR]DNDĝG\PUD]HPPRĝH
]ZUöFLÊUöĝQHHOHPHQW\
3RQLĝHMSRND]DQRMDN
SU]\NïDGSROHZHMVWURQLH
(query-selector.js PRĝH
]PLHQLÊGU]HZRPRGHOX'20
ZWUDNFLHZ\NRQ\ZDQLDVNU\SWX
1. PODCZAS WCZYTYWANIA STRONY
HTML
FTXHU\VHOHFWRUKWPO
<ul>
OLLG ĵRQHĵFODVV ĵKRWĵ!
<em>ĂZLHĝH</em> ğJL</li>
OLLG ĵWZRĵFODVV ĵKRWĵ!RU]HV]NLSLQLRZH</li>
OLLG ĵWKUHHĵFODVV ĵKRWĵ!miód</li>
<li id=”four”>RFHWEDOVDPLF]Q\</li>
</ul>
1. 7DNZ\JOÈGDVWURQDSRMHMZF]\W\ZDQLX0DP\WU]\HOHPHQW\<li>
NWöU\FKZDUWRĂFLÈDWU\EXWXFODVVMHVW
hot. Metoda TXHU\6HOHFWRU wyV]XNXMHSLHUZV]\HOHPHQWDQDVWÚSQLH
XDNWXDOQLDZDUWRĂÊMHJRDWU\EXWXFODVV
]hot na FRRO2SHUDFMDSRZRGXMH
UöZQLHĝXDNWXDOQLHQLHSU]HFKRZ\ZDQHJRZSDPLÚFLGU]HZDPRGHOX
'20'ODWHJRWHĝSRZ\NRQDQLXNRGX
W\ONRGUXJLLWU]HFLHOHPHQWEÚGÈPLDï\
atrybut FODVVRZDUWRĂFLhot.
2. PO PIERWSZYM ZESTAWIE POLECEŃ
HTML
FTXHU\VHOHFWRUKWPO
<ul>
OLLG ĵRQHĵFODVV ĵFRRO”>
<em>ĂZLHĝH</em> ğJL</li>
OLLG ĵWZRĵFODVV ĵKRWĵ!RU]HV]NLSLQLRZH</li>
OLLG ĵWKUHHĵFODVV ĵKRWĵ!miód</li>
<li id=”four”>RFHWEDOVDPLF]Q\</li>
</ul>
2. 3RZ\NRQDQLXGUXJLHJRVHOHNWRUD
SR]RVWDMÈW\ONRGZDHOHPHQW\<li>
NWöUHEÚGÈPLDï\DWU\EXWFODVV
RZDUWRĂFLhot SDWU]SROHZHMVWURQLH LGODWHJR]RVWDQÈZ\EUDQHMHG\QLH
GZD7\PUD]HPVNïDGQLDWDEOLF\MHVW
Xĝ\ZDQDGRSUDF\]GUXJLP]GRSDVRZDQ\FKHOHPHQWöZ WRMHVWWU]HFL
HOHPHQWQDOLĂFLH 3RQRZQLHZDUWRĂÊ
atrybutu FODVV]RVWDMH]PLHQLRQD
]hot na FRRO.
3. PO DRUGIM ZESTAWIE POLECEŃ
HTML
FTXHU\VHOHFWRUKWPO
<ul>
OLLG ĵRQHĵFODVV ĵFRRO”>
<em>ĂZLHĝH</em> ğJL</li>
OLLG ĵWZRĵFODVV ĵKRWĵ!RU]HV]NLSLQLRZH</li>
OLLG ĵWKUHHĵFODVV ĵFRRO”>miód</li>
<li id=”four”>RFHWEDOVDPLF]Q\</li>
</ul>
3. .LHG\GUXJLVHOHNWRUZ\NRQDVZRMH
]DGDQLHGU]HZRPRGHOX'20]DZLHUD
W\ONRMHGHQHOHPHQW<li>NWöU\PD
atrybut FODVVRZDUWRĂFLhot.DĝG\
NRGZ\V]XNXMÈF\HOHPHQW\<li>
NWöUHPDMÈDWU\EXWFODVVRZDUWRĂFL
hot]QDMG]LHW\ONRWHQMHGHQHOHPHQW
-HGQDNZ\V]XNDQLHHOHPHQWöZ<li>
NWöUHPDMÈDWU\EXWFODVVRZDUWRĂFL
FRROVSRZRGXMHGRSDVRZDQLHdwóch
ZÚ]ïöZHOHPHQWöZ
OBIEKTOWY MODEL DOKUMENTU 209
POWTÓRZENIE OPERACJI DLA
CAŁEJ KOLEKCJI NODELIST
.LHG\PDV]NROHNFMÚNodeListPRĝHV]Z\NRU]\VWDÊSÚWOÚZFHOXLWHUDFML
SU]H]ZV]\VWNLHZÚ]ï\DQDVWÚSQLH]DVWRVRZDÊWHVDPHSROHFHQLDGOD
NDĝGHJR]QLFK
*G\ZRPDZLDQ\PSU]\NïDG]LH
MHVWMXĝXWZRU]RQDNROHNFMD
NodeList]DSRPRFÈSÚWOLfor
SU]HSURZDG]DQDMHVWLWHUDFMD
SU]H]ZV]\VWNLHHOHPHQW\
NROHNFML
:V]\VWNLHSROHFHQLD]QDMGXMÈFHVLÚZHZQÈWU]QDZLDVX
NODPURZHJREORNXSÚWOLfor
EÚGÈZ\NRQDQHGODNDĝGHJR
HOHPHQWXNROHNFMLNodeList.
$E\ZVND]DÊDNWXDOQLH
SU]HWZDU]DQ\HOHPHQWNROHNFML
NodeListZDUWRĂÊOLF]QLND
iMHVWXĝ\ZDQDZVNïDGQL
ZVW\OXWDEOLF\
var hotItems GRFXPHQWTXHU\6HOHFWRU$OO ijOLKRWij for (var i = 0; i < KRW,WHPVOHQJWK; i++) {
KRW,WHPV>L@FODVV1DPH ijFRROij
}
210
Zmienna hotItems]DZLHUD
NROHNFMÚNodeList8PLHV]F]RQRZQLHMZV]\VWNLHHOHPHQW\
OLVW\NWöU\FKDWU\EXWFODVV ma
ZDUWRĂÊhot(OHPHQW\]RVWDï\
Z\EUDQH]DSRPRFÈZ\ZRïDQLD
metody TXHU\6HOHFWRU$OO .
:DUWRĂÊZïDĂFLZRĂFLlength
NROHNFMLNodeListZVND]XMH
OLF]EÚHOHPHQWöZ]QDMGXMÈF\FK
VLÚZNROHNFML7DOLF]EDRNUHĂOD
OLF]EÚLWHUDFMLZ\NRQ\ZDQ\FK
SU]H]SÚWOÚ
OBIEKTOWY MODEL DOKUMENTU
6NïDGQLDWDEOLF\MHVWXĝ\ZDQD
GRZVND]DQLDDNWXDOQLH
SU]HWZDU]DQHJRHOHPHQWXNROHNFMLNodeListKRW,WHPV>L@.
:QDZLDVLHNZDGUDWRZ\P
]QDMGXMHVLÚ]PLHQQDOLF]QLND
ITERACJA PRZEZ KOLEKCJĘ
NODELIST
-HĝHOLWHQVDPNRGFKFHV]
]DVWRVRZDÊGODZLHOXHOHPHQWöZWRLWHUDFMDSU]H]NROHNFMÚ
NodeListMHVWWHFKQLNÈREDUG]R
GXĝ\FKPRĝOLZRĂFLDFK
2EHMPXMHRQDRNUHĂOHQLHOLF]E\
HOHPHQWöZZNROHNFMLNodeList
DQDVWÚSQLH]GHğQLRZDQLH
OLF]QLNDZWDNLVSRVöEDE\
LWHUDFMDREMÚïDMHZV]\VWNLHSR
kolei.
:WUDNFLHNDĝGHMLWHUDFMLSÚWOL
VNU\SWVSUDZG]DF]\ZDUWRĂÊ
OLF]QLNDMHVWPQLHMV]DQLĝOLF]ED
HOHPHQWöZNROHNFMLNodeList.
FMVQRGHOLVWMV
JAVASCRIPT
YDUKRW,WHPV GRFXPHQWTXHU\6HOHFWRU$OO ijOLKRWij // Kolekcja NodeList jest przechowywana w tablicy.
LI KRW,WHPVOHQJWK! ^
-HĝHOLNROHNFMD]DZLHUDMDNLHNROZLHNHOHPHQW\
IRU YDUL LKRW,WHPVOHQJWKL ^
// Iteracja przez wszystkie elementy kolekcji.
KRW,WHPV>L@FODVV1DPH ijFRROij
=PLDQDZDUWRĂFLDWU\EXWXFODVVZ\EUDQHJRHOHPHQWX
}
}
WYNIK
:RPDZLDQ\PSU]\NïDG]LH
NROHNFMDNodeList]RVWDïDZ\JHQHURZDQD]DSRPRFÈPHWRG\
TXHU\6HOHFWRU$OO . Kod
Z\V]XNXMHZV]\VWNLHHOHPHQW\
<li>NWöUHPDMÈDWU\EXWFODVV
RZDUWRĂFLhot.
.ROHNFMDNodeListMHVWSU]HFKRZ\ZDQDZ]PLHQQHMRQD]ZLH
hotItemsDOLF]EDHOHPHQWöZ
ZNROHNFMLMHVWXVWDODQD]D
SRPRFÈZïDĂFLZRĂFLlength.
'ODNDĝGHJRHOHPHQWXZNROHNFMLNodeListZDUWRĂÊDWU\EXWX
FODVV]RVWDMH]PLHQLRQDQD
FRRO.
OBIEKTOWY MODEL DOKUMENTU
211
ITERACJA PRZEZ KOLEKCJĘ
NODELIST — KROK PO KROKU
czy 0 < 10?
POCZĄTEK
1DSRF]ÈWNXSU]\NïDGXPDP\OLVWÚ
WU]HFKHOHPHQWöZNWöU\FKDWU\EXW
FODVVPDZDUWRĂÊhot'ODWHJRWHĝ
ZDUWRĂÊKRW,WHPVOHQJWKZ\QRVL3.
212
OBIEKTOWY MODEL DOKUMENTU
i=0
j 1 do 0
do d a
i=1
1DSRF]ÈWNXZDUWRĂÊOLF]QLND
Z\QRVL0'ODWHJRWHĝSRELHUDQ\
MHVWSLHUZV]\HOHPHQWNROHNFML
NodeList RQXPHU]HLQGHNVX
0 DZDUWRĂÊMHJRDWU\EXWX
FODVV]RVWDMH]PLHQLRQDQD
FRRO.
for (var i = 0; LKRW,WHPVOHQJWK i++) {
KRW,WHPV>L@FODVV1DPH ijFRROij
}
cz y 1 < 3 ?
i=1
cz y 2 < 3 ?
1d
dodaj
i=2
.LHG\OLF]QLNEÚG]LHPLDï
ZDUWRĂÊ1SREUDQ\EÚG]LH
GUXJLHOHPHQWNROHNFMLNodeList
RQXPHU]HLQGHNVX1 DZDUWRĂÊMHJRDWU\EXWXFODVV
]RVWDQLH]PLHQLRQDQDFRRO.
.LHG\OLF]QLNEÚG]LHPLDïZDUWRĂÊ2SREUDQ\EÚG]LHWU]HFL
HOHPHQWNROHNFMLNodeList
RQXPHU]HLQGHNVX2 DZDUWRĂÊMHJRDWU\EXWXFODVV
]RVWDQLH]PLHQLRQDQDFRRO.
o2
cz y 3 < 3 ?
i=3
KONIEC
.LHG\OLF]QLNEÚG]LHPLDï
ZDUWRĂÊ3ZDUXQHNQLHEÚG]LH
GïXĝHMSU]\MPRZDïZDUWRĂFL
true LQDVWÈSL]DNRñF]HQLH
G]LDïDQLDSÚWOL6NU\SWNRQW\QXXMHG]LDïDQLHRGSLHUZV]HJR
ZLHUV]DNRGXSRSÚWOL
OBIEKTOWY MODEL DOKUMENTU
213
PORUSZANIE SIĘ
PO MODELU DOM
.LHG\PDV]ZÚ]HïHOHPHQWXPRĝHV]Z\EUDÊLQQ\SRZLÈ]DQ\
]QLPHOHPHQWZ\NRU]\VWXMÈFZW\PFHOXSLÚÊZïDĂFLZRĂFL
1D]\ZDVLÚWRSRUXV]DQLHPVLÚSRPRGHOX'20
parentNode
previousSibling
nextSibling
ğUVW&KLOG
lastChild
7DZïDĂFLZRĂÊZ\V]XNXMH
ZÚ]HïHOHPHQWXGODHOHPHQWX
QDGU]ÚGQHJRZNRG]LH+70/
7HZïDĂFLZRĂFLSRZRGXMÈ
Z\V]XNDQLHRGSRZLHGQLR
SRSU]HGQLHJRLQDVWÚSQHJR
ZÚ]ïDUöZQRU]ÚGQHJR
7HZïDĂFLZRĂFLSRZRGXMÈ
Z\V]XNDQLHRGSRZLHGQLR
SLHUZV]HJRLRVWDWQLHJRHOHPHQWXSRWRPQHJRGODHOHPHQWX
ELHĝÈFHJR
(1)-HĝHOLDQDOL]Ú]DF]QLHP\
RGSLHUZV]HJRHOHPHQWX<li>
WRMHJRZÚ]ïHPQDGU]ÚGQ\P
EÚG]LHHOHPHQW<ul>.
-HĝHOLUR]SRF]QLHP\DQDOL]Ú
RGSLHUZV]HJRHOHPHQWX<li>
to nie mamy SRSU]HGQLHJR
HOHPHQWXUöZQRU]ÚGQHJR.
-HGQDNQDVWÚSQ\PHOHPHQWHP
UöZQRU]ÚGQ\P (2)EÚG]LHZÚ]Hï
SU]HGVWDZLDMÈF\GUXJLHOHPHQW
<li>.
ul
1
li
li
-HĝHOLDQDOL]Ú]DF]QLHP\RG
elementu <ul>WRpierwszym
elementem potomnymMHVW
ZÚ]HïSU]HGVWDZLDMÈF\SLHUZV]\
element <li>QDWRPLDVW
ostatnim elementem potomnym
(3)EÚG]LHRVWDWQLHOHPHQW<li>.
3
li
li
2
6ÈWRZïDĂFLZRĂFLZÚ]ïDELHĝÈFHJR QLHPHWRG\SU]H]QDF]RQH
do wyboru elementu) i dlatego
WHĝQDLFKNRñFXQLH]QDMGXMH
VLÚQDZLDV
214
OBIEKTOWY MODEL DOKUMENTU
-HĝHOLXĝ\ZDV]Z\PLHQLRQ\FK
ZïDĂFLZRĂFLDOHQLHPDV]
SRSU]HGQLHJR QDVWÚSQHJR HOHPHQWXUöZQRU]ÚGQHJROXE
SLHUZV]HJR RVWDWQLHJR HOHPHQWXSRWRPQHJRWRZDUWRĂFLÈ
ZïDĂFLZRĂFLEÚG]LHnull.
:\PLHQLRQHZïDĂFLZRĂFLVÈ
W\ONRGRRGF]\WXQLHPRJÈ
E\ÊXĝ\ZDQHZFHOXZ\EUDQLD
QRZHJRZÚ]ïDDWDNĝHQLH
PRJÈXDNWXDOQLDÊHOHPHQWX
QDGU]ÚGQHJRUöZQRU]ÚGQHJR
OXESRWRPQHJR
WĘZŁY ZNAKÓW ODSTĘPU
3RUXV]DQLHVLÚSRPRGHOX'20PRĝHE\ÊWUXGQHSRQLHZDĝSHZQHSU]HJOÈGDUNLLQWHUQHWRZHGRGDMÈZÚ]ï\WHNVWRZHZPLHMVFX]QDNöZRGVWÚSXSRMDZLDMÈF\FKVLÚPLÚG]\HOHPHQWDPL
3R]D,QWHUQHW([SORUHUHP
ZLÚNV]RĂÊSU]HJOÈGDUHN
WUDNWXMH]QDNLRGVWÚSXPLÚG]\
HOHPHQWDPL QDSU]\NïDGVSDFMÚ
OXE]QDNQRZHJRZLHUV]D MDNR
ZÚ]ï\WHNVWRZH'ODWHJRWHĝ
Z\PLHQLRQHSRQLĝHMZïDĂFLZRĂFL
]ZUDFDMÈUöĝQHHOHPHQW\
Z]DOHĝQRĂFLRGSU]HJOÈGDUNL
previousSibling
nextSibling
ğUVW&KLOG
lastChild
1DSRQLĝV]\PGLDJUDPLHPRĝHV]]REDF]\ÊZV]\VWNLHZÚ]ï\
]QDNöZRGVWÚSXGRGDQHZGU]HZLHPRGHOX'20ZSU]\NïDG]LH
OLVW\U]HF]\GRNXSLHQLD.DĝG\
ZÚ]HïMHVWV\PEROL]RZDQ\
SU]H]]LHORQ\SURVWRNÈW,VWQLHMH
PRĝOLZRĂÊXVXQLÚFLDZV]\VWNLFK
ZÚ]ïöZRGVWÚSX]HVWURQ\SU]HG
MHMSU]HND]DQLHPSU]HJOÈGDUFH
6NXWNLHPEÚG]LH]PQLHMV]HQLH
VWURQ\LMHMV]\EV]HSREUDQLH
RUD]ZF]\WDQLH-HGQDNR]QDF]D
WRWDNĝHĝH]DZDUWRĂÊVWURQ\
VWDQLHVLÚ]QDF]QLHWUXGQLHMV]D
GRRGF]\WDQLD
,QQ\PUR]ZLÈ]DQLHPWHJR
SUREOHPXPRĝHE\ÊXQLNQLÚFLH
Xĝ\FLDZ\PLHQLRQ\FKZF]HĂQLHM
ZïDĂFLZRĂFLPRGHOX'20
-HGQ\P]QDMSRSXODUQLHMV]\FK
UR]ZLÈ]DñWHJRURG]DMX
SUREOHPöZMHVWXĝ\FLHELEOLRWHNL
-DYD6FULSWWDNLHMMDNM4XHU\
7DNLHQLHVSöMQRĂFLZG]LDïDQLX
SU]HJOÈGDUHNE\ï\F]\QQLNLHP
NWöU\PLDïRJURPQ\ZSï\ZQD
]\VNDQLHSRSXODUQRĂFLSU]H]
M4XHU\
ul
li
li
li
li
,QWHUQHW([SORUHU SRZ\ĝHM LJQRUXMH]QDNLRGVWÚSXLQLHWZRU]\GRGDWNRZ\FKZÚ]ïöZWHNVWRZ\FK
ul
li
li
li
li
&KURPH)LUHIR[6DIDULL2SHUDWZRU]ÈZÚ]ï\WHNVWRZH
GOD]QDNöZRGVWÚSX VSDFMHL]QDNLQRZHJRZLHUV]D OBIEKTOWY MODEL DOKUMENTU
215
POPRZEDNI I NASTĘPNY
ELEMENT RÓWNORZĘDNY
'RZLHG]LDïHĂVLÚMXĝĝH
RPDZLDQHZF]HĂQLHMZïDĂFLZRĂFLPRJÈ]ZUöFLÊUöĝQH
Z\QLNLZ]DOHĝQRĂFLRGXĝ\WHM
SU]HJOÈGDUNL-HGQDNPRĝQD
]QLFKEH]SLHF]QLHNRU]\VWDÊ
JG\PLÚG]\HOHPHQWDPLQLH
Z\VWÚSXMÈ]QDNLRGVWÚSX
:RPDZLDQ\PWXWDMSU]\NïDG]LH
ZV]\VWNLH]QDNLRGVWÚSX
PLÚG]\HOHPHQWDPL+70/
]RVWDï\XVXQLÚWH:FHOX
SRND]DQLDG]LDïDQLDZïDĂFLZRĂFL
GUXJLHOHPHQWOLVW\]RVWDQLH
Z\EUDQ\]DSRPRFÈPHWRG\
getElementById().
=SR]LRPXZ\EUDQHJR
ZÚ]ïDHOHPHQWXZïDĂFLZRĂÊ
previousSibling]ZUöFL
SLHUZV]\HOHPHQW<li>
QDWRPLDVWnextSibling]ZUöFL
WU]HFLHOHPHQW<li>.
FVLEOLQJKWPO
HTML
XO!OLLG ĵRQHĵFODVV ĵKRWĵ!HP!ĂZLHĝH</em> ğJLOL!OLLG ĵWZRĵ
FODVV ĵKRWĵ!RU]HV]NLSLQLRZHOL!OLLG ĵWKUHHĵFODVV ĵKRWĵ!miód</li><li
id=”four”>RFHWEDOVDPLF]Q\</li></ul>
FMVVLEOLQJMV
JAVASCRIPT
:\EöUSXQNWXSRF]ÈWNRZHJRLRGV]XNDQLHMHJRHOHPHQWöZUöZQRU]ÚGQ\FK
YDUVWDUW,WHP GRFXPHQWJHW(OHPHQW%\,G ijWZRij YDUSUHY,WHP VWDUW,WHPSUHYLRXV6LEOLQJ
YDUQH[W,WHP VWDUW,WHPQH[W6LEOLQJ
=PLDQDZDUWRĂFLDWU\EXWXFODVVHOHPHQWöZUöZQRU]ÚGQ\FK
SUHY,WHPFODVV1DPH ijFRPSOHWHij
QH[W,WHPFODVV1DPH ijFRROij
ul
li
li
WYNIK
li
li
Początek
Poprzedni element równorzędny
Następny element równorzędny
=ZUöÊXZDJÚMDNZÚ]ï\UöZQRU]ÚGQHVÈSU]HFKRZ\ZDQHZQRZ\FK]PLHQQ\FK2]QDF]DWR
ĝHZïDĂFLZRĂFLWDNLHMDNFODVV1DPHPRJÈE\Ê
Z\NRU]\VWDQHSU]H]ZÚ]HïĽZ\VWDUF]\]DVWRVRZDÊQRWDFMÚ]Xĝ\FLHPNURSNLF]\OLXPLHĂFLÊ
NURSNÚPLÚG]\QD]ZÈ]PLHQQHMLZïDĂFLZRĂFLÈ
216
OBIEKTOWY MODEL DOKUMENTU
PIERWSZY I OSTATNI
ELEMENT POTOMNY
Omawiane na kilku poprzednich
VWURQDFKZïDĂFLZRĂFLPRJÈ
]ZUöFLÊQLHVSöMQHZ\QLNLJG\
PLÚG]\HOHPHQWDPL]QDMGXMÈ
VLÚ]QDNLRGVWÚSX:SRQLĝV]\P
SU]\NïDG]LH]DVWRVRZDQRQLHFR
RGPLHQQHUR]ZLÈ]DQLHZNRG]LH
+70/ĽQDZLDV]DP\NDMÈF\
]QDF]QLNMHVWXPLHV]F]DQ\RERN
QDZLDVXRWZLHUDMÈFHJRNROHMQ\
HOHPHQWFRZSRUöZQDQLX
]SRSU]HGQLPSU]\NïDGHP
]DSHZQLD]QDF]QLHZLÚNV]È
F]\WHOQRĂÊ1DSRF]ÈWNX
Z\ZRï\ZDQDMHVWPHWRGD
getElementsByTagName()
ZFHOXZ\EUDQLDHOHPHQWX
<ul>QDVWURQLH=SR]LRPX
Z\PLHQLRQHJRHOHPHQWX
ZïDĂFLZRĂÊğUVW&KLOG zwróci
SLHUZV]\HOHPHQWOL!
natomiast ODVW&KLOG zwróci
ostatni element OL!
FFKLOGKWPO
HTML
<ul
!OLLG
!OLLG
!OLLG
!OLLG
></ul>
ĵRQHĵFODVV ĵKRWĵ!HP!ĂZLHĝH</em> ğJLOL
ĵWZRĵFODVV ĵKRWĵ!RU]HV]NLSLQLRZHOL
ĵWKUHHĵFODVV ĵKRWĵ!PLöGOL
ĵIRXUĵ!RFHWEDOVDPLF]Q\OL
FMVFKLOGMV
JAVASCRIPT
:\EöUSXQNWXSRF]ÈWNRZHJRLRGV]XNDQLHMHJRHOHPHQWöZSRWRPQ\FK
YDUVWDUW,WHP GRFXPHQWJHW(OHPHQWV%\7DJ1DPH ijXOij >@
YDUğUVW,WHP VWDUW,WHPğUVW&KLOG
YDUODVW,WHP VWDUW,WHPODVW&KLOG
=PLDQDZDUWRĂFLDWU\EXWXFODVVHOHPHQWöZSRWRPQ\FK
ğUVW,WHPVHW$WWULEXWH ijFODVVijijFRPSOHWHij ODVW,WHPVHW$WWULEXWH ijFODVVijijFRROij ul
WYNIK
OL
OL
OL
OL
Początek
Pierwszy element potomny
Ostatni element potomny
OBIEKTOWY MODEL DOKUMENTU
217
JAK POBRAĆ I UAKTUALNIĆ
ZAWARTOŚĆ ELEMENTU?
-DNGRWÈGNRQFHQWURZDOLĂP\VLÚZUR]G]LDOHQDZ\V]XNLZDQLXHOHPHQWöZ
ZGU]HZLHPRGHOX'203R]RVWDïDF]ÚĂÊUR]G]LDïXEÚG]LHZLÚFSRĂZLÚFRQD
Z\MDĂQLHQLXMDNPRĝQDX]\VNDÊGRVWÚSGR]DZDUWRĂFLHOHPHQWXLXDNWXDOQLDÊ
MÈ=DVWRVRZDQDWHFKQLNDEÚG]LH]DOHĝDïDRG]DZDUWRĂFLHOHPHQWX
6SöMU]QDSU]\NïDGRZHHOHPHQW\<li>SRSUDZHM
VWURQLH.DĝG\]QLFKGRGDMHSHZLHQNRG]QDF]QLNöZ]DWHPIUDJPHQWGU]HZDPRGHOX'20GOD
NDĝGHJRHOHPHQWXOLVW\MHVWLQQ\
<li id=”one”>ğJL</li>
li
• 3LHUZV]\ QDWHMVWURQLH ]DZLHUDW\ONRWHNVW
• 'UXJLLWU]HFL QDVWURQLHSRSUDZHM ]DZLHUDMÈ
atrybut
tekst:
figi
SRïÈF]HQLHWHNVWXLHOHPHQWX<em>.
0RĝHV]]REDF]\ÊĝHGRGDQLHF]HJRĂWDNSURVWHJR
MDNHOHPHQW<em>SRZRGXMH]QDF]QÈ]PLDQÚ
VWUXNWXU\GU]HZDPRGHOX'207R]NROHLPD
ZSï\ZQDVSRVöESUDF\]HOHPHQWHPOLVW\.LHG\
HOHPHQW]DZLHUDSRïÈF]HQLHWHNVWXLLQQ\FK
HOHPHQWöZWRSUDZGRSRGRELHñVWZRĝHEÚG]LHP\
SUDFRZDÊUDF]HM]MHJRHOHPHQWHPQDGU]ÚGQ\P
QLĝ]SRV]F]HJöOQ\PLZÚ]ïDPLNDĝGHJRSRWRPND
MHVW]QDF]QLHZLÚNV]H
3RND]DQ\SRZ\ĝHMHOHPHQW<li>PD
$E\SUDFRZDÊ]]DZDUWRĂFLÈHOHPHQWöZPRĝQD
WĘZŁY TEKSTOWE
• 3U]HMĂÊGRZÚ]ïöZWHNVWRZ\FK6SUDZG]DVLÚ
*G\SU]HMG]LHV]]HOHPHQWXGRMHJRZÚ]ïDWHNVWRZHJR]DXZDĝ\V]ĝHMHVWWDPMHGQDZïDĂFLZRĂÊ
]NWöUHMEÚG]LHV]NRU]\VWDÊGRĂÊF]ÚVWR
•
218
WRQDMOHSLHMJG\HOHPHQW]DZLHUDMHG\QLHWHNVW
EH]ĝDGQ\FKLQQ\FKHOHPHQWöZ
3UDFD]HOHPHQWHPQDGU]ÚGQ\P W ten
VSRVöEPRĝQDX]\VNDÊGRVWÚSGRMHJRZÚ]ïöZ
WHNVWRZ\FKLHOHPHQWöZSRWRPQ\FK6SUDZG]D
VLÚWRQDMOHSLHMJG\HOHPHQWSRVLDGDZÚ]ï\
WHNVWRZHLUöZQRU]ÚGQHHOHPHQW\SRWRPQH
OBIEKTOWY MODEL DOKUMENTU
• -HGHQZÚ]HïpotomnySU]HFKRZXMÈF\VïRZRğJL
•
Z\ĂZLHWODQHQDOLĂFLH
:Ú]HïDWU\EXWXSU]HFKRZXMÈF\DWU\EXWid.
WŁAŚCIWOŚĆ
OPIS
nodeValue
8]\VNDQLHGRVWÚSXGRWHNVWX]ZÚ]ïD SDWU]SRGUR]G]LDïķ8]\VNDQLH
GRVWÚSXGRZÚ]ïDWHNVWRZHJR
LMHJRXDNWXDOQLHQLH]DSRPRFÈ
ZïDĂFLZRĂFLQRGH9DOXHĵ <li id=”one”><em>ĂZLHĝH</em> ğJL</li>
<li id=”one”>V]HĂÊ <em>ĂZLHĝ\FK</em> ğJ</li>
li
li
atrybut
em
tekst:
figi
em
atrybut
tekst:
figi
tekst:
sześć
tekst:
świeże
tekst:
świeże
'RGDQ\]RVWDïHOHPHQW<em>VWDïVLÚWHUD]
SLHUZV]\PHOHPHQWHPSRWRPQ\P
• :Ú]HïHOHPHQWX<em>SRVLDGDZïDVQ\potomny
•
ZÚ]HïWHNVWRZ\]DZLHUDMÈF\VïRZRĂZLHĝH.
3RF]ÈWNRZ\ZÚ]HïWHNVWRZ\MHVWWHUD]równoU]ÚGQ\]ZÚ]ïHPSU]HGVWDZLDMÈF\PHOHPHQW
<em>.
3RGRGDQLXWHNVWXSU]HGHOHPHQWHP<em>
• Pierwszy element potomny elementu <li>MHVW
•
•
ZÚ]ïHPWHNVWRZ\P]DZLHUDMÈF\PVïRZRV]HĂÊ.
3RVLDGDHOHPHQWUöZQRU]ÚGQ\NWöU\MHVW
ZÚ]ïHPHOHPHQWXGOD<em>. Z kolei ten
ZÚ]HïHOHPHQWX<em>SRVLDGDpotomnyZÚ]Hï
WHNVWRZ\]DZLHUDMÈF\VïRZRĂZLHĝH.
1DNRñFXLVWQLHMHZÚ]HïWHNVWRZ\]DZLHUDMÈF\
VïRZRğJ-HVWWRHOHPHQWUöZQRU]ÚGQ\]DUöZQR
GODZÚ]ïDWHNVWRZHJRVïRZDV]HĂÊMDNLZÚ]ïD
elementu <em>.
ELEMENT NADRZĘDNY
*G\SUDFXMHV]]ZÚ]ïHPHOHPHQWX ]DPLDVWMHJR
ZÚ]ïHPWHNVWRZ\P HOHPHQWWHQPRĝH]DZLHUDÊ
NRG]QDF]QLNöZ0RĝHV]]GHF\GRZDÊF]\UöZQLHĝ
SR]DWHNVWHPFKFHV]SREUDÊOXEXDNWXDOQLÊWHQ
NRG]QDF]QLNöZ
WŁAŚCIWOŚĆ
OPIS
innerHTML
3REUDQLHLXDNWXDOQLHQLHWHNVWX
RUD]NRGX]QDF]QLNöZ SDWU]
SRGUR]G]LDïķ8]\VNDQLHGRVWÚSX
GR LXDNWXDOQLHQLH WHNVWXRUD]
NRGX]QDF]QLNöZ]DSRPRFÈ
ZïDĂFLZRĂFLLQQHU+70/ĵ textContent
3REUDQLHLXDNWXDOQLHQLHMHG\QLH
WHNVWX SDWU]SRGUR]G]LDïķ8]\VNDQLHGRVWÚSXGRWHNVWXLMHJRXDNWXDOQLHQLH]DSRPRFÈZïDĂFLZRĂFL
WH[W&RQWHQW LLQQHU7H[W ĵ innerText
3REUDQLHLXDNWXDOQLHQLHMHG\QLH
WHNVWX SDWU]SRGUR]G]LDïķ8]\VNDQLHGRVWÚSXGRWHNVWXLMHJRXDNWXDOQLHQLH]DSRPRFÈZïDĂFLZRĂFL
WH[W&RQWHQW LLQQHU7H[W ĵ .LHG\Z\PLHQLRQHZïDĂFLZRĂFLVÈXĝ\ZDQHGR
XDNWXDOQLHQLD]DZDUWRĂFLHOHPHQWXQRZD]DZDUWRĂÊEÚG]LHQDGSLV\ZDÊFDïÈ]DZDUWRĂÊHOHPHQWX
]DUöZQRWHNVWMDNLNRG]QDF]QLNöZ 1DSU]\NïDGMHĝHOLGRZROQD]W\FKZïDĂFLZRĂFL
]RVWDQLHXĝ\WDGRXDNWXDOQLHQLD]DZDUWRĂFL
elementu <body>WRXDNWXDOQLRQD]RVWDQLHFDïD
VWURQDLQWHUQHWRZD
OBIEKTOWY MODEL DOKUMENTU
219
UZYSKANIE DOSTĘPU
DO WĘZŁA TEKSTOWEGO
ZA POMOCĄ WŁAŚCIWOŚCI
NODEVALUE I JEGO
UAKTUALNIENIE
*G\Z\ELHU]HP\ZÚ]HïWHNVWRZ\EÚG]LHP\PRJOLSREUDÊMHJR]DZDUWRĂÊ
L]PRG\ğNRZDÊMÈ]DSRPRFÈZïDĂFLZRĂFLnodeValue.
<li id=”one”><em>ĂZLHĝH</em> ğJL</li>
li
em
atrybut
tekst:
figi
text:
świeże
.RGSU]HGVWDZLRQ\SRQLĝHMSRND]XMHX]\VNDQLHGRVWÚSXGRGUXJLHJRZÚ]ïDWHNVWRZHJR
:DUWRĂFLÈ]ZURWQÈEÚG]LHVïRZRğJL.
GRFXPHQWJHW(OHPHQW%\,G ijRQHij ğUVW&KLOGQH[W6LEOLQJnodeValue;
1
$E\Xĝ\ÊZïDĂFLZRĂFLnodeValueWU]HED]QDMGRZDÊVLÚZZÚěOHWHNVWRZ\PDQLHZHOHPHQFLH
]DZLHUDMÈF\PWHNVW
:RPDZLDQ\PSU]\NïDG]LHSRND]DQRĝHSU]HMĂFLH
]ZÚ]ïDHOHPHQWXGRZÚ]ïDWHNVWRZHJRPRĝHE\Ê
VNRPSOLNRZDQH
-HĝHOLQLHZLHV]F]\ZÚ]HïHOHPHQWXEÚG]LH
GRVWÚSQ\ZUD]]ZÚ]ïDPLWHNVWRZ\PLWRQDMOHSLHM
SUDFRZDÊ]HOHPHQWHPQDGU]ÚGQ\P
220 OBIEKTOWY MODEL DOKUMENTU
2
3
4
1. :Ú]HïHOHPHQWX<li>]RVWDMHZ\EUDQ\]D
SRPRFÈPHWRG\getElementById().
2. Pierwszym elementem potomnym <li>MHVW
element <em>.
3. :Ú]HïWHNVWRZ\MHVWQDVWÚSQ\PHOHPHQWHP
UöZQRU]ÚGQ\P tego elementu <em>.
4. 0DV]ZÚ]HïWHNVWRZ\LGODWHJRGRVWÚSGR
MHJR]DZDUWRĂFLPRĝHV]X]\VNDÊ]DSRPRFÈ
ZïDĂFLZRĂFLnodeValue.
UZYSKANIE DOSTĘPU
DO WĘZŁA TEKSTOWEGO
I JEGO ZMIANA
$E\PöFSUDFRZDÊ]WHNVWHP
ZHOHPHQFLHQDMSLHUZWU]HED
X]\VNDÊGRVWÚSGRZÚ]ïD
HOHPHQWXDQDVWÚSQLHGRMHJR
ZÚ]ïDWHNVWRZHJR
JAVASCRIPT
:Ú]HïWHNVWRZ\PDZïDĂFLZRĂÊ
RQD]ZLHnodeValueNWöUD
]DZLHUDWHNVW]QDMGXMÈF\VLÚ
ZGDQ\PZÚěOHWHNVWRZ\P
,VWQLHMHUöZQLHĝPRĝOLZRĂÊ
Xĝ\FLDZïDĂFLZRĂFLnodeValue
GRXDNWXDOQLHQLD]DZDUWRĂFL
ZÚ]ïDWHNVWRZHJR
FMVQRGHYDOXHMV
YDULWHP7ZR GRFXPHQWJHW(OHPHQW%\,G ijWZRij // Pobranie drugiego elementu listy.
YDUHO7H[W LWHP7ZRğUVW&KLOGQRGH9DOXH3REUDQLHMHJR]DZDUWRĂFLWHNVWRZHM
HO7H[W HO7H[WUHSODFH ijRU]HV]NLSLQLRZHijijNDSXVWDij // Zmiana orzeszki piniowe na kapusta.
LWHP7ZRğUVW&KLOGQRGH9DOXH HO7H[W// Uaktualnienie elementu listy.
WYNIK
:RPDZLDQ\PSU]\NïDG]LHSRELHUDP\WHNVW
GUXJLHJRHOHPHQWXOLVW\L]PLHQLDP\JR
]ZDUWRĂFLRU]HV]NLSLQLRZH na kapusta.
:LHUV]SLHUZV]\VNU\SWXSRELHUDGUXJL
HOHPHQWOLVW\U]HF]\GRNXSLHQLDLSU]HFKRZXMHJRZ]PLHQQHMRQD]ZLHLWHP7ZR.
1DVWÚSQLH]DZDUWRĂÊWHNVWRZÈHOHPHQWX
XPLHV]F]DP\Z]PLHQQHMelText.
:LHUV]WU]HFLVNU\SWX]DVWÚSXMHZ\UDĝHQLH
RU]HV]NLSLQLRZHVïRZHPkapusta
Xĝ\ZDMÈFGRWHJRPHWRG\UHSODFH obiektu
String.
2VWDWQLZLHUV]VNU\SWXZ\NRU]\VWXMHZïDĂFLZRĂÊnodeValueZFHOXXDNWXDOQLHQLDZÚ]ïD
WHNVWRZHJRQRZÈZDUWRĂFLÈ
OBIEKTOWY MODEL DOKUMENTU 221
UZYSKANIE DOSTĘPU DO
TEKSTU I JEGO UAKTUALNIENIE
ZA POMOCĄ WŁAŚCIWOŚCI
TEXTCONTENT (I INNERTEXT)
:ïDĂFLZRĂÊtextContentSR]ZDODQDSRELHUDQLHOXEXDNWXDOQLDQLHWHNVWX
]QDMGXMÈFHJRVLÚZHOHPHQFLH RUD]MHJRHOHPHQWDFKSRWRPQ\FK textContent
:FHOXSREUDQLDWHNVWX]HOHPHQWöZ<li> w omaZLDQ\PSU]\NïDG]LH L]LJQRURZDQLDFDïHJRNRGX
]QDF]QLNöZZHOHPHQFLH PRĝQDXĝ\ÊZïDĂFLZRĂFL
textContentHOHPHQWXQDGU]ÚGQHJR]DZLHUDMÈFHgo dane elementy <li>:RPDZLDQ\PSU]\NïDG]LHZDUWRĂFLÈ]ZURWQÈEÚG]LHĂZLHĝHğJL.
:\PLHQLRQÈZïDĂFLZRĂÊPRĝQDZ\NRU]\VWDÊWDNĝH
GRXDNWXDOQLHQLD]DZDUWRĂFLHOHPHQWX:öZF]DV
]DVWÈSLRQDEÚG]LHFDïD]DZDUWRĂÊHOHPHQWX
ïÈF]QLH]NRGHP]QDF]QLNöZ
<li id=”one”><em>ĂZLHĝH</em> ğJL</li>
li
em
atrybut
tekst:
figi
text:
świeże
GRFXPHQWJHW(OHPHQW%\,G ijRQHij textContent;
-HG\Q\SUREOHP]ZLÈ]DQ\]ZïDĂFLZRĂFLÈ
textContentSROHJDQDW\PĝHQLHMHVWRQD
REVïXJLZDQDZSU]HJOÈGDUFH,QWHUQHW([SORUHU
ZZHUVMDFKZF]HĂQLHMV]\FKQLĝ :V]\VWNLH
SR]RVWDïHSU]HJOÈGDUNLREVïXJXMÈWÚZïDĂFLZRĂÊ innerText
0RĝHV]VSRWNDÊVLÚ]ZïDĂFLZRĂFLÈRQD]ZLHinnerTextDOHRJöOQLHU]HF]ELRUÈFSRZLQLHQHĂXQLNDÊMHM
VWRVRZDQLD]WU]HFKZDĝQ\FKSRZRGöZZ\PLHQLRQ\FKSRQLĝHM
OBSŁUGA
:SUDZG]LHZLÚNV]RĂÊSURGXFHQWöZSU]HJOÈGDUHN]DDGDSWRZDïRWÚZïDĂFLZRĂÊDOH)LUHIR[
MHMQLHREVïXJXMHSRQLHZDĝ
innerTextQLHMHVWF]ÚĂFLÈ
ĝDGQHJRVWDQGDUGX
222 OBIEKTOWY MODEL DOKUMENTU
PRZESTRZEGANIE REGUŁ
CSS
:ïDĂFLZRĂÊQLHSR]ZDODQD
Z\ĂZLHWOHQLH]DZDUWRĂFLNWöUD
]RVWDïDXNU\WD]DSRPRFÈ&66
-HĂOLQDSU]\NïDGLVWQLHMHUHJXïD
&66XNU\ZDMÈFDHOHPHQW\
<em>WRZïDĂFLZRĂÊinnerText
]ZUöFLMHG\QLHVïRZRğJL.
WYDAJNOŚĆ
3RQLHZDĝZïDĂFLZRĂÊ
innerTextXZ]JOÚGQLDXVWDZLHQLDGRW\F]ÈFHXNïDGXRUD]
ZLGRF]QRĂFLHOHPHQWXWRSRELHUDQLH]DZDUWRĂFLPRĝHRGE\ZDÊ
VLÚZROQLHMQLĝ]DSRPRFÈ
ZïDĂFLZRĂFLtextContent.
UZYSKANIE DOSTĘPU
JEDYNIE DO
$E\SRND]DÊUöĝQLFÚPLÚG]\
VSRVREHPG]LDïDQLDZïDĂFLZRĂFL
textContent i innerText
ZSRQLĝV]\PSU]\NïDG]LH]DVWRVRZDQRUHJXïÚ&66XNU\ZDMÈFÈ
]DZDUWRĂÊHOHPHQWX<em>.
1DSRF]ÈWNXVNU\SWSRELHUD
]DZDUWRĂÊSLHUZV]HJRHOHPHQWX
OLVW\Xĝ\ZDMÈFGRWHJRREX
ZïDĂFLZRĂFLtextContent
i innerText1DVWÚSQLHSREUDQH
ZDUWRĂFLVÈZ\ĂZLHWODQH]DOLVWÈ
1DNRñFXZDUWRĂÊSLHUZV]HJRHOHPHQWXOLVW\]RVWDMH
XDNWXDOQLRQDGRSRVWDFL
FKOHEQD]DNZDVLH.
FMVLQQHUWH[WDQGWH[WFRQWHQWMV
JAVASCRIPT
YDUğUVW,WHP GRFXPHQWJHW(OHPHQW%\,G ijRQHij // Wyszukanie pierwszego elementu listy.
YDUVKRZ7H[W&RQWHQW ğUVW,WHPWH[W&RQWHQW
3REUDQLHZDUWRĂFLZïDĂFLZRĂFLWH[W&RQWHQW
YDUVKRZ,QQHU7H[W ğUVW,WHPLQQHU7H[W
3REUDQLHZDUWRĂFLZïDĂFLZRĂFLLQQHU7H[W
:\ĂZLHWOHQLHWXĝ]DOLVWÈ]DZDUWRĂFLREXZïDĂFLZRĂFL
YDUPVJ ijS!WH[W&RQWHQWijVKRZ7H[W&RQWHQWijS!ij
PVJ ijS!LQQHU7H[WijVKRZ,QQHU7H[WijS!ij
YDUHO GRFXPHQWJHW(OHPHQW%\,G ijVFULSW5HVXOWVij HOLQQHU+70/ PVJ
ğUVW,WHPWH[W&RQWHQW ijFKOHEQD]DNZDVLHij
// Uaktualnienie pierwszego elementu listy.
WYNIK
:ZLÚNV]RĂFLSU]HJOÈGDUHN
ZïDĂFLZRĂÊtextContentSRELHU]HVïRZD
ĂZLHĝHğJL
ZïDĂFLZRĂÊinnerTextZ\ĂZLHWOLMHG\QLH
VïRZRğJLSRQLHZDĝVïRZRĂZLHĝH]RVWDïR
XNU\WHSU]H]&66
•
•
-HGQDN
SU]HJOÈGDUND,QWHUQHW([SORUHULMHM
ZF]HĂQLHMV]HZHUVMHQLHREVïXJXMÈZïDĂFLZRĂFLtextContent
ZSU]HJOÈGDUFH)LUHIR[ZïDĂFLZRĂÊ
innerTextEÚG]LHPLDïDZDUWRĂÊXQGHğQHG
SRQLHZDĝZ\PLHQLRQDZïDĂFLZRĂÊQLJG\
QLH]RVWDïD]DLPSOHPHQWRZDQD
•
•
OBIEKTOWY MODEL DOKUMENTU 223
DODANIE LUB USUNIĘCIE
ZAWARTOŚCI HTML
0DP\GZD]XSHïQLHRGPLHQQHSRGHMĂFLDZ]DNUHVLHGRGDZDQLDLXVXZDQLD
]DZDUWRĂFLZGU]HZLHPRGHOX'20ZïDĂFLZRĂÊinnerHTMLLRSHUDFMH
na modelu DOM.
WŁAŚCIWOŚĆ INNERHTML
8ZDJDXĝ\FLHZïDĂFLZRĂFLinnerHTMLMHVWU\]\NRZQHZLÚFHMLQIRUPDFMLQDWHQWHPDW]QDMG]LHV]
ZSRGUR]G]LDOHķ$WDNLW\SX;66ĵ
PODEJŚCIE
DODANIE ZAWARTOŚCI
USUNIĘCIE ZAWARTOŚCI
:ïDĂFLZRĂÊinnerHTMLPRĝH
E\ÊXĝ\ZDQDZGRZROQ\P
ZÚěOHHOHPHQWX6ïXĝ\]DUöZQR
GRSRELHUDQLDMDNL]DVWÚSRZDQLD]DZDUWRĂFL$E\XDNWXDOQLÊ
HOHPHQWQRZD]DZDUWRĂÊPXVL
E\ÊSRGDQDZSRVWDFLFLÈJX
WHNVWRZHJR0RĝHRQ]DZLHUDÊ
NRG]QDF]QLNöZGODHOHPHQWöZ
SRWRPQ\FK
$E\GRGDÊQRZÈ]DZDUWRĂÊ
QDOHĝ\Z\NRQDÊSRQLĝV]HNURNL
1. 1RZÈ]DZDUWRĂÊ ïÈF]QLH
]NRGHP]QDF]QLNöZ SU]\JRWXM
ZSRVWDFLFLÈJXWHNVWRZHJR
LXPLHĂÊZ]PLHQQHM
2. :\ELHU]HOHPHQWNWöUHJR
]DZDUWRĂÊPDE\Ê]DVWÈSLRQD
3. :ïDĂFLZRĂFLinnerHTML
Z\EUDQHJRHOHPHQWXSU]\SLV]
SU]\JRWRZDQ\ZF]HĂQLHMFLÈJ
WHNVWRZ\
:FHOXXVXQLÚFLDFDïHM]DZDUWRĂFLHOHPHQWXMHJRZïDĂFLZRĂFL
innerHTMLSU]\SLV]SXVW\
FLÈJWHNVWRZ\$E\XVXQÈÊ
SRMHG\QF]\HOHPHQW]IUDJPHQWX
PRGHOX'20QDSU]\NïDG
MHGHQ<li>]<ul>NRQLHF]QH
MHVWSRGDQLHFDïHJRIUDJPHQWX
DOHSR]EDZLRQHJRHOHPHQWX
SU]H]QDF]RQHJRGRXVXQLÚFLD
PRZYKŁAD. ZMIANA ELEMENTU LISTY
8WZöU]]PLHQQÈSU]HFKRZXMÈFÈNRG]QDF]QLNöZ
:\ELHU]HOHPHQWNWöUHJR
]DZDUWRĂÊPDE\ÊXDNWXDOQLRQD
var item;
LWHP ijHP!¥ZLHĝHHP!ğJLij
:]PLHQQHMPRĝHV]XPLHĂFLÊ
GRZROQÈZ\PDJDQÈLORĂÊNRGX
]QDF]QLNöZ7RMHVWV]\ENLVSRVöE
QDGRGDZDQLHGXĝHMLORĂFLNRGX
]QDF]QLNöZGRGU]HZDPRGHOX
DOM.
8DNWXDOQLM]DZDUWRĂÊ
wybranego elementu nowym
NRGHP]QDF]QLNöZ
ul
ul
li
li
li
li
li
tekst
tekst
tekst:
figi
tekst
tekst
li
em
tekst:
świeże
224 OBIEKTOWY MODEL DOKUMENTU
tekst:
figi
2SHUDFMHQDPRGHOX'20PRJÈGRW\F]\ÊSRV]F]HJöOQ\FKZÚ]ïöZGU]HZD
PRGHOX'20QDWRPLDVWZïDĂFLZRĂÊinnerHTMLMHVWOHSLHMGRVWRVRZDQD
GRXDNWXDOQLDQLDFDï\FKIUDJPHQWöZ
METODY OPERACJI NA MODELU DOM
2SHUDFMHQDPRGHOX'20PRJÈE\ÊEH]SLHF]QLHMV]HQLĝXĝ\FLHZïDĂFLZRĂFLinnerHTMLDOHWDNLH
UR]ZLÈ]DQLHZ\PDJD]QDF]QLHZLÚNV]HMLORĂFLNRGXLPRĝHE\ÊZROQLHMV]H
PODEJŚCIE
DODANIE ZAWARTOŚCI
USUNIĘCIE ZAWARTOŚCI
2SHUDFMHQDPRGHOX'20
R]QDF]DMÈ]ELöUPHWRG'20
SR]ZDODMÈF\FKQDWZRU]HQLH
HOHPHQWXLZÚ]ïöZWHNVWRZ\FK
DQDVWÚSQLHXPLHV]F]DQLHLFK
ZGU]HZLHPRGHOX'20OXE
XVXZDQLHLFK]QLHJR
$E\GRGDÊ]DZDUWRĂÊQDOHĝ\
Xĝ\ÊPHWRG\'20RGSRZLHG]LDOQHM]DXWZRU]HQLHQRZHM
]DZDUWRĂFLZZÚěOHLSU]HFKRZ\ZDQLHMHMZ]PLHQQHM
1DVWÚSQLHLQQDPHWRGD
'20MHVWZ\NRU]\VW\ZDQD
ZFHOXGRïÈF]HQLD]DZDUWRĂFL
ZRGSRZLHGQLPPLHMVFXGU]HZD
modelu DOM.
(OHPHQW ZUD]]FDïÈ]DZDUWRĂFLÈLHOHPHQWDPLSRWRPQ\PL PRĝQDXVXQÈÊ]GU]HZDPRGHOX
'20]DSRPRFÈSRMHG\QF]HM
metody.
PRZYKŁAD. DODANIE ELEMENTU LISTY
8WZöU]QRZ\ZÚ]HïWHNVWRZ\
tekst
:\ELHU]HOHPHQWGR
NWöUHJRPD]RVWDÊGRGDQ\QRZ\
fragment.
8WZöU]QRZ\ZÚ]HïHOHPHQtu.
ul
li
'RGDMZÚ]HïWHNVWRZ\
GRZÚ]ïDHOHPHQWX
'RGDMQRZ\IUDJPHQW
GRZ\EUDQHJRZF]HĂQLHM
elementu.
ul
li
li
li
li
li
tekst
tekst
tekst
tekst
tekst
li
tekst
OBIEKTOWY MODEL DOKUMENTU 225
UZYSKANIE DOSTĘPU
DO (I UAKTUALNIENIE) TEKSTU
ORAZ KODU ZNACZNIKÓW
ZA POMOCĄ WŁAŚCIWOŚCI
INNERHTML
8ĝ\ZDMÈFZïDĂFLZRĂFLinnerHTMLPRĝHV]X]\VNDÊGRVWÚSGR]DZDUWRĂFL
HOHPHQWX LPLHÊPRĝOLZRĂÊMHM]PRG\ğNRZDQLD RUD]ZV]\VWNLFKMHJR
HOHPHQWöZSRWRPQ\FK
innerHTML
*G\ZïDĂFLZRĂÊinnerHTMLSRELHUD
NRG+70/]HOHPHQWXWRSRELHUD
]DZDUWRĂÊWHJRHOHPHQWXL]ZUDFD
MÈZSRVWDFLMHGQHJRGïXJLHJRFLÈJX
WHNVWRZHJRïÈF]QLH]FDï\PNRGHP
]QDF]QLNöZMDNLPRĝH]QDMGRZDÊVLÚ
ZW\PHOHPHQFLH
.LHG\ZïDĂFLZRĂÊWDMHVWXĝ\ZDQD
GRXVWDZLHQLDQRZHM]DZDUWRĂFLGOD
HOHPHQWXSRELHUDFLÈJWHNVWRZ\
NWöU\PRĝH]DZLHUDÊNRG]QDF]QLNöZ
1DVWÚSQLHSU]HWZDU]DWHQFLÈJ
WHNVWRZ\LGRGDMHZV]\VWNLH]QDMGXMÈFHVLÚZQLPHOHPHQW\GRGU]HZD
modelu DOM.
*G\GRGDMHV]QRZÈ]DZDUWRĂÊ]D
SRPRFÈinnerHTMLPXVLV]SDPLÚWDÊ
ĝHSRPLQLÚFLHFKRÊMHGQHJR]QDF]QLND
]DP\NDMÈFHJRPRĝHVSRZRGRZDÊ
]QLV]F]HQLHSURMHNWXFDïHMVWURQ\
&RJRUV]DMHĝHOLZïDĂFLZRĂÊ
innerHTMLMHVWXĝ\ZDQDGRGRGDZDQLD]DZDUWRĂFLXWZRU]RQHMQDVWURQLH
SU]H]Xĝ\WNRZQLNöZVNXWNLHPPRĝH
E\ÊGRGDQLH]DZDUWRĂFL]DZLHUDMÈFHM
NRGR]ïRĂOLZ\PG]LDïDQLXSDWU]
SRGUR]G]LDïķ$WDNLW\SX;66ĵ
226 OBIEKTOWY MODEL DOKUMENTU
<li id=”one”><em>ĂZLHĝH</em> ğJL</li>
li
em
atrybut
tekst:
figi
tekst:
świeże
POBRANIE ZAWARTOŚCI
3RQLĝV]\ZLHUV]NRGXSRELHUD]DZDUWRĂÊHOHPHQWXOLVW\
DQDVWÚSQLHGRGDMHJRGR]PLHQQHMRQD]ZLHelContent
YDUHO&RQWHQW GRFXPHQWJHW(OHPHQW%\,G ijRQHij LQQHU+70/
Zmienna elContentEÚG]LHWHUD]]DZLHUDïDQDVWÚSXMÈF\FLÈJ
WHNVWRZ\
’<em>ĂZLHĝH</em> ğJL’
USTAWIENIE ZAWARTOŚCI
3RQLĝV]\ZLHUV]NRGXSRZRGXMHGRGDQLH]DZDUWRĂFL]PLHQQHM
elContent ïÈF]QLH]FDï\PNRGHP]QDF]QLNöZ GRSLHUZV]HJR
HOHPHQWXOLVW\
GRFXPHQWJHW(OHPHQW%\,G ijRQHij LQQHU+70/ HO&RQWHQW
UAKTUALNIENIE TEKSTU
I KODU ZNACZNIKÓW
1DSRF]ÈWNXRPDZLDQHJR
VNU\SWX]DZDUWRĂÊSLHUZV]HJR
HOHPHQWXOLVW\]RVWDMHXPLHV]F]RQDZ]PLHQQHMRQD]ZLH
ğUVW,WHP.
1DVWÚSQLHSRELHUDQDMHVW
]DZDUWRĂÊWHJRHOHPHQWXOLVW\
]DZDUWRĂÊWDXPLHV]F]RQD]RVWDMHZ]PLHQQHMitemContent.
:UHV]FLH]DZDUWRĂÊOLVW\]RVWDMH
XPLHV]F]RQDZïÈF]X=ZUöÊ
XZDJÚQDSRSU]HG]HQLHXNRĂQLNDPL]QDNöZFXG]\VïRZX
FMVLQQHUKWPOMV
JAVASCRIPT
// Umieszczenie w zmiennej pierwszego elementu listy.
YDUğUVW,WHP GRFXPHQWJHW(OHPHQW%\,G ijRQHij 3REUDQLH]DZDUWRĂFLSLHUZV]HJRHOHPHQWXOLVW\
YDULWHP&RQWHQW ğUVW,WHPLQQHU+70/
8DNWXDOQLHQLH]DZDUWRĂFLSLHUZV]HJRHOHPHQWXOLVW\DE\VWDïVLÚïÈF]HP
ğUVW,WHPLQQHU+70/ ijDKUHI ?ĵKWWSH[DPSOHRUJ?ĵ!ijLWHP&RQWHQWijD!ij
WYNIK
3RQLHZDĝ]DZDUWRĂÊFLÈJXWHNVWRZHJR]RVWDïD
GRGDQDGRHOHPHQWX]DSRPRFÈZïDĂFLZRĂFL
innerHTMLZV]\VWNLH]QDOH]LRQHZQLP
HOHPHQW\EÚGÈSU]H]SU]HJOÈGDUNÚXPLHV]F]RQHZGU]HZLHPRGHOX'20:RPDZLDQ\P
SU]\NïDG]LHQDVWURQLH]RVWDïXPLHV]F]RQ\
element <a> 1RZHHOHPHQW\RF]\ZLĂFLH
EÚGÈGRVWÚSQHGODLQQ\FKVNU\SWöZGRïÈF]RQ\FKQDVWURQLH -HĝHOLZNRG]LH+70/Xĝ\ZDV]DWU\EXWöZ
]QDNLF\WRZDQLDQDOHĝ\SRSU]HG]LÊXNRĂQLkiem (\ ']LÚNLWHPXZVND]XMHV]ĝHWDN
SRSU]HG]RQ\]QDNF\WRZDQLDQLHMHVWF]ÚĂFLÈ
VNU\SWX
OBIEKTOWY MODEL DOKUMENTU 227
DODANIE ELEMENTÓW
ZA POŚREDNICTWEM
OPERACJI NA MODELU DOM
2SHUDFMHQDPRGHOX'20WRLQQDWHFKQLNDGRGDZDQLDQRZHM]DZDUWRĂFL
QDVWURQLH LQQDQLĝGRGDZDQLHQRZHM]DZDUWRĂFL]DSRPRFÈZïDĂFLZRĂFL
innerHTML 2EHMPXMHWU]\Z\PLHQLRQHSRQLĝHMNURNL
UTWORZENIE
ELEMENTU
DOSTARCZENIE
ZAWARTOŚCI
DODANIE ELEMENTU
DO MODELU DOM
FUHDWH(OHPHQW
FUHDWH7H[W1RGH
appendChild()
3UDFÚUR]SRF]\QDV]RGXWZRU]HQLDQRZHJRZÚ]ïDHOHPHQWX
]Z\NRU]\VWDQLHPPHWRG\
FUHDWH(OHPHQW 7HQZÚ]Hï
HOHPHQWXMHVWSU]HFKRZ\ZDQ\
Z]PLHQQHM
Metoda FUHDWH7H[W1RGH
SRZRGXMHXWZRU]HQLHQRZHJR
ZÚ]ïDWHNVWRZHJR7HQZÚ]Hï
UöZQLHĝEÚG]LHSU]HFKRZ\ZDQ\Z]PLHQQHM0RĝQDJR
GRGDÊGRZÚ]ïDHOHPHQWX]D
SRPRFÈPHWRG\RQD]ZLH
appendChild().
3U]\JRWRZDQ\HOHPHQW RSFMRQDOQLHZUD]]SHZQÈ]DZDUWRĂFLÈZZÚěOHWHNVWRZ\P PRĝQD
XPLHĂFLÊZGU]HZLHPRGHOX
'20]DSRPRFÈPHWRG\
appendChild().
*G\]RVWDQLHXWZRU]RQ\
ZÚ]HïHOHPHQWXQLHVWDQRZLRQ
MHV]F]HF]ÚĂFLGU]HZDPRGHOX
'20ĽEÚG]LHGRGDQ\GRSLHUR
w kroku 3.
:SU]\NïDG]LHQDNRñFX
UR]G]LDïX]REDF]\V]LQQÈPHWRGÚ]DNWöUHMSRPRFÈPRĝQD
XPLHĂFLÊHOHPHQWZGU]HZLH
PRGHOX'20%ÚG]LHWRPHWRGD
insertBefore()SU]H]QDF]RQD
do dodawania nowego elemenWXSU]HGZVND]DQ\PZÚ]ïHP
DOM.
228 OBIEKTOWY MODEL DOKUMENTU
:WHQVSRVöEGRVWDUF]DP\
]DZDUWRĂÊGODHOHPHQWX7HQ
NURNPRĝQDSRPLQÈÊMHĂOL
ZGU]HZLHPRGHOX'20PD
]RVWDÊXPLHV]F]RQ\SXVW\
element.
Metoda appendChild()SR]ZDODQDZVND]DQLHHOHPHQWXNWöU\
MDNRSRWRPQ\PD]RVWDÊGRGDQ\
GRZÚ]ïD
=DUöZQRRSHUDFMHQDPRGHOX'20MDNLZïDĂFLZRĂÊinnerHTML
PDMÈVZRMHSU]H]QDF]HQLH$QDOL]ÚGRW\F]ÈFÈZ\ERUXRGSRZLHGQLHJR
UR]ZLÈ]DQLD]QDMG]LHV]ZSRGUR]G]LDOHķ3RUöZQDQLHWHFKQLNĽ
XDNWXDOQLHQLH]DZDUWRĂFL+70/ĵ
8ZDJD0RĝHV]VLÚVSRWNDÊ]V\WXDFMÈJG\SURJUDPLĂFLSR]RVWDZLDMÈSXVW\HOHPHQWQDVWURQDFK+70/ZFHOXGRïÈF]DQLDQRZHM
]DZDUWRĂFLGRWHJRHOHPHQWX-HGQDNQDMOHSLHMXQLNDÊWDNLHJR
SRGHMĂFLDMHĂOLQLHPDDEVROXWQHMNRQLHF]QRĂFL
DODANIE ELEMENTU
W DRZEWIE MODELU DOM
Metoda FUHDWH(OHPHQW
SRZRGXMHXWZRU]HQLHHOHPHQWXNWöU\PRĝQDXPLHĂFLÊ
ZGU]HZLHPRGHOX'20
:RPDZLDQ\PSU]\NïDG]LHMHVW
WRSXVW\HOHPHQW<li>OLVW\
1RZ\HOHPHQW]QDMGXMHVLÚ
Z]PLHQQHMRQD]ZLHQHZ(O
GRSöNLQLH]RVWDQLHSöěQLHM
XPLHV]F]RQ\ZGU]HZLHPRGHOX
DOM.
Metoda FUHDWH7H[W1RGH
SR]ZDODQDXWZRU]HQLHQRZHJR
ZÚ]ïDWHNVWRZHJRZFHOXMHJR
GRïÈF]HQLDGRHOHPHQWX:Ú]Hï
WHNVWRZ\MHVWSU]HFKRZ\ZDQ\
Z]PLHQQHMQHZ7H[W.
FMVDGGHOHPHQWMV
JAVASCRIPT
// Utworzenie nowego elementu i przechowywanie go w zmiennej.
YDUQHZ(O GRFXPHQWFUHDWH(OHPHQW ijOLij 8WZRU]HQLHZÚ]ïDWHNVWRZHJRLSU]HFKRZ\ZDQLHJRZ]PLHQQHM
YDUQHZ7H[W GRFXPHQWFUHDWH7H[W1RGH ijNRPRVDU\ĝRZDij 'RïÈF]HQLHQRZHJRZÚ]ïDWHNVWRZHJRGRQRZHJRHOHPHQWX
QHZ(ODSSHQG&KLOG QHZ7H[W :\V]XNDQLHPLHMVFDZNWöU\PSRZLQLHQE\ÊGRGDQ\QRZ\HOHPHQW
YDUSRVLWLRQ GRFXPHQWJHW(OHPHQWV%\7DJ1DPH ijXOij >@
// Wstawienie nowego elementu we wskazanym miejscu.
SRVLWLRQDSSHQG&KLOG QHZ(O WYNIK
:Ú]HïWHNVWRZ\]RVWDQLH]DSRPRFÈPHWRG\
appendChild()GRGDQ\GRQRZHJRZÚ]ïD
elementu.
Metoda getElementsByTagName() wybiera
ZGU]HZLHPRGHOX'20SRïRĝHQLHZNWöU\P
]RVWDQLHZVWDZLRQ\QRZ\HOHPHQW WREÚG]LH
SLHUZV]\HOHPHQW<ul>QDVWURQLH 1DNRñFXPHWRGDappendChild()MHVW
Xĝ\WDSRQRZQLHW\PUD]HPGRZVWDZLHQLD
ZGU]HZLHPRGHOX'20QRZHJRHOHPHQWX
LMHJR]DZDUWRĂFL
OBIEKTOWY MODEL DOKUMENTU 229
USUNIĘCIE ELEMENTÓW
ZA POMOCĄ OPERACJI
NA MODELU DOM
2SHUDFMHQDPRGHOX'20PRĝQDZ\NRU]\VWDÊGRXVXQLÚFLDHOHPHQWöZ
]GU]HZDPRGHOX'20
UMIESZCZENIE
W ZMIENNEJ ELEMENTU
PRZEZNACZONEGO DO
USUNIĘCIA
UMIESZCZENIE
W ZMIENNEJ ELEMENTU
NADRZĘDNEGO
USUNIĘCIE ELEMENTU
Z ELEMENTU
NADRZĘDNEGO
3UDFÚUR]SRF]\QDV]RGZ\ERUX
HOHPHQWXSU]H]QDF]RQHJRGR
XVXQLÚFLDLXPLHV]F]HQLHWHJR
ZÚ]ïDHOHPHQWXZ]PLHQQHM
.ROHMQ\PNURNLHPMHVWXVWDOHQLH
HOHPHQWXQDGU]ÚGQHJR]DZLHUDMÈFHJRHOHPHQWSU]H]QDF]RQ\GR
XVXQLÚFLDDQDVWÚSQLHXPLHV]F]HQLHMHJRZÚ]ïDHOHPHQWX
Z]PLHQQHM
Metoda removeChild()
SRZLQQDE\ÊXĝ\WDZHOHPHQFLH
QDGU]ÚGQ\PZ\EUDQ\PZNURNX
2.
$E\Z\EUDÊHOHPHQWPRĝQD
Z\NRU]\VWDÊGRZROQÈ]PHWRG
SU]HGVWDZLRQ\FKZF]ÚĂFL
UR]G]LDïXSRĂZLÚFRQHM]DS\WDniom modelu DOM.
1DMSURVWV]\PUR]ZLÈ]DQLHP
MHVWWXWDMXĝ\FLHZïDĂFLZRĂFL
parentNode elementu.
3DPLÚWDMĝHNLHG\XVXZDV]HOHPHQW]PRGHOX'20XVXQLÚWH
EÚGÈUöZQLHĝZV]\VWNLHMHJR
HOHPHQW\SRWRPQH
230 OBIEKTOWY MODEL DOKUMENTU
3U]\NïDGSU]HGVWDZLRQ\QD
VWURQLHSRSUDZHMMHVWEDUG]R
SURVW\DOHWDWHFKQLNDPRĝH
ZSRZDĝQ\PVWRSQLX]PLHQLÊ
GU]HZRPRGHOX'20
Metoda removeChild()SRELHUD
W\ONRMHGHQSDUDPHWUMDNLPMHVW
RGQLHVLHQLHGRHOHPHQWXNWöU\
PD]RVWDÊXVXQLÚW\
8VXQLÚFLHHOHPHQWöZ]PRGHOX
'20ZSï\ZDQDQXPHU\LQGHNVöZHOHPHQWöZUöZQRU]ÚGQ\FK
ZNROHNFMLNodeList.
USUNIĘCIE ELEMENTU
Z DRZEWA MODELU DOM
:SRQLĝV]\PSU]\NïDG]LH
Z\NRU]\VWXMHP\PHWRGÚ
removeChild()GRXVXQLÚFLD
F]ZDUWHJRHOHPHQWXOLVW\
ZUD]]MHJR]DZDUWRĂFLÈ 3LHUZV]D]PLHQQDRQD]ZLH
removeElSU]HFKRZXMHU]HF]\ZLVW\HOHPHQWSU]H]QDF]RQ\
GRXVXQLÚFLD]HVWURQ\ WRMHVW
F]ZDUW\HOHPHQWQDOLĂFLH 'UXJD]PLHQQDRQD]ZLH
FRQWDLQHU(OSU]HFKRZXMHHOHment <ul> ]DZLHUDMÈF\ element
SU]H]QDF]RQ\GRXVXQLÚFLD
FMVUHPRYHHOHPHQWMV
JAVASCRIPT
YDUUHPRYH(O GRFXPHQWJHW(OHPHQWV%\7DJ1DPH ijOLij >@
(OHPHQWSU]H]QDF]RQ\GRXVXQLÚFLD
YDUFRQWDLQHU(O UHPRYH(OSDUHQW1RGH-HJRHOHPHQWQDGU]ÚGQ\
FRQWDLQHU(OUHPRYH&KLOG UHPRYH(O 8VXQLÚFLHHOHPHQWX
WYNIK
Metoda removeChild()
MHVWXĝ\ZDQDZ]PLHQQHM
SU]HFKRZXMÈFHMQD]ZÚZÚ]ïD
QDGU]ÚGQHJR
:\PDJDSRGDQLDMHGQHJR
SDUDPHWUXMDNLPMHVWHOHPHQW
SU]H]QDF]RQ\GRXVXQLÚFLD
SU]HFKRZ\ZDQ\ZGUXJLHM
]PLHQQHM ul
li
li
li
li
ELEMENT NADRZĘDNY
ELEMENT PRZEZNACZONY
DO USUNIĘCIA
OBIEKTOWY MODEL DOKUMENTU
231
PORÓWNANIE TECHNIK —
UAKTUALNIENIE
ZAWARTOŚCI HTML
3R]QDïHĂWU]\WHFKQLNLSR]ZDODMÈFHQDGRGDQLH]DZDUWRĂFL+70/QDVWURQLH
LQWHUQHWRZHM:DUWRSRUöZQDÊGRVWÚSQHPRĝOLZRĂFLZW\P]DNUHVLH
:NDĝG\PMÚ]\NXSURJUDPRZDQLDF]ÚVWRLVWQLHMH
ZLHOHVSRVREöZQDZ\NRQDQLHGDQHJR]DGDQLD
-HĝHOLSRSURVLV]G]LHVLÚFLXSURJUDPLVWöZRXWZRU]HQLHGDQHJRVNU\SWXPRĝHV]RWU]\PDÊG]LHVLÚÊ
UöĝQ\FKSRGHMĂÊ
1LHNWöU]\SURJUDPLĂFLVÈSU]HNRQDQLĝHVWRVRZDQHSU]H]QLFKUR]ZLÈ]DQLHMHVWķZïDĂFLZ\Pĵ
UR]ZLÈ]DQLHPGDQHJRSUREOHPXJG\LVWQLHMHZLHOH
UöĝQ\FKVSRVREöZ-HĝHOLUR]XPLHV]GODF]HJR
SHZQHRVRE\Z\ELHUDMÈNRQNUHWQHUR]ZLÈ]DQLD
]DPLDVWLQQ\FKWR]QDMGXMHV]VLÚQDZïDĂFLZHM
GURG]HDE\]GHF\GRZDÊF]\GDQHSRGHMĂFLHMHVW
RGSRZLHGQLHZ7ZRLPSURMHNFLH
GRFXPHQWZULWH
Metoda GRFXPHQWZULWH RIHUXMHSURVW\VSRVöE
GRGDQLDQDVWURQLH]DZDUWRĂFLQLHLVWQLHMÈFHMZMHM
SLHUZRWQ\PNRG]LHěUöGïRZ\P-HGQDNVWRVRZDQLH
WHMPHWRG\U]DGNRMHVW]DOHFDQH
ZALETY
• 3RF]ÈWNXMÈF\SURJUDPLĂFLPRJÈEDUG]RV]\ENR
LïDWZR]REDF]\ÊMDNPRĝQDGRGDZDÊQRZÈ
]DZDUWRĂÊQDVWURQLH
WADY
• 7DPHWRGDG]LDïDW\ONRSRGF]DVSRF]ÈWNRZHJR
ZF]\W\ZDQLDVWURQ\
• -HĝHOLXĝ\MHV]WHMPHWRG\SRZF]\WDQLXVWURQ\
WR
1. PRĝHQDVWÈSLÊQDGSLVDQLHFDïHMVWURQ\
2. QRZD]DZDUWRĂÊPRĝHQLH]RVWDÊGRGDQD
3. PRĝHQDVWÈSLÊXWZRU]HQLHQRZHMVWURQ\
0HWRGDPRĝHSRZRGRZDÊSUREOHP\]HVWURQDPL;+70/ĂFLĂOH]JRGQ\PL]HVWDQGDUGDPL
VLHFLRZ\PL
2EHFQLHPHWRGDWDMHVWU]DGNRVWRVRZDQDSU]H]
SURJUDPLVWöZRJöOQLHU]HF]ELRUÈFMHMXĝ\FLH
MHVWRGUDG]DQH
•
•
232 OBIEKTOWY MODEL DOKUMENTU
:]DOHĝQRĂFLRG]DGDQLDPRĝQD]DVWRVRZDÊUöĝQHWHFKQLNL
PDMÈFSU]\W\PQDXZDG]HUR]EXGRZÚSU]\V]ïHMZLWU\Q\ elementLQQHU+70/
OPERACJE NA MODELU DOM
:ïDĂFLZRĂÊinnerHTMLSR]ZDODQDSREUDQLH
OXEXDNWXDOQLHQLHFDïHM]DZDUWRĂFLGRZROQHJR
HOHPHQWX ïÈF]QLH]NRGHP]QDF]QLNöZ MDNRFLÈJX
WHNVWRZHJR
3RMÚFLHķRSHUDFMHQDPRGHOX'20ĵRGQRVLVLÚ
GR]ELRUXPHWRGLZïDĂFLZRĂFLSR]ZDODMÈF\FK
QDX]\VNDQLHGRVWÚSXGRHOHPHQWöZLZÚ]ïöZ
WHNVWRZ\FKRUD]LFKWZRU]HQLHLXDNWXDOQLDQLH
ZALETY
ZALETY
• ']LÚNLZ\PLHQLRQHMZïDĂFLZRĂFLPRĝQDGRGDÊ
• 3RGHMĂFLHWRGRVNRQDOHVSUDZG]DVLÚSRGF]DV
•
•
•
GXĝÈLORĂÊQRZHJRNRGX]QDF]QLNöZXĝ\ZDMÈF
SU]\W\PPQLHMV]HMLORĂFLNRGXQLĝZSU]\SDGNX
RSHUDFMLQDPRGHOX'20
*G\GRGDMHP\GXĝRQRZ\FKHOHPHQWöZQD
VWURQLHLQWHUQHWRZHMNRU]\VWDQLH]WHMZïDĂFLZRĂFLMHVWV]\EV]HQLĝSU]HSURZDG]DQLHRSHUDFML
na modelu DOM.
:ïDĂFLZRĂÊWDSR]ZDODQDXVXQLÚFLH
ZSURVW\VSRVöEFDïHM]DZDUWRĂFL]MHGQHJR
HOHPHQWX SU]H]SU]\SLVDQLHPXSXVWHJRFLÈJX
WHNVWRZHJR •
]PLDQ\MHGQHJRHOHPHQWXZHIUDJPHQFLH
PRGHOX'20]DZLHUDMÈF\PZLHOHHOHPHQWöZ
UöZQRU]ÚGQ\FK
3RGHMĂFLHWRQLHPDZSï\ZXQDSURFHGXU\
REVïXJL]GDU]Hñ
3RGHMĂFLHWRSR]ZDODVNU\SWRPQDSU]\URVWRZH
GRGDZDQLHHOHPHQWöZ NLHG\MHGQRUD]RZRQLH
FKFHV]]PLHQLDÊEDUG]RGXĝHMLORĂFLNRGX WADY
WADY
• :ïDĂFLZRĂÊWDQLHSRZLQQDE\ÊVWRVRZDQD
• -HĝHOLFKFHV]ZSURZDG]LÊGXĝR]PLDQ
•
•
ZFHOXGRGDQLD]DZDUWRĂFLSRFKRG]ÈFHMRG
Xĝ\WNRZQLND QDSU]\NïDGQD]ZDXĝ\WNRZQLND
OXENRPHQWDU]QDEORJX SRQLHZDĝZLÈĝHVLÚ
WR]]DJURĝHQLDPLNWöUHEÚGÈRPöZLRQHQD
F]WHUHFKNROHMQ\FKVWURQDFK
:GXĝ\PIUDJPHQFLHPRGHOX'20RGL]RORZDQLHSRMHG\QF]\FKHOHPHQWöZPRĝHE\ÊWUXGQH
3URFHGXU\REVïXJL]GDU]HñPRJÈQLHG]LDïDÊ
]JRGQLH]RF]HNLZDQLDPL
•
Z]DZDUWRĂFLQDVWURQLHSRGHMĂFLHWRRNDĝHVLÚ
ZROQLHMV]HQLĝXĝ\FLHZïDĂFLZRĂFLinnerHTML.
'RRVLÈJQLÚFLDWHJRVDPHJRFHOXNRQLHF]QHMHVW
XWZRU]HQLH]QDF]QLHZLÚNV]HMLORĂFLNRGXQLĝ
ZSU]\SDGNXSRGHMĂFLDRSDUWHJRQDZïDĂFLZRĂFL
innerHTML.
OBIEKTOWY MODEL DOKUMENTU 233
ATAKI TYPU XSS
-HĝHOL]DZDUWRĂÊ+70/GRGDMHV]QDVWURQLH]DSRPRFÈZïDĂFLZRĂFLinnerHTML
OXENLONXPHWRGELEOLRWHNLM4XHU\ WRSRZLQLHQHĂPLHÊĂZLDGRPRĂÊ
QLHEH]SLHF]HñVWZD]ZLÈ]DQHJR]DWDNDPLW\SX;66 DQJFURVVVLWHVFULSWLQJ).
:SU]HFLZQ\PUD]LHDWDNXMÈF\PRĝHX]\VNDÊGRVWÚSGRNRQWXĝ\WNRZQLNöZ
:NVLÈĝFHSRGDQRZLHOHRVWU]HĝHñRQLHEH]SLHF]HñVWZDFKNWöUHF]\KDMÈQDSURJUDPLVWÚJG\
GRGDMH]DZDUWRĂÊ+70/QDVWURQLH]DSRĂUHGQLFWZHPZïDĂFLZRĂFLinnerHTML =QDMG]LHV]WDNĝH
XZDJLGRW\F]ÈFH]ZLÈ]DQHJR]W\PXĝ\FLDM4XHU\ 1DNROHMQ\FKVWURQDFK]RVWDQÈRPöZLRQHNZHVWLH
MDNLHSRZLQLHQHĂEUDÊSRGXZDJÚ'RZLHV]VLÚ
WDNĝHMDN]DEH]SLHF]\ÊZLWU\QÚSU]HGDWDNDPL
RPDZLDQ\FKWXWDMW\SöZ
CO MOŻE ZROBIĆ ATAKUJĄCY?
JAK DOCHODZI DO ATAKU TYPU XSS?
:SU]\SDGNXDWDNXW\SX;66DWDNXMÈF\XPLHV]F]D
ZZLWU\QLHLQWHUQHWRZHMNRGR]ïRĂOLZ\PG]LDïDQLX
:LWU\Q\F]ÚVWRRIHUXMÈ]DZDUWRĂÊSU]\JRWRZDQÈ
SU]H]ZLHOHUöĝQ\FKRVöE1DSU]\NïDG
Xĝ\WNRZQLF\PRJÈWZRU]\ÊSURğOHLGRGDZDÊ
NRPHQWDU]H
ZLHOXDXWRUöZPRĝHSUDFRZDÊQDGSXEOLNRZDQ\PLDUW\NXïDPL
GDQHPRJÈSRFKRG]LÊ]ZLWU\QWU]HFLFKWDNLFK
MDN)DFHERRN7ZLWWHUNDQDï\LQIRUPDF\MQH
LLQQH
Xĝ\WNRZQLNPRĝHPLHÊPRĝOLZRĂÊSU]HND]\ZDQLDSOLNöZQDSU]\NïDG]GMÚÊOXENOLSöZZLGHR
•
•
•
•
'DQHQDGNWöU\PLQLHPDV]NRQWUROLVÈRNUHĂODQH
mianem GDQ\FKQLH]DXIDQ\FKLPXV]ÈE\Ê
REVïXJLZDQH]]DFKRZDQLHPGXĝHMRVWURĝQRĂFL
3U]HSURZDG]DMÈFDWDNW\SX;66LQWUX]PRĝH
]GRE\ÊGRVWÚSGRLQIRUPDFML]QDMGXMÈF\FKVLÚZ
PRGHOX'20 ïÈF]QLH]GDQ\PLZIRUPXODU]DFK
VLHFLRZ\FK SOLNDFKFRRNLHVGDQHMZLWU\Q\
WRNHQDFKVHVML WRLQIRUPDFMHSR]ZDODMÈFHQD
RGUöĝQLHQLHGDQHJRXĝ\WNRZQLNDRGLQQ\FK
Xĝ\WNRZQLNöZORJXMÈF\FKVLÚGRZLWU\Q\ •
•
•
']LÚNLZ\PLHQLRQ\PLQIRUPDFMRPDWDNXMÈF\PRĝH
X]\VNDÊGRVWÚSGRNRQWDXĝ\WNRZQLNDDQDVWÚSQLH
GRNRQDÊ]DNXSöZ]SR]LRPXSU]HMÚWHJRNRQWD
Xĝ\WNRZQLND
XPLHV]F]DÊQLHGR]ZRORQÈ]DZDUWRĂÊ
GDOHMLV]\EFLHMUR]SU]HVWU]HQLDÊ]ïRĂOLZLH
G]LDïDMÈF\NRG
•
•
•
NAWET PROSTY KOD MOŻE POWODOWAĆ PROBLEMY
.RGR]ïRĂOLZ\PG]LDïDQLXïÈF]\ZVRELH+70/L-DYD6FULSW FKRÊWRDGUHV\85/LVW\OH&66PRJÈE\Ê
Z\NRU]\VWDQHGR]DLQLFMRZDQLDDWDNöZW\SX;66 'ZDSRQLĝV]HSU]\NïDG\SRND]XMÈĝHQDZHWFDïNLHP
SURVW\NRGPRĝHSRPöFDWDNXMÈFHPXZX]\VNDQLXGRVWÚSXGRNRQWDXĝ\WNRZQLND
3LHUZV]\SU]\NïDGSRZRGXMHXVWDZLHQLHGDQ\FKFRRNLHZ]PLHQQHMQDVWÚSQLHPRĝQDMHSU]HND]DÊGR
]XSHïQLHLQQHJRVHUZHUD
VFULSW!YDUDGU ijKWWSH[DPSOHFRP[VVSKS"FRRNLH ijHVFDSH GRFXPHQWFRRNLH VFULSW!
=NROHLSRQLĝV]\NRGSRND]XMHMDNEUDNXMÈF\REUD]PRĝHE\ÊXĝ\W\ZUD]]DWU\EXWHP+70/GR]DLQLFMRZDQLDG]LDïDQLD]ïRĂOLZHJRNRGX
LPJVUF ĵKWWSQRğOHĵRQHUURU ĵDGU ijKWWSH[DPSOHFRP[VVSKS"ijHVFDSH GRFXPHQWFRRNLH ĵ;>
.DĝG\NRG+70/]QLH]DXIDQHJRěUöGïDRWZLHUDPRĝOLZRĂÊSU]HSURZDG]HQLDDWDNXW\SX;66-HGQDN
]DJURĝHQLHMHVW]ZLÈ]DQHW\ONR]QLHNWöU\PL]QDNDPL
234 OBIEKTOWY MODEL DOKUMENTU
OCHRONA PRZED ATAKAMI
TYPU XSS
WERYFIKACJA DANYCH WEJŚCIOWYCH DOSTARCZANYCH SERWEROWI
1.2GZLHG]DMÈF\PZLWU\QÚ
SR]ZDODMQDXĝ\ZDQLHW\ONR
W\FK]QDNöZNWöUHVÈSRWU]HEQH
ZFHOXGRVWDUF]HQLDLQIRUPDFML
1D]\ZDVLÚWRZHU\ğNDFMÈ. Nie
SR]ZDODMQLH]DXIDQ\PXĝ\WNRZQLNRPQDSU]HND]\ZDQLH
]QDF]QLNöZ+70/OXENRGX
-DYD6FULSW
2.:VHUZHU]HGZXNURWQLH
VSUDZG]DMGDQHSRFKRG]ÈFH
RGXĝ\WNRZQLND]DQLPMH
Z\ĂZLHWOLV]OXEZVWDZLV]GR
ED]\GDQ\FK7RMHVWEDUG]R
ZDĝQHSRQLHZDĝZ\ïÈF]DMÈF
REVïXJÚ-DYD6FULSWXĝ\WNRZQLF\
PRJÈSRPLQÈÊSU]HSURZDG]HQLH
ZHU\ğNDFMLZSU]HJOÈGDUFH
LQWHUQHWRZHM
3.%D]DGDQ\FKPRĝHEH]SLHF]QLH]DZLHUDÊNRG]QDF]QLNöZLVNU\SW\SRFKRG]ÈFH
]]DXIDQ\FKěUöGHï QDSU]\NïDG
Xĝ\ZDQ\SU]H]&LHELHV\VWHP
&06 :\QLNDWR]IDNWXĝH
ED]DGDQ\FKMHG\QLHSU]HFKRZXMHNRGOHF]QLHSUöEXMHJR
SU]HWZDU]DÊ
Żądania stron z serwera WWW
i dane przekazywane do tego
serwera
Pobranie informacji z przeglądarki i przekazanie ich do bazy
danych
Przechowywanie informacji
utworzonych przez
administratorów i użytkowników
witryny
PRZEGLĄDARKA
Przetwarzanie plików HTML,
CSS i JavaScript pochodzących
z serwera WWW
SERWER WWW
Wygenerowanie stron na podstawie danych pochodzących z bazy
danych oraz wstawienie ich
w szablonach
BAZA DANYCH
Zwrot zawartości wymaganej
do utworzenia stron internetowych
ZNEUTRALIZOWANIE DANYCH POCHODZĄCYCH Z SERWERA I BAZY DANYCH
6..LHG\GDQHRSXV]F]ÈED]Ú
GDQ\FKZV]\VWNLHSRWHQFMDOQLH
QLHEH]SLHF]QH]QDNLSRZLQQ\
E\Ê]QHXWUDOL]RZDQH SDWU]
SRGUR]G]LDïķ;66Ľ]QHXWUDOL]RZDQLHLNRQWUROD]QDF]QLNöZĵ 5.8SHZQLMVLÚĝH]DZDUWRĂÊ
Z\JHQHURZDQDSU]H]Xĝ\WNRZQLNöZMHVWZVWDZLDQDMHG\QLH
ZRNUHĂORQ\FKF]ÚĂFLDFKSOLNöZ
V]DEORQöZ SDWU]SRGUR]G]LDï
ķ;66ĽZHU\ğNDFMDLV]DEORQ\ĵ 4. 1LHWZöU]IUDJPHQWöZ
PRGHOX'20]DZLHUDMÈF\FKNRG
+70/SRFKRG]ÈF\]QLH]DXIDQ\FKěUöGHï7DND]DZDUWRĂÊ
SRZLQQDE\ÊGRGDZDQDMHG\QLH
ZSRVWDFLWHNVWXRUD]SRMHM
ZF]HĂQLHMV]\P]QHXWUDOL]RZDQLX
:ïDĂFLZRĂFLinnerHTMLPRĝHV]ZLÚFXĝ\ZDÊGREH]SLHF]QHJRGRGDZDQLDNRGX]QDF]QLNöZQDVWURQLH
MHĝHOLVDPRG]LHOQLHXWZRU]\ïHĂWHQNRG:SU]\SDGNXMDNLHMNROZLHN]DZDUWRĂFLSRFKRG]ÈFHM]QLH]DXIDQ\FKěUöGHïSRZLQQDE\ÊRQD]QHXWUDOL]RZDQDLGRGDQDMHG\QLHZSRVWDFLWHNVWX QLHNRGX]QDF]QLNöZ ]DSRPRFÈZïDĂFLZRĂFLWDNLFKMDNtextContent.
OBIEKTOWY MODEL DOKUMENTU 235
XSS — WERYFIKACJA
I SZABLONY
8SHZQLMVLÚĝHXĝ\WNRZQLF\PRJÈZSURZDG]DÊMHG\QLH]QDNLQLH]EÚGQH
GRSU]HND]DQLDLQIRUPDFML3RQDGWRRJUDQLF]PLHMVFDQDVWURQLH
ZNWöU\FKEÚG]LHZ\ĂZLHWODQDGRVWDUF]DQDSU]H]QLFK]DZDUWRĂÊ
FILTRUJ I WERYFIKUJ DANE WEJŚCIOWE
3RGVWDZRZ\PĂURGNLHPRFKURQ\MHVWXQLHPRĝOLZLHQLHXĝ\WNRZQLNRPZSURZDG]DQLDZSRODFK
IRUPXODU]\VLHFLRZ\FKW\FK]QDNöZNWöUHQLH
VÈQLH]EÚGQHGRSU]HND]DQLDGDQHJRURG]DMX
LQIRUPDFML
1DSU]\NïDGQD]ZDXĝ\WNRZQLNDLDGUHVHPDLO
QLH]DZLHUDMÈQDZLDVöZRVWU\FKDPSHUVDQGöZ
LQDZLDVöZ]Z\Nï\FK0RĝQDZLÚFSU]HSURZDG]LÊ
ZHU\ğNDFMÚGDQ\FKPDMÈFÈQDFHOXXQLHPRĝOLZLHQLHXĝ\FLDZ\PLHQLRQ\FK]QDNöZ
7ÚRSHUDFMÚPRĝQDSU]HSURZDG]LÊZSU]HJOÈGDUFHLQWHUQHWRZHMDOHWU]HED]URELÊWRWDNĝH
ZVHUZHU]H SRQLHZDĝXĝ\WNRZQLNPöJïZ\ïÈF]\Ê
REVïXJÚ-DYD6FULSWZSU]HJOÈGDUFH :LÚFHM
LQIRUPDFMLQDWHPDWZHU\ğNDFMLGDQ\FK]QDMG]LHV]
ZUR]G]LDOH
OGRANICZ MIEJSCA, W KTÓRYCH
JEST UMIESZCZANA ZAWARTOŚĆ
POCHODZĄCA OD UŻYTKOWNIKÓW
,QWUX]QLHXĝ\MHpo prostu]QDF]QLNöZVFULSW!
ZFHOXSUöE\SU]HSURZDG]HQLDDWDNXW\SX;66
-DNVLÚGRZLHG]LDïHĂZSRGUR]G]LDOHķ$WDNLW\SX
;66ĵNRGR]ïRĂOLZ\PG]LDïDQLXPRĝH]QDMGRZDÊ
VLÚZDWU\EXFLHSURFHGXU\REVïXJLDZLÚFSR]D
]QDF]QLNDPLVFULSW!$WDNW\SX;66PRĝQD
]DLQLFMRZDÊ]DSRPRFÈ]ïRĂOLZHJRNRGXZVW\ODFK
&66OXEDGUHVDFK85/
3U]HJOÈGDUNLLQWHUQHWRZHSU]HWZDU]DMÈNRG+70/
&66L-DYD6FULSWZUöĝQ\VSRVöE OXEZUöĝQ\FK
NRQWHNVWDFKZ\NRQ\ZDQLD 3RQDGWRZSRV]F]HJöOQ\FKMÚ]\NDFKSURJUDPRZDQLDLQQH]QDNLPRJÈ
SRZRGRZDÊSUREOHP\'ODWHJRWHĝ]DZDUWRĂÊ
SRFKRG]ÈFD]QLH]DXIDQ\FKěUöGHïSRZLQQDE\Ê
GRGDZDQDMHG\QLHZSRVWDFLWHNVWX DQLHNRGX
]QDF]QLNöZ LXPLHV]F]DQDW\ONRZHOHPHQWDFK
ZLGRF]QHJRREV]DUX W]ZviewportuF]\OLREV]DUX
RNQDSU]HJOÈGDUNLZNWöU\PZ\ĂZLHWODVLÚVWURQD
internetowa).
%\ÊPRĝHGRVWU]HJïHĂĝHVHNFMHNRPHQWDU]\
ZZLWU\QDFKLQWHUQHWRZ\FKU]DGNRSR]ZDODMÈQD
GRGDZDQLHGXĝHMLORĂFLNRGX]QDF]QLNöZ F]DVDPL
WRMHG\QLHEDUG]RRJUDQLF]RQ\]ELöU+70/ 0D
WRQDFHOXXQLHPRĝOLZLHQLHZVWDZLDQLDZ]QDF]QLNDFKVFULSW!NRGXR]ïRĂOLZ\PG]LDïDQLXOXE
LQQ\FK]QDNöZ]DWU\EXWDPLSURFHGXUREVïXJL
=DZDUWRĂFLGRVWDUF]RQHMSU]H]Xĝ\WNRZQLNöZ
QLJG\QLHXPLHV]F]DMZZ\PLHQLRQ\FKSRQLĝHM
PLHMVFDFKEH]GRNïDGQHJRMHMVSUDZG]HQLDLJG\
QLHPDV]Z\VWDUF]DMÈFHMZLHG]\RSRWHQFMDOQ\FK
QLHEH]SLHF]HñVWZDFK]W\P]ZLÈ]DQ\FK LFK
RPöZLHQLHZ\NUDF]DSR]D]DNUHVWHPDW\F]Q\
NVLÈĝNL 1DZHWHG\WRU\+70/Xĝ\ZDQHZZLHOXV\VWHPDFK
&06RJUDQLF]DMÈPRĝOLZ\GRXĝ\FLDZQLFKNRG
RUD]DXWRPDW\F]QLHSUöEXMÈPRG\ğNRZDÊZV]HONL
NRG]QDF]QLNöZNWöU\Z\JOÈGDSRGHMU]DQLH
Znaczniki <script>
Komentarze HTML
1D]Z\]QDF]QLNöZ
Atrybuty
:DUWRĂFL&66
236 OBIEKTOWY MODEL DOKUMENTU
VFULSW!QLHWXWDMVFULSW!
QLHWXWDM!
QLH7XWDMKUHI ĵWHVWĵ!
GLYQLH7XWDM ĵDQL1LH7XWDMĵ!
^FRORUQLHWXWDM`
XSS — ZNEUTRALIZOWANIE
I KONTROLA ZNACZNIKÓW
.DĝGD]DZDUWRĂÊZ\JHQHURZDQDSU]H]Xĝ\WNRZQLNöZL]DZLHUDMÈFD]QDNL
VWRVRZDQHZNRG]LHSRZLQQDE\Ê]QHXWUDOL]RZDQDSRVWURQLHVHUZHUD
7U]HED]DFKRZDÊNRQWUROÚQDGZV]\VWNLPL]QDF]QLNDPLGRGDZDQ\PLQDVWURQLH
ZNEUTRALIZOWANIE ZAWARTOŚCI
DOSTARCZONEJ PRZEZ UŻYTKOWNIKA
DODANIE ZAWARTOŚCI POCHODZĄCEJ
OD UŻYTKOWNIKA
:V]\VWNLHGDQHSRFKRG]ÈFH]QLH]DXIDQ\FKěUöGHï
SRZLQQ\E\Ê]QHXWUDOL]RZDQHSRVWURQLHVHUZHUD
DGRSLHURSöěQLHMXPLHV]F]DQHQDVWURQLH:LÚNV]RĂÊMÚ]\NöZVWRVRZDQ\FKZSURJUDPRZDQLXSR
VWURQLHVHUZHUD]DZLHUDIXQNFMHSRPRFQLF]HNWöUH
SR]E\ZDMÈVLÚNRGXR]ïRĂOLZ\PG]LDïDQLX
.LHG\QDVWURQLH+70/XPLHV]F]DV]]DZDUWRĂÊ
SRFKRG]ÈFÈ]QLH]DXIDQHJRěUöGïDSRZLQQDE\Ê
]QHXWUDOL]RZDQDSU]H]VHUZHULGRGDWNRZRGRGDQD
ZSRVWDFL]Z\NïHJRWHNVWX=DUöZQR-DYD6FULSW
MDNLM4XHU\RIHUXMÈSU]\GDWQHQDU]ÚG]LD
JAVASCRIPT
HTML
1HXWUDOL]XMZ\PLHQLRQHSRQLĝHM]QDNLĽSRZLQQ\
E\ÊZ\ĂZLHWODQHMDNR]QDNLDQLHSU]HWZDU]DQH
MDNRNRG
&
&
’
' (nie ')
<
<
„
"
>
>
/
/
`
`
8¿<-ZïDĂFLZRĂFLtextContent OXEinnerText
ĽSDWU]SRGUR]G]LDïķ8]\VNDQLHGRVWÚSXGR
WHNVWXLMHJRXDNWXDOQLHQLH]DSRPRFÈZïDĂFLZRĂFL
WH[W&RQWHQW LLQQHU7H[W ĵ
1,(8¿<:$-ZïDĂFLZRĂFLinnerHTML ĽSDWU]
SRGUR]G]LDïķ8]\VNDQLHGRVWÚSXGR LXDNWXDOQLHQLH WHNVWXRUD]NRGX]QDF]QLNöZ]DSRPRFÈ
ZïDĂFLZRĂFLLQQHU+70/ĵ
JAVASCRIPT
JQUERY
:VNU\SWDFK-DYD6FULSWnigdyQLHXPLHV]F]DM
GDQ\FKSRFKRG]ÈF\FK]QLH]DXIDQ\FKěUöGHï
7RR]QDF]D]QHXWUDOL]RZDQLHZV]\VWNLFK]QDNöZ
$6&,,RNRGDFKNWöU\FKZDUWRĂÊMHVWPQLHMV]D
QLĝLQLHEÚGÈF\FK]QDNDPLDOIDQXPHU\F]Q\PL
SRQLHZDĝPRJÈE\ÊQLHEH]SLHF]QH 8¿<-PHWRG\text() ĽSDWU]UR]G]LDïSRGUR]G]LDïķ8DNWXDOQLDQLHHOHPHQWöZĵ
1,(8¿<:$-PHWRG\html()ĽSDWU]UR]G]LDï
SRGUR]G]LDïķ8DNWXDOQLDQLHHOHPHQWöZĵ
ADRESY URL
-HĝHOLPDV]ïÈF]D]DZLHUDMÈFHGDQHZHMĂFLRZH
SRFKRG]ÈFHRGXĝ\WNRZQLND QDSU]\NïDG
ïÈF]DGRSURğOLXĝ\WNRZQLNöZOXE]DS\WDQLD
Z\V]XNLZDQLD WRXĝ\ZDMPHWRG\-DYD6FULSW
encodeURIComponent()ZFHOX]QHHXWUDOL]RZDQLD
W\FKGDQ\FKZHMĂFLRZ\FK:\PLHQLRQDPHWRGD
QHXWUDOL]XMHSRQLĝV]H]QDNL
, / ? : @ & = + $ #
:SUDZG]LHZFHOXGRGDQLD]DZDUWRĂFL+70/
ZPRGHOX'20PRĝQDXĝ\ÊZïDĂFLZRĂFL
innerHTMLLPHWRG\M4XHU\html()DOHQDOHĝ\VLÚ
XSHZQLÊR
SRVLDGDQLXNRQWUROLQDGwszystkimiJHQHURZDQ\PL]QDF]QLNDPL ]DZDUWRĂÊSRFKRG]ÈFD
RGXĝ\WNRZQLNDQLHPRĝH]DZLHUDÊNRGX
]QDF]QLNöZ ]QHXWUDOL]RZDQLX]DZDUWRĂFLSRFKRG]ÈFHMRG
Xĝ\WNRZQLNDLGRGDQLXMHMZSRVWDFL]Z\NïHJR
WHNVWX]DSRPRFÈSU]HGVWDZLRQ\FKZF]HĂQLHM
WHFKQLNDQLHMDNR]DZDUWRĂFL+70/
•
•
OBIEKTOWY MODEL DOKUMENTU 237
WĘZŁY ATRYBUTÓW
3RXWZRU]HQLXZÚ]ïDHOHPHQWXPRĝQDZ\NRU]\VWDÊZQLPLQQHZïDĂFLZRĂFL
LPHWRG\DE\X]\VNDÊGRVWÚSGRZïDĂFLZRĂFLZÚ]ïDLPRG\ğNRZDÊMH
$E\X]\VNDÊGRVWÚSGRZïDĂFLZRĂFLLPLHÊPRĝOLZRĂÊLFK
PRG\ğNRZDQLDWU]HEDZ\NRQDÊ
GZLHF]\QQRĂFL
3LHUZV]DWRZ\EöUZÚ]ïD
HOHPHQWX]DZLHUDMÈFHJRDWU\EXW
LXPLHV]F]HQLHSRQLPNURSNL
:\V]XNDQLHZÚ]ïDHOHPHQWX G]LDïD
]NDĝGÈWHFKQLNÈRPöZLRQÈZUR]G]LDOH
'UXJDWRXĝ\FLHMHGQHM
]Z\PLHQLRQ\FKSRQLĝHMPHWRG
OXEZïDĂFLZRĂFLDE\PRĝQD
E\ïRSUDFRZDÊ]DWU\EXWDPL
elementu.
3REUDQLHZDUWRĂFLDWU\EXWX
ZVND]DQHJRMDNRSDUDPHWUPHWRG\
ZAPYTANIE MODELU DOM
METODA
GRFXPHQWJHW(OHPHQW%\,G ijRQHij JHW$WWULEXWH ijFODVVij ;
OPERATOR ELEMENTU
SKŁADOWEGO
:VND]XMHĝHNROHMQHPHWRG\EÚGÈXĝ\ZDQH
ZZÚěOHSRGDQ\PSROHZHMVWURQLH
METODA
OPIS
getAttribute()
3RELHUDZDUWRĂÊDWU\EXWX
hasAttribute()
6SUDZG]DF]\ZÚ]HïHOHPHQWX
PDZVND]DQ\DWU\EXW
setAttribute()
8VWDZLDZDUWRĂÊDWU\EXWX
removeAttribute()
8VXZDDWU\EXW]ZÚ]ïDHOHPHQWX
WŁAŚCIWOŚĆ
OPIS
FODVV1DPH
3RELHUDOXEXVWDZLDZDUWRĂÊ
atrybutu FODVV.
id
3RELHUDOXEXVWDZLDZDUWRĂÊDWU\EXWXid.
238 OBIEKTOWY MODEL DOKUMENTU
:LHV]MXĝĝHPRGHO'20
WUDNWXMHNDĝG\HOHPHQW+70/
MDNRRGG]LHOQ\RELHNWZGU]HZLH
PRGHOX'20:ïDĂFLZRĂFL
RELHNWXRGSRZLDGDMÈDWU\EXWRP
NWöUHGDQ\W\SHOHPHQWXSRWUDğ
REVïXJLZDÊ3ROHZHMVWURQLH
PRĝHV]]REDF]\ÊZïDĂFLZRĂFL
FODVV1DPH i id ,QQHZïDĂFLZRĂFLWRDFFHVV.H\FKHFNHG
hreflang i title).
SPRAWDZENIE, CZY ATRYBUT
ISTNIEJE, I POBRANIE JEGO
WARTOŚCI
=DQLPSU]\VWÈSLV]GRSUDF\
]DWU\EXWHPGREUÈSUDNW\NÈ
MHVWVSUDZG]HQLHF]\RQLVWQLHMH-HĂOLQLHLVWQLHMHPRĝQD
]DRV]F]ÚG]LÊ]DVRE\
JAVASCRIPT
Metoda hasAttribute()
ZGRZROQ\PZÚěOHHOHPHQWX
SR]ZDODQDVSUDZG]HQLHF]\
ZVND]DQ\DWU\EXWLVWQLHMH
1D]ZDDWU\EXWXMHVWSRGDZDQD
ZQDZLDVLHMDNRSDUDPHWU
metody.
8ĝ\FLHZ\ZRïDQLDPHWRG\
hasAttribute()ZSROHFHQLX
ifR]QDF]DĝHNRGZQDZLDVLH
NODPURZ\P]RVWDQLHZ\NRQDQ\
W\ONRZWHG\JG\ZVND]DQ\
DWU\EXWLVWQLHMHZGDQ\P
HOHPHQFLH
FMVJHWDWWULEXWHMV
YDUğUVW,WHP GRFXPHQWJHW(OHPHQW%\,G ijRQHij // Pobranie pierwszego elementu listy.
LI ğUVW,WHPKDV$WWULEXWH ijFODVVij ^-HĝHOLPDDWU\EXWFODVV
YDUDWWU ğUVW,WHPJHW$WWULEXWH ijFODVVij // Pobranie atrybutu.
8PLHV]F]HQLHZDUWRĂFLDWU\EXWX]DOLVWÈ
YDUHO GRFXPHQWJHW(OHPHQW%\,G ijVFULSW5HVXOWVij HOLQQHU+70/ ijS!3LHUZV]\HOHPHQWOLVW\PDNODVÚRQD]ZLHijDWWUijS!ij
}
WYNIK
:RPDZLDQ\PSU]\NïDG]LH]DS\WDQLH'20
ZSRVWDFLZ\ZRïDQLDgetElementById()]ZUDFD
HOHPHQWNWöUHJRZDUWRĂFLÈDWU\EXWXidMHVWone.
Metoda hasAttribute()MHVWXĝ\ZDQDGRVSUDZG]HQLDF]\WHQHOHPHQWPDDWU\EXWRQD]ZLH
FODVV:DUWRĂFLÈ]ZURWQÈPHWRG\MHVWZDUWRĂÊ
ERRORZVNDXĝ\ZDQDQDVWÚSQLHZSROHFHQLXif.
.RGZQDZLDVLHNODPURZ\PEÚG]LHZ\NRQDQ\
W\ONRZWHG\JG\DWU\EXWFODVVLVWQLHMH
Metoda getAttribute()]ZUDFDZDUWRĂÊDWU\EXWX
FODVVNWöUDQDVWÚSQLH]RVWDMHZ\ĂZLHWORQDQD
VWURQLH
2EVïXJDZSU]HJOÈGDUNDFK — obie wymienione
PHWRG\VÈGREU]HREVïXJLZDQHZHZV]\VWNLFK
QDMZDĝQLHMV]\FKSU]HJOÈGDUNDFK
OBIEKTOWY MODEL DOKUMENTU 239
UTWORZENIE ATRYBUTU
I ZMIANA JEGO WARTOŚCI
:ïDĂFLZRĂÊFODVV1DPHSR]ZDOD
QD]PLDQÚZDUWRĂFLDWU\EXWX
FODVV-HĝHOLDWU\EXWQLH
LVWQLHMHWR]RVWDQLHXWZRU]RQ\
LRWU]\PDZVND]DQÈZDUWRĂÊ
:ïDĂFLZRĂÊWDE\ïDZUR]G]LDOH
Xĝ\ZDQDGRXDNWXDOQLDQLD
VWDQXHOHPHQWöZOLVW\3RQLĝHM
PRĝHV]]REDF]\ÊLQQ\VSRVöE
Z\NRQDQLDWHJR]DGDQLD
FMVVHWDWWULEXWHMV
Metoda setAttribute()
SR]ZDODQDXDNWXDOQLHQLH
ZDUWRĂFLGRZROQHJR atrybutu.
3RELHUDGZDSDUDPHWU\QD]ZÚ
DWU\EXWXRUD]ZDUWRĂÊGODWHJR
atrybutu.
JAVASCRIPT
YDUğUVW,WHP GRFXPHQWJHW(OHPHQW%\,G ijRQHij // Pobranie pierwszego elementu.
ğUVW,WHPFODVV1DPH ijFRPSOHWHij// Zmiana jego atrybutu class.
YDUIRXUWK,WHP GRFXPHQWJHW(OHPHQWV%\7DJ1DPH ijOLij LWHP // Pobranie czwartego elementu.
IRXUWK,WHPVHW$WWULEXWH ijFODVVijijFRROij // Dodanie do niego atrybutu.
.LHG\ZïDĂFLZRĂÊLVWQLHMH QDSU]\NïDG
FODVV1DPH lub id WR]DOHSV]HUR]ZLÈ]DQLH
X]QDMHVLÚXDNWXDOQLHQLHZïDĂFLZRĂFL]DPLDVW
Xĝ\FLDPHWRG\ :WOHPHWRGDLWDNVSRZRGXMHXVWDZLHQLHZïDĂFLZRĂFL WYNIK
.LHG\XDNWXDOQLDV]ZDUWRĂÊDWU\EXWX ]ZïDV]F]DFODVV PRĝHWRVSRZRGRZDÊZ\NRQDQLH
QRZHMUHJXï\&66DW\PVDP\P]PLHQLÊ
Z\JOÈGHOHPHQWöZZ\ĂZLHWODQ\FKQDVWURQLH
8ZDJD3U]HGVWDZLRQDWXWDMWHFKQLNDSRZRGXMH
QDGSLVDQLHFDïHMZDUWRĂFLDWU\EXWXFODVV1LHVSRZRGXMHGRGDQLDQRZHMZDUWRĂFLGRLVWQLHMÈFHMZDUWRĂFL
atrybutu FODVV.
-HĝHOLQRZÈZDUWRĂÊFKFHV]GRGDÊGRLVWQLHMÈFHMZDUWRĂFLDWU\EXWXFODVVWRQDMSLHUZWU]HEDRGF]\WDÊMHJR
]DZDUWRĂÊDQDVWÚSQLHGRGDÊQRZ\WHNVWGRLVWQLHMÈFHM
ZDUWRĂFLDWU\EXWX OXEXĝ\ÊPHWRG\M4XHU\RQD]ZLH
addClass()MDNSU]HGVWDZLRQRZUR]G]LDOHZSRGUR]G]LDOHķ3RELHUDQLHLXVWDZLDQLHZDUWRĂFLDWU\EXWXĵ 240 OBIEKTOWY MODEL DOKUMENTU
USUNIĘCIE ATRYBUTU
$E\XVXQÈÊDWU\EXW
]HOHPHQWXQDOHĝ\ZSLHUZV]HM
NROHMQRĂFLZ\EUDÊHOHPHQW
DQDVWÚSQLHZ\ZRïDÊPHWRGÚ
removeAttribute(). Ma
RQDW\ONRMHGHQSDUDPHWU
NWöU\PMHVWQD]ZDDWU\EXWX
SU]H]QDF]RQHJRGRXVXQLÚFLD
JAVASCRIPT
3UöEDXVXQLÚFLDQLHLVWQLHMÈFHJR
DWU\EXWXQLHVSRZRGXMHEïÚGX
-HGQDNGREUÈSUDNW\NÈMHVWDE\
SU]HGSUöEÈXVXQLÚFLDDWU\EXWX
VSUDZG]LÊF]\RQZRJöOH
LVWQLHMH
:SRQLĝV]\PSU]\NïDG]LH
metoda getElementById()MHVW
Xĝ\ZDQDGRSREUDQLDSLHUZV]HJRHOHPHQWX]OLVW\NWöU\PD
atrybut idRZDUWRĂFLone.
FMVUHPRYHDWWULEXWHMV
YDUğUVW,WHP GRFXPHQWJHW(OHPHQW%\,G ijRQHij // Pobranie pierwszego elementu.
LI ğUVW,WHPKDV$WWULEXWH ijFODVVij ^-HĝHOLPDDWU\EXWFODVV
ğUVW,WHPUHPRYH$WWULEXWH ijFODVVij 8VXQLÚFLHMHJRDWU\EXWXFODVV
}
WYNIK
6NU\SWVSUDZG]DF]\ZVND]DQ\
element ma atrybut FODVV-HĂOL
WDNDWU\EXW]RVWDMHXVXQLÚW\
OBIEKTOWY MODEL DOKUMENTU
241
ANALIZA MODELU DOM
W PRZEGLĄDARCE CHROME
1RZRF]HVQHSU]HJOÈGDUNLLQWHUQHWRZHVÈGRVWDUF]DQHZUD]]QDU]ÚG]LDPL
SRPDJDMÈF\PLZDQDOL]LHVWURQDWDNĝHZ]UR]XPLHQLXVWUXNWXU\GU]HZD
modelu DOM.
1DU\VXQNXSRSUDZHMVWURQLH
SRND]DQRHOHPHQW<li>SRGĂZLHWORQ\ZSDQHOXProperties
(1)ZVND]XMÈF\PĝHMHVWWR
element <li>ZUD]]DWU\EXtem idRZDUWRĂFLoneRUD]
atrybutem FODVVRZDUWRĂFL
hot
element HTMLLIElement
HTMLElement
HOHPHQW
ZÚ]Hï
obiekt.
•
•
•
•
•
•
2ERNNDĝGHM]Z\PLHQLRQ\FK
QD]ZRELHNWöZ]QDMGXMHVLÚ
VWU]DïNDNWöUHMNOLNQLÚFLH
VSRZRGXMHUR]ZLQLÚFLHZVND]DQHMVHNFML:WHQVSRVöEPRĝQD
SR]QDÊZïDĂFLZRĂFLGRVWÚSQH
GODGDQHJRURG]DMXZÚ]ïD
:Ú]ï\]RVWDï\UR]G]LHORQH
SRQLHZDĝSHZQHZïDĂFLZRĂFL
VÈFKDUDNWHU\VW\F]QHGOD
HOHPHQWöZOLVW\LQQHGOD
ZÚ]ïöZHOHPHQWXLQQHGOD
ZV]\VWNLFKZÚ]ïöZNROHMQH
GODZV]\VWNLFKRELHNWöZ
3RV]F]HJöOQHZïDĂFLZRĂFLVÈ
Z\ĂZLHWODQHZRGSRZLHGQLFK
W\SDFKZÚ]ïöZ3U]\SRPLQDMÈ
RQHGRNWöU\FKZïDĂFLZRĂFL
PRĝQDX]\VNDÊGRVWÚS]D
SRPRFÈZÚ]ïDPRGHOX'20GOD
danego elementu.
242 OBIEKTOWY MODEL DOKUMENTU
$E\Z\ĂZLHWOLÊQDU]ÚG]LD
SURJUDPLVW\F]QHZSU]HJOÈGDUFH
&KURPHZV\VWHPLH0DFNOLNQLM
menu WidokDQDVWÚSQLH
Z\ELHU]3URJUDPLVWD1DU]ÚG]LD
GODSURJUDPLVWöZ:V\VWHPLH
:LQGRZVSU]HMGěGRPHQX1DU]ÚG]LD (lub :LÚFHMQDU]ÚG]L DQDVWÚSQLHZ\ELHU]1DU]ÚG]LD
GODSURJUDPLVWöZ.
3UDZ\PSU]\FLVNLHPP\V]\
NOLNQLMGRZROQ\HOHPHQW
LZ\ELHU]RSFMÚZbadaj element.
=PHQXZRNQLHQDU]ÚG]LD
Z\ELHU]NDUWÚElements. Kod
ěUöGïRZ\VWURQ\]RVWDQLH
Z\ĂZLHWORQ\SROHZHMVWURQLH
QDWRPLDVWRSFMHSRSUDZHM
-HĝHOLHOHPHQW]DZLHUDHOHPHQW
SRWRPQ\WRRERNQLHJRSRMDZLD
VLÚVWU]DïNDNWöUHMNOLNQLÚFLH
UR]ZLMDHOHPHQWLSRND]XMHMHJR
]DZDUWRĂÊ
3DQHOProperties Z\ĂZLHWODQ\
SRSUDZHM SRGDMHW\SRELHNWX
]D]QDF]RQHJRHOHPHQWX
:SHZQ\FKZHUVMDFKSU]HJOÈGDUNL&KURPHWHQSDQHOMHVW
Z\ĂZLHWODQ\ZSRVWDFLNDUW\ .LHG\]D]QDF]\V]LQQ\HOHPHQW
ZRNQLHJïöZQ\PSROHZHM
VWURQLHZDUWRĂFLZSDQHOX
PropertiesSRSUDZHMEÚGÈ
GRW\F]\ï\Z\EUDQHJRHOHPHQWX
ANALIZA MODELU DOM
W PRZEGLĄDARCE
INTERNETOWEJ FIREFOX
3U]HJOÈGDUND)LUHIR[PDSRGREQHZEXGRZDQHQDU]ÚG]LD0RĝQDUöZQLHĝ
SREUDÊQDU]ÚG]LH'20,QVSHFWRUNWöUHZ\ĂZLHWODZÚ]ï\WHNVWRZH
-HĝHOLZXOXELRQHMZ\V]XNLZDUFH
LQWHUQHWRZHMSRGDV]Z\UDĝHQLH
DOM InspectorWR]QDMG]LHV]
SRND]DQHSROHZHMVWURQLH
QDU]ÚG]LH]DSURMHNWRZDQHGOD
SU]HJOÈGDUNL)LUHIR[1DHNUDQLH
PRĝQD]REDF]\ÊZLGRNGU]HZD
SRGREQ\GRSRND]DQHJRZF]HĂQLHMZSU]HJOÈGDUFH&KURPH
-HGQDNWXWDM]DZDUWHVÈUöZQLHĝ
ZÚ]ï\]QDNöZRGVWÚSX Z\ĂZLHWODQHMDNR#text :DUWRĂFL
ZÚ]ïöZVÈSRGDZDQHZSDQHOX
SRSUDZHMVWURQLHRNQD:Ú]ï\
]QDNöZRGVWÚSXQLHPDMÈ
ZDUWRĂFLZW\PSDQHOX
,QQHUR]V]HU]HQLHGODSU]HJOÈGDUNL)LUHIR[ZDUWHZ\SUöERZDQLDWR)LUHEXJ
)LUHIR[RIHUXMHWDNĝHZLGRN'PRGHOX
'20:RNöïNDĝGHJRHOHPHQWXZ\ĂZLHWODQHMHVWSXGHïNRPRĝQD]PLHQLÊNÈWSRG
NWöU\PVÈZ\ĂZLHWODQHSRV]F]HJöOQHHOHPHQW\,PEDUG]LHMGDQ\HOHPHQWZ\VWDMH
W\PZLÚFHMPDHOHPHQWöZSRWRPQ\FK
:WHQVSRVöEPRĝHV] V]\ENR X]\VNDÊLQWHUHVXMÈF\SRGJOÈGSR]LRPXVNRPSOLNRZDQLDNRGX]QDF]QLNöZQDVWURQLHLSR]QDÊ
JïÚERNRĂÊ]DJQLHĝGĝHQLDHOHPHQWöZ
OBIEKTOWY MODEL DOKUMENTU 243
244 OBIEKTOWY MODEL DOKUMENTU
PRZYKŁAD
OBIEKTOWY MODEL
DOKUMENTU
:W\PSU]\NïDG]LH]RVWDQÈZ\NRU]\VWDQHZ\EUDQH
WHFKQLNLRPöZLRQHZUR]G]LDOHLSU]H]QDF]RQH
GRXDNWXDOQLHQLD]DZDUWRĂFLOLVW\3U]\NïDGVNïDGD
VLÚ]WU]HFKF]ÚĂFL
1. DODANIE NOWEGO ELEMENTU NA POCZĄTKU
I KOŃCU LISTY
Dodanie elementu na SRF]ÈWNXOLVW\Z\PDJDXĝ\FLDLQQHMPHWRG\
QLĝZSU]\SDGNXGRGDZDQLDHOHPHQWXQDNRñFXOLVW\
2. USTAWIENIE ATRYBUTU CLASS DLA WSZYSTKICH
ELEMENTÓW
7R]DGDQLHZ\PDJDXĝ\FLDSÚWOLZFHOXLWHUDFMLSU]H]ZV]\VWNLH
elementy <li>LSU]\SLVDQLDZDUWRĂFLFRRO atrybutowi FODVV
elementu.
3. DODANIE DO NAGŁÓWKA LICZBY ELEMENTÓW
ZNAJDUJĄCYCH SIĘ NA LIŚCIE
7R]DGDQLHR]QDF]DNRQLHF]QRĂÊZ\NRQDQLDF]WHUHFKNURNöZ
1. RGF]\W]DZDUWRĂFLQDJïöZND
2. XVWDOHQLHOLF]E\HOHPHQWöZ<li>QDVWURQLH
3. GRGDQLHOLF]E\HOHPHQWöZGRQDJïöZND
4. XDNWXDOQLHQLHQDJïöZNDQRZÈ]DZDUWRĂFLÈ
OBIEKTOWY MODEL DOKUMENTU 245
PRZYKŁAD
OBIEKTOWY MODEL DOKUMENTU
FMVVHWDWWULEXWHMV
JAVASCRIPT
'RGDQLHHOHPHQWöZQDSRF]ÈWNXLNRñFXOLVW\
YDUOLVW GRFXPHQWJHW(OHPHQWV%\7DJ1DPH ijXOij >@// Pobranie elementu <ul>.
'RGDQLHQRZHJRHOHPHQWXQDNRñFXOLVW\
YDUQHZ,WHP/DVW GRFXPHQWFUHDWH(OHPHQW ijOLij // Utworzenie elementu.
YDUQHZ7H[W/DVW GRFXPHQWFUHDWH7H[W1RGH ijNUHPij 8WZRU]HQLHZÚ]ïDWHNVWRZHJR
QHZ,WHP/DVWDSSHQG&KLOG QHZ7H[W/DVW 'RGDQLHZÚ]ïDWHNVWRZHJR
// do elementu.
OLVWDSSHQG&KLOG QHZ,WHP/DVW // Umieszczenie elementu
QDNRñFXOLVW\
'RGDQLHQRZHJRHOHPHQWXQDSRF]ÈWNXOLVW\
YDUQHZ,WHP)LUVW GRFXPHQWFUHDWH(OHPHQW ijOLij // Utworzenie elementu.
YDUQHZ7H[W)LUVW GRFXPHQWFUHDWH7H[W1RGH ijNDSXVWDij 8WZRU]HQLHZÚ]ïDWHNVWRZHJR
QHZ,WHP)LUVWDSSHQG&KLOG QHZ7H[W)LUVW 'RGDQLHZÚ]ïDWHNVWRZHJRGRHOHPHQWX
OLVWLQVHUW%HIRUH QHZ,WHP)LUVWOLVWğUVW&KLOG 8PLHV]F]HQLHHOHPHQWXQDSRF]ÈWNXOLVW\
:WHMF]ÚĂFLSU]\NïDGXGRGDMHP\GZDHOHPHQW\
OLVW\GRHOHPHQWX<ul>ĽSRMHGQ\PQDSRF]ÈWNX
LNRñFX8ĝ\WDWHFKQLNDWRRSHUDFMHQDPRGHOX
'203RQLĝHMZ\PLHQLRQRF]WHU\NURNLSURZDG]ÈFHGRXWZRU]HQLDQRZHJRZÚ]ïDHOHPHQWXLMHJR
XPLHV]F]HQLDZGU]HZLHPRGHOX'20
1.
2.
3.
4.
8WZRU]HQLHZÚ]ïDHOHPHQWX
8WZRU]HQLHZÚ]ïDWHNVWRZHJR
'RGDQLHZÚ]ïDWHNVWRZHJRGRZÚ]ïDHOHPHQWX
8PLHV]F]HQLHHOHPHQWXZGU]HZLHPRGHOX
DOM.
:\NRQDQLHF]ZDUWHJRNURNXZ\PDJDQDMSLHUZ
SRGDQLDHOHPHQWXQDGU]ÚGQHJRNWöU\EÚG]LH
]DZLHUDïQRZ\HOHPHQW:REXSU]\SDGNDFKWR
MHVW<ul>:Ú]HïGODWHJRHOHPHQWXMHVWSU]HFKRZ\ZDQ\Z]PLHQQHMRQD]ZLHlistSRQLHZDĝ
EÚG]LHZ\NRU]\VWDQ\NLONDNURWQLH
Metoda appendChild()SRZRGXMHGRGDQLH
QRZHJRZÚ]ïDMDNRHOHPHQWXSRWRPQHJRGOD
246 OBIEKTOWY MODEL DOKUMENTU
ZVND]DQHJRHOHPHQWX0DW\ONRMHGHQSDUDPHWU
ĽWMQRZÈ]DZDUWRĂÊXPLHV]F]DQÈZGU]HZLH
PRGHOX'20-HĝHOLHOHPHQWQDGU]ÚGQ\PDMXĝ
HOHPHQW\SRWRPQHWRQRZ\EÚG]LHGRGDQ\SR
RVWDWQLPLVWQLHMÈF\PHOHPHQFLHSRWRPQ\P DW\P
VDP\PVWDQLHVLÚRVWDWQLPHOHPHQWHPSRWRPQ\P
GDQHJRHOHPHQWXQDGU]ÚGQHJR QDGU]ÚGQ\DSSHQG&KLOG nowyElement);
3RZ\ĝV]ÈPHWRGÚVSRWNDïHĂMXĝZLHOHUD]\
SRGF]DVGRGDZDQLD]DUöZQRQRZ\FKHOHPHQWöZ
ZGU]HZLHMDNLZÚ]ïöZWHNVWRZ\FKGRZÚ]ïöZ
HOHPHQWöZ $E\XPLHĂFLÊHOHPHQWQDSRF]ÈWNXOLVW\Xĝ\ZDP\
metody insertBefore():\PDJDRQDSRGDQLD
GRGDWNRZ\FKLQIRUPDFMLĽHOHPHQWXSU]HG
NWöU\PPD]RVWDÊZVWDZLRQDQRZD]DZDUWRĂÊ
HOHPHQWGRFHORZ\ QDGU]ÚGQ\LQVHUW%HIRUH nowyElement
elementDocelowy);
PRZYKŁAD
OBIEKTOWY MODEL DOKUMENTU
JAVASCRIPT
FMVH[DPSOHMV
YDUOLVW,WHPV GRFXPHQWTXHU\6HOHFWRU$OO ijOLij // Wszystkie elementy <li>.
// Dodanie klasy cool do wszystkich elementów listy.
var i;
// Zmienna licznika.
IRU L LOLVW,WHPVOHQJWKL ^// Iteracja przez elementy.
OLVW,WHPV>L@FODVV1DPH ijFRROij// Zmiana klasy na cool.
}
'RGDQLHGRQDJïöZNDOLF]E\HOHPHQWöZ]QDMGXMÈF\FKVLÚQDOLĂFLH
YDUKHDGLQJ GRFXPHQWTXHU\6HOHFWRU ijKij // Element <h2>.
YDUKHDGLQJ7H[W KHDGLQJğUVW&KLOGQRGH9DOXH7HNVWHOHPHQWXK!
YDUWRWDO,WHPV OLVW,WHPVOHQJWK// Liczba elementów <li>.
YDUQHZ+HDGLQJ KHDGLQJ7H[WijVSDQ!ijWRWDO,WHPVijVSDQ!ij=DZDUWRĂÊ
KHDGLQJLQQHU+70/ QHZ+HDGLQJ// Uaktualnienie elementu <h2>.
.ROHMQ\PNURNLHPZSU]\NïDG]LHMHVWSU]HSURZDG]HQLHLWHUDFMLSU]H]ZV]\VWNLHHOHPHQW\OLVW\
LSU]\SLVDQLHZDUWRĂFLFRROLFKDWU\EXWRPFODVV.
2GE\ZDVLÚWRSU]H]SREUDQLHZV]\VWNLFK
HOHPHQWöZOLVW\LXPLHV]F]HQLHLFKZ]PLHQQHM
RQD]ZLHlistItems'RSU]HSURZDG]HQLDLWHUDFML
SU]H]ZV]\VWNLHHOHPHQW\SRNROHL]RVWDïDXĝ\WD
SÚWODfor/LF]EDLWHUDFMLSÚWOLMHVWRNUHĂODQDQD
SRGVWDZLHZDUWRĂFLZïDĂFLZRĂFLlength.
:UHV]FLHNRGXDNWXDOQLDQDJïöZHNDE\]DZLHUDï
LQIRUPDFMHROLF]ELHHOHPHQWöZ]QDMGXMÈF\FKVLÚ
QDOLĂFLH8DNWXDOQLHQLHQDVWÚSXMH]DSRĂUHGQLFWZHPZïDĂFLZRĂFLinnerHTMLDQLHXĝ\W\FKZH
ZF]HĂQLHMV]HMF]ÚĂFLVNU\SWXWHFKQLNRSHUDFMLQD
modelu DOM.
:WHQVSRVöESRND]DQRMDNPRĝQDGRGDZDÊ
]DZDUWRĂÊGRMXĝLVWQLHMÈFHJRHOHPHQWXSU]H]QDMSLHUZRGF]\WMHJRELHĝÈFHMZDUWRĂFLDQDVWÚSQLH
GRGDQLHQRZHM3RGREQÈWHFKQLNÚPRĝQD]DVWRVRZDÊMHĂOL]DFKRG]LSRWU]HEDGRGDQLDZDUWRĂFLGR
DWU\EXWXEH]QDGSLV\ZDQLDMXĝLVWQLHMÈFHM
$E\XPLHĂFLÊZQDJïöZNXOLF]EÚHOHPHQWöZ]QDMGXMÈF\FKVLÚQDOLĂFLHNRQLHF]QHMHVWGRVWDUF]HQLH
MHV]F]HGZöFKLQIRUPDFML
1. 3RF]ÈWNRZD]DZDUWRĂÊQDJïöZNDĽSR]ZROL
QDGRGDQLHGRQLHJROLF]E\HOHPHQWöZ]QDMGXMÈF\FKVLÚQDOLĂFLH=DZDUWRĂÊSRF]ÈWNRZÈ
SRELHUDP\]Z\NRU]\VWDQLHPZïDĂFLZRĂFL
nodeValueFKRÊUöZQLHGREU]HPRĝQDXĝ\Ê
ZïDĂFLZRĂFLinnerHTML lub textContent.
2. /LF]EDHOHPHQWöZ]QDMGXMÈF\FKVLÚQDOLĂFLH.
7ÚOLF]EÚPRĝQDXVWDOLÊQDSRGVWDZLHZDUWRĂFL
ZïDĂFLZRĂFLlength]PLHQQHMlistItems.
*G\]ELHU]HP\Z\PDJDQHLQIRUPDFMHXDNWXDOQLHQLH]DZDUWRĂFLHOHPHQWX<h2>PRĝHP\SU]HSURZDG]LÊZGZöFKSU]HGVWDZLRQ\FKSRQLĝHMNURNDFK
1. 8WZRU]HQLHQRZHJRQDJïöZNDLXPLHV]F]HQLH
JRZ]PLHQQHM1RZ\QDJïöZHNVNïDGDVLÚ
]QDJïöZNDSRF]ÈWNRZHJRX]XSHïQLRQHJR
OLF]EÈHOHPHQWöZ]QDMGXMÈF\FKVLÚQDOLĂFLH
2. 8DNWXDOQLHQLHQDJïöZND2GE\ZDVLÚWRSU]H]
XDNWXDOQLHQLH]DZDUWRĂFLHOHPHQWXQDJïöZND
]DSRPRFÈZïDĂFLZRĂFLinnerTextZÚ]ïD
QDJïöZND
OBIEKTOWY MODEL DOKUMENTU
247
PODSUMOWANIE
OBIEKTOWY MODEL DOKUMENTU
f 3U]HJOÈGDUNDLQWHUQHWRZDSU]HGVWDZLDVWURQÚ]DSRPRFÈ
GU]HZDPRGHOX'20
f 'U]HZRPRGHOX'20]DZLHUDF]WHU\W\S\ZÚ]ïöZĽGRFXPHQW
ZÚ]ï\HOHPHQWöZZÚ]ï\DWU\EXWöZLZÚ]ï\WHNVWRZH
f :Ú]ï\HOHPHQWöZPRĝQDZ\ELHUDÊ]DSRPRFÈLFKDWU\EXWöZ
id lub FODVVQD]Z\]QDF]QLNDEÈGěWHĝVNïDGQLVHOHNWRUD&66
f -HĝHOL]DS\WDQLHPRGHOX'20PRĝH]ZUöFLÊZLÚFHMQLĝW\ONR
MHGHQZÚ]HïWRZDUWRĂFLÈ]ZURWQÈ]DZV]HEÚG]LHNROHNFMD
NodeList.
f =SR]LRPXZÚ]ïDHOHPHQWXPRĝQDX]\VNDÊGRVWÚSGRMHJR
]DZDUWRĂFLLXDNWXDOQLÊMÈ]DSRPRFÈZïDĂFLZRĂFLWDNLFKMDN
textContent i innerHTMLOXEWHFKQLNRSHUDFMLQDPRGHOX
DOM.
f :Ú]HïHOHPHQWXPRĝH]DZLHUDÊZLHOHZÚ]ïöZWHNVWRZ\FK
DWDNĝHHOHPHQW\SRWRPQHNWöUHEÚGÈUöZQRU]ÚGQHZREHF
VLHELH
f :VWDUV]\FKSU]HJOÈGDUNDFKLQWHUQHWRZ\FKLPSOHPHQWDFMD
PRGHOX'20MHVWQLHVSöMQD WRMHGQRF]HĂQLHMHGHQ]W\SRZ\FK
SRZRGöZXĝ\FLDELEOLRWHNLM4XHU\ f 1DU]ÚG]LDZEXGRZDQHZSU]HJOÈGDUNDFKLQWHUQHWRZ\FK
SR]ZDODMÈQDZ\ĂZLHWODQLHGU]HZDPRGHOX'20
248 OBIEKTOWY MODEL DOKUMENTU
6
ZDARZENIA
.LHG\SU]HJOÈGDV]]DVRE\LQWHUQHWXSU]HJOÈGDUNDUHMHVWUXMH
UöĝQHJRW\SX]GDU]HQLDMDNE\]DXZDĝDïDķ+HMWRVLÚ
ZïDĂQLH]GDU]\ïRĵ7ZöMVNU\SWPRĝHQDVWÚSQLHUHDJRZDÊ
QDWH]GDU]HQLD
%DUG]RF]ÚVWRUHDNFMÈVNU\SWXQD]GDU]HQLDMHVWXDNWXDOQLDQLH]DZDUWRĂFLQDVWURQLHLQWHUQHWRZHM ]DSRPRFÈPRGHOX'20 FRXXĝ\WNRZQLNDZ\ZRïXMHZUDĝHQLHĝHVWURQDMHVWEDUG]LHM
LQWHUDNW\ZQD:W\PUR]G]LDOHGRZLHV]VLÚMDN
INTERAKCJE TWORZĄ
ZDARZENIA
ZDARZENIA
WYWOŁUJĄ KOD
=GDU]HQLDZ\VWÚSXMÈJG\
Xĝ\WNRZQLNNOLNQLHOXEQDFLĂQLHïÈF]HXPLHĂFLNXUVRU
QDGHOHPHQWHP]DF]QLH
ZSLV\ZDÊWHNVW]NODZLDWXU\
]PLHQLZLHONRĂÊRNQDOXEJG\
]RVWDQLHZF]\WDQDĝÈGDQD
SU]H]QLHJRVWURQD
.LHG\Z\VWÈSL]GDU]HQLH
PRĝHE\ÊZ\NRU]\VWDQH
GRZ\ZRïDQLDRNUHĂORQHM
IXQNFML5öĝQHURG]DMH
NRGXPRJÈE\ÊZ\ZRïDQH
JG\Xĝ\WNRZQLNSURZDG]L
LQWHUDNFMH]SRV]F]HJöOQ\PL
VHNFMDPLVWURQ\LQWHUQHWRZHM
250 ZDARZENIA
KOD REAGUJE
NA DZIAŁANIA
UŻYTKOWNIKA
:SRSU]HGQLPUR]G]LDOH
GRZLHG]LDïHĂVLÚMDN
PRGHO'20PRĝHE\Ê
Xĝ\W\GRXDNWXDOQLHQLDVWURQ\
LQWHUQHWRZHM=GDU]HQLD
PRJÈZ\ZRï\ZDÊ]PLDQ\
ZPRGHOX'20:WHQ
VSRVöEVWURQDUHDJXMHQD
G]LDïDQLDSRGHMPRZDQH
SU]H]Xĝ\WNRZQLND
ZDARZENIA
251
RÓŻNE TYPY ZDARZEŃ
3RQLĝHMSU]HGVWDZLRQRZ\EUDQH]GDU]HQLDZ\VWÚSXMÈFHZSU]HJOÈGDUFH
JG\SU]HJOÈGDV]]DVRE\LQWHUQHWX.DĝGH]W\FK]GDU]HñPRĝHE\Ê
Z\NRU]\VWDQHGRZ\ZRïDQLDIXQNFMLZNRG]LH-DYD6FULSW
ZDARZENIA UI
:\VWÚSXMÈJG\Xĝ\WNRZQLNSURZDG]LLQWHUDNFMH]JUDğF]Q\PLQWHUIHMVHPXĝ\WNRZQLND
DQJuser interfaceĽ8, SU]HJOÈGDUNLDQLH]HVDPÈVWURQÈ
ZDARZENIE
OPIS
load
=DNRñF]RQRZF]\W\ZDQLHVWURQ\LQWHUQHWRZHM
unload
6WURQDLQWHUQHWRZDMHVWXVXZDQD ]Z\NOH]SRZRGXSRMDZLHQLDVLÚĝÈGDQLDZF]\WDQLDQRZHM
VWURQ\ error
3U]HJOÈGDUNDLQWHUQHWRZDQDSRWNDïDEïÈG-DYD6FULSWOXE]DVöEQLHLVWQLHMH
resize
=PLHQLRQRZLHONRĂÊRNQDSU]HJOÈGDUNLLQWHUQHWRZHM
scroll
8ĝ\WNRZQLNSU]HZLQÈïVWURQÚZJöUÚOXEZGöï
ZDARZENIA KLAWIATURY
:\VWÚSXMÈJG\Xĝ\WNRZQLNSURZDG]LLQWHUDNFMH]NODZLDWXUÈ ]REDF]WDNĝH]GDU]HQLHinput ZDARZENIE
OPIS
keydown
8ĝ\WNRZQLNSRUD]SLHUZV]\QDFLVQÈïNODZLV] ]GDU]HQLHSRZWDU]DVLÚJG\NODZLV]SR]RVWDMH
QDFLĂQLÚW\ keyup
8ĝ\WNRZQLN]ZROQLïNODZLV]
keypress
1DVWÈSLïRZVWDZLHQLH]QDNX ]GDU]HQLHSRZWDU]DVLÚJG\NODZLV]SR]RVWDMHQDFLĂQLÚW\ ZDARZENIA MYSZY
:\VWÚSXMÈJG\Xĝ\WNRZQLNSURZDG]LLQWHUDNFMH]P\V]ÈJïDG]LNLHPOXEHNUDQHPGRW\NRZ\P
ZDARZENIE
OPIS
click
8ĝ\WNRZQLNQDFLVQÈïL]ZROQLïSU]\FLVNP\V]\QDGW\PVDP\PHOHPHQWHP
dblclick
8ĝ\WNRZQLNGZXNURWQLHQDFLVQÈïL]ZROQLïSU]\FLVNP\V]\QDGW\PVDP\PHOHPHQWHP
mousedown
8ĝ\WNRZQLNQDFLVQÈïSU]\FLVNP\V]\QDGHOHPHQWHP
mouseup
8ĝ\WNRZQLN]ZROQLïSU]\FLVNP\V]\QDGHOHPHQWHP
mousemove
8ĝ\WNRZQLNSU]HVXQÈïP\V] QLHGRW\F]\HNUDQXGRW\NRZHJR mouseover
8ĝ\WNRZQLNSU]HVXQÈïNXUVRUP\V]\QDGHOHPHQW QLHGRW\F]\HNUDQXGRW\NRZHJR mouseout
8ĝ\WNRZQLNSU]HVXQÈïNXUVRUP\V]\SR]DHOHPHQW QLHGRW\F]\HNUDQXGRW\NRZHJR 252 ZDARZENIA
TERMINOLOGIA
ZDARZENIA SĄ WYWOŁYWANE
2]GDU]HQLXPRĝQDSRZLHG]LHÊĝH]RVWDïR]JïRV]RQHOXEZ\ZRïDQH
*G\Xĝ\WNRZQLNNOLNQLHïÈF]H SDWU]U\VXQHNSRSUDZHMVWURQLH ZSU]HJOÈGDUFHLQWHUQHWRZHMQDVWÈSLZ\ZRïDQLH]GDU]HQLDclick
SKRYPTY SĄ WYWOŁYWANE PRZEZ ZDARZENIA
0öZLVLÚĝH]GDU]HQLDZ\ZRïXMÈIXQNFMÚOXEVNU\SW.LHG\
ZVSRPQLDQHSRZ\ĝHM]GDU]HQLHclick]RVWDQLHZ\ZRïDQHPRĝH
XUXFKRPLÊVNU\SWSRZLÚNV]DMÈF\Z\EUDQ\HOHPHQW
ZDARZENIA AKTYWNOŚCI
:\VWÚSXMÈJG\HOHPHQW QDSU]\NïDGïÈF]HOXESROHIRUPXODU]D
VLHFLRZHJR VWDMHVLÚDNW\ZQ\EÈGěQLHDNW\ZQ\
ZDARZENIE
OPIS
focus / focusin
(OHPHQWVWDMHVLÚDNW\ZQ\
blur / focusout
(OHPHQWVWDMHVLÚQLHDNW\ZQ\
ZDARZENIA FORMULARZY SIECIOWYCH
:\VWÚSXMÈJG\Xĝ\WNRZQLNSURZDG]LLQWHUDNFMH
]HOHPHQWHPIRUPXODU]DVLHFLRZHJR
ZDARZENIE
OPIS
input
=PLDQLHXOHJïDZDUWRĂÊZGRZROQ\PHOHPHQFLH<input>OXE<textarea> ,( EÈGěWHĝ
ZGRZROQ\PHOHPHQFLH]DZLHUDMÈF\PDWU\EXWcontenteditable
change
=PLDQLHXOHJïDZDUWRĂÊZHOHPHQFLH<select>SROXZ\ERUXOXESU]\FLVNXRSFML ,( submit
8ĝ\WNRZQLNZ\VïDïIRUPXODU]VLHFLRZ\ ]DSRPRFÈSU]\FLVNXOXENODZLV]D reset
8ĝ\WNRZQLNNOLNQÈïSU]\FLVN]HUXMÈF\IRUPXODU]VLHFLRZ\ REHFQLHU]DGNRVWRVRZDQ\ cut
8ĝ\WNRZQLNZ\FLÈï]DZDUWRĂÊ]SRODIRUPXODU]DVLHFLRZHJR
copy
8ĝ\WNRZQLNVNRSLRZDï]DZDUWRĂÊ]SRODIRUPXODU]DVLHFLRZHJR
paste
8ĝ\WNRZQLNZNOHLï]DZDUWRĂÊGRSRODIRUPXODU]DVLHFLRZHJR
select
8ĝ\WNRZQLN]D]QDF]\ïSHZLHQWHNVWZSROXIRUPXODU]DVLHFLRZHJR
ZDARZENIA DOTYCZĄCE ZMIAN*
:\VWÚSXMÈJG\QDVWÈSL]PLDQDVWUXNWXU\PRGHOX'20
QDVNXWHNG]LDïDQLDVNU\SWX
%ÚGÈ]DVWÈSLRQHSU]H]REVHUZDWRU\]PLDQ SDWU]SRGUR]G]LDïķ=GDU]HQLDGRW\F]ÈFH]PLDQLREVHUZDWRU\ĵ ZDARZENIE
OPIS
'206XEWUHH0RGLğHG
:SURZDG]RQR]PLDQÚZGRNXPHQFLH
DOMNodeInserted
:Ú]Hï]RVWDïZVWDZLRQ\MDNREH]SRĂUHGQLHOHPHQWSRWRPQ\LQQHJRZÚ]ïD
DOMNodeRemoved
:Ú]Hï]RVWDïXVXQLÚW\]LQQHJRZÚ]ïD
DOMNodeInsertedIntoDocument
:Ú]Hï]RVWDïZVWDZLRQ\MDNRHOHPHQWSRWRPQ\LQQHJRZÚ]ïD
DOMNodeRemovedFromDocument
:Ú]Hï]RVWDïXVXQLÚW\MDNRHOHPHQWSRWRPQ\LQQHJRZÚ]ïD
ZDARZENIA 253
JAK ZDARZENIA WYWOŁUJĄ
KOD JAVASCRIPT?
.LHG\Xĝ\WNRZQLNSURZDG]LLQWHUDNFMH]NRGHP+70/QDVWURQLHLQWHUQHWRZHM
PDP\WU]\NURNLSURZDG]ÈFHGRZ\ZRïDQLDSHZQHJRNRGX-DYD6FULSW5D]HP
WHNURNLVÈRNUHĂODQHPLDQHPSURFHGXU\REVïXJL]GDU]Hñ
1.
2.
3.
:\ELHU]ZÚ]Hï
HOHPHQWXGRNWöUHJR
VNU\SWPDSU]HVïDÊ
RGSRZLHGě
:VNDĝ]GDU]HQLH
NWöUHZZ\EUDQ\P
HOHPHQFLHVSRZRGXMH
XG]LHOHQLHRGSRZLHG]L
=GHğQLXMNRG
XUXFKDPLDQ\
SRZ\VWÈSLHQLX
]GDU]HQLD
-HĂOLQDSU]\NïDGFKFHV]
Z\ZRïDÊIXQNFMÚJG\Xĝ\WNRZQLNNOLNQLHRNUHĂORQHïÈF]HWR
PXVLV]SREUDÊZÚ]HïPRGHOX
'20GODHOHPHQWXWHJRïÈF]D
:W\PFHOXQDOHĝ\Z\NRU]\VWDÊ
RPöZLRQHZUR]G]LDOH ]DS\WDQLHPRGHOX'20
3URJUDPLĂFLQD]\ZDMÈWR
GRïÈF]HQLHP]GDU]HQLDGR
ZÚ]ïDPRGHOX'20
.LHG\RNUHĂORQH]GDU]HQLH
Z\VWÈSLZHZVND]DQ\P
HOHPHQFLH]RVWDQLHZ\ZRïDQD
IXQNFMD0RĝHWRE\ÊIXQNFMD
QD]ZDQDOXEDQRQLPRZD
=GDU]HQLDLQWHUIHMVXXĝ\WNRZQLNDSRZLÈ]DQH]RNQHP
SU]HJOÈGDUNLLQWHUQHWRZHM
DQLH]ZF]\WDQÈZQLPVWURQÈ
+70/ G]LDïDMÈ]RELHNWHP
window]DPLDVW]ZÚ]ïHP
HOHPHQWX3U]\NïDGHPPRJÈ
E\Ê]GDU]HQLD]DFKRG]ÈFHSR
]DNRñF]HQLXZF]\W\ZDQLDĝÈGDQHMVWURQ\OXESRMHMSU]HZLQLÚFLXSU]H]Xĝ\WNRZQLND:LÚFHM
LQIRUPDFMLRW\FK]GDU]HQLDFK
]QDMG]LHV]ZSRGUR]G]LDOHķ=GDU]HQLDLQWHUIHMVXXĝ\WNRZQLNDĵ
3HZQH]GDU]HQLDG]LDïDMÈ
ZZLÚNV]RĂFLZÚ]ïöZHOHPHQWöZ3U]\NïDGHPPRĝHE\Ê
]GDU]HQLHmouseoverNWöUHMHVW
Z\ZRï\ZDQHSRXPLHV]F]HQLX
NXUVRUDP\V]\QDGGRZROQ\P
HOHPHQWHP=NROHLLQQH
]GDU]HQLDG]LDïDMÈW\ONR]RNUHĂORQ\PLZÚ]ïDPLHOHPHQWöZ
3U]\NïDGHPMHVW]GDU]HQLH
submitNWöUHG]LDïDMHG\QLH
]IRUPXODU]HPVLHFLRZ\P
254 ZDARZENIA
1DSRSU]HGQLFKGZöFK
VWURQDFKZ\PLHQLRQRQDMSRSXODUQLHMV]H]GDU]HQLDSRGNÈWHP
NWöU\FKPRĝQDPRQLWRURZDÊ
Z\EUDQ\HOHPHQW
3RQLĝHMSRND]DQRMDNSURFHGXUDREVïXJL]GDU]HñPRĝHE\ÊZ\NRU]\VWDQD
ZFHOXGRVWDUF]HQLDXĝ\WNRZQLNRZLLQIRUPDFMLJG\Z\SHïQLDRQIRUPXODU]
UHMHVWUDF\MQ\-HĝHOLQD]ZDXĝ\WNRZQLNDEÚG]LH]E\WNUöWNDWR]RVWDQLHZ\ĂZLHWORQ\NRPXQLNDWREïÚG]LH
1.
2.
3.
WYBÓR ELEMENTU
WSKAZANIE
ZDARZENIA
WYWOŁANIE
KODU
.LHG\Xĝ\WNRZQLNRSXĂFLZVSRPQLDQHSROHWHNVWRZHVWDQLH
VLÚRQRQLHDNW\ZQHLGODGDQHJR
HOHPHQWX]RVWDQLHZ\ZRïDQH
]GDU]HQLHblur
3RZ\ZRïDQLX]GDU]HQLD
blurGODSRODWHNVWRZHJR
SR]ZDODMÈFHJRQDSRGDQLH
QD]Z\Xĝ\WNRZQLNDQDVWÈSL
Z\ZRïDQLHIXQNFMLRQD]ZLH
checkUsername())XQNFMDWD
VSUDZG]DF]\QD]ZDXĝ\WNRZQLNDPDPQLHMQLĝ]QDNöZ
(OHPHQW]NWöU\PEÚG]LH
SUDFRZDïXĝ\WNRZQLNWRSROH
WHNVWRZHSU]H]QDF]RQHQD
QD]ZÚXĝ\WNRZQLND
2
1
Zdarzenie: blur w polu tekstowym dla nazwy użytkownika
Funkcja: checkUsername()
Sprawdza, czy nazwa użytkownika
jest wystarczająco długa
3
Pobranie nazwy użytkownika
N
Czy nazwa użytkownika
ma mniej niż pięć znaków?
Usuń komunikat
T
Wyświetl komunikat o błędzie
-HĝHOLQD]ZDXĝ\WNRZQLNDQLH
PDZ\VWDUF]DMÈFRGXĝHMOLF]E\
]QDNöZQDHNUDQLHEÚG]LH
Z\ĂZLHWORQ\RGSRZLHGQLNRPXQLNDWREïÚG]LHDLQWHUQDXWD
SRZLQLHQSRGDÊGïXĝV]ÈQD]ZÚ
Xĝ\WNRZQLND
-HĝHOLQD]ZDXĝ\WNRZQLND
zawieraRGSRZLHGQLÈOLF]EÚ
]QDNöZWRHOHPHQWSU]HFKRZXMÈF\NRPXQLNDWREïÚG]LH
SRZLQLHQE\ÊXVXQLÚW\
:\QLNDWR]IDNWXĝHNRPXQLNDW
WHQPöJï]RVWDÊZF]HĂQLHMZ\ĂZLHWORQ\Xĝ\WNRZQLNRZLNWöU\
QDVWÚSQLHSRSUDZLïEïÈG -HĝHOL
NRPXQLNDWEÚG]LHQDGDOZ\ĂZLHWODQ\SRPLPRĝHIRUPXODU]
EÚG]LHSRSUDZQLHZ\SHïQLRQ\
WREÚG]LHWRGH]RULHQWXMÈFHGOD
Xĝ\WNRZQLND ZDARZENIA 255
TRZY SPOSOBY DOŁĄCZANIA
ZDARZENIA DO ELEMENTU
3URFHGXU\REVïXJL]GDU]HñSR]ZDODMÈZVND]DÊQDNWöUH]GDU]HQLHRF]HNXMH
SHZLHQNRQNUHWQ\HOHPHQW0DP\WU]\URG]DMHSURFHGXUREVïXJL]GDU]Hñ
PROCEDURY OBSŁUGI
ZDARZEŃ W HTML
3DWU]SRGUR]G]LDïķ3URFHGXU\
REVïXJL]GDU]HñZDWU\EXWDFK
+70/ĵ 7R]ïDSUDNW\NDDOHPXVLV]
PLHÊĂZLDGRPRĂÊMHMLVWQLHQLDSRQLHZDĝWHJRURG]DMX
UR]ZLÈ]DQLHPRĝQDVSRWNDÊ
ZVWDUV]\PNRG]LH
:F]HVQHZHUVMH+70/]DZLHUDï\]ELöUDWU\EXWöZ]ZLÈ]DQ\FK
]UHDJRZDQLHPQD]GDU]HQLD
ZHOHPHQFLHGRNWöUHJR]RVWDï\
GRGDQH1D]Z\DWU\EXWöZRGSRZLDGDï\QD]ZRP]GDU]Hñ,FK
ZDUWRĂFLZ\ZRï\ZDï\IXQNFMH
SU]H]QDF]RQHGRZ\NRQDQLDSR
Z\VWÈSLHQLXGDQHJR]GDU]HQLD
1DSU]\NïDGNRGZSRVWDFL
<a onclick=”hide()”>
ZVND]XMHĝHSRNOLNQLÚFLXWHJR
HOHPHQWX<a>SU]H]Xĝ\WNRZQLNDQDVWÈSLZ\ZRïDQLHIXQNFML
hide()
7DNDPHWRGDREVïXJL]GDU]Hñ
QLHSRZLQQDE\ÊGïXĝHM
VWRVRZDQDSRQLHZDĝOHSV]\P
UR]ZLÈ]DQLHPEÚG]LHRGG]LHOHQLHNRGX-DYD6FULSWRG+70/
=DPLDVWWHJRSRZLQLHQHĂ
Xĝ\ZDÊMHGQHJR]GZöFKSR]RVWDï\FKSRGHMĂÊZ\PLHQLRQ\FK
QDVWURQLH
256 ZDARZENIA
TRADYCYJNE PROCEDURY
OBSŁUGI ZDARZEŃ
W MODELU DOM
3DWU]SRGUR]G]LDïķ7UDG\F\MQH
SURFHGXU\REVïXJL]GDU]Hñ
ZPRGHOX'20ĵ 3URFHGXU\REVïXJL]GDU]Hñ
ZPRGHOX'20]RVWDï\
ZSURZDG]RQHZSLHUZRWQHM
VSHF\ğNDFMLPRGHOX'206È
X]QDZDQH]DOHSV]HUR]ZLÈ]DQLH
QLĝSURFHGXU\REVïXJL]GDU]Hñ
Z+70/SRQLHZDĝSR]ZDODMÈ
QDUR]G]LHOHQLHNRGX-DYD6FULSW
L+70/
3RGHMĂFLHWRMHVWGRVNRQDOH
REVïXJLZDQHSU]H]ZV]\VWNLH
QDMZDĝQLHMV]HSU]HJOÈGDUNL
LQWHUQHWRZH3RGVWDZRZÈZDGÈ
MHVWPRĝOLZRĂÊSU]\SLVDQLD
GRZROQHPX]GDU]HQLXW\ONR
MHGQHMIXQNFML1DSU]\NïDG
]GDU]HQLHsubmitIRUPXODU]D
VLHFLRZHJRQLHPRĝHZ\ZRïDÊ
MHGQHMIXQNFMLSU]H]QDF]RQHMGR
VSUDZG]HQLD]DZDUWRĂFLIRUPXODU]DRUD]GUXJLHMZ\V\ïDMÈFHM
GDQHIRUPXODU]DVLHFLRZHJR
MHĂOLLFKZHU\ğNDFMD]DNRñF]\ïD
VLÚSRZRG]HQLHP
:Z\QLNXZ\PLHQLRQHJR
RJUDQLF]HQLDMHĂOLQDWHMVDPHM
VWURQLHVÈXĝ\ZDQHGZDVNU\SW\
OXEZLÚNV]DLFKOLF]ED LRED
XG]LHODMÈRGSRZLHG]LQDWR
VDPR]GDU]HQLH]DUöZQRMHGHQ
MDNLGUXJLPRĝHQLHG]LDïDÊ
]JRGQLH]RF]HNLZDQLDPL
OBSERWATORY ZDARZEŃ
(DOM LEVEL 2)
3DWU]SRGUR]G]LDïķ2EVHUZDWRU\
]GDU]Hñĵ 2EVHUZDWRU\]GDU]HñZSURZDG]RQRZVSHF\ğNDFMLPRGHOX
'20 Z\GDQDZURNX
VSHF\ğNDFMD'20/HYHO 2EHFQLHMHVWWR]DOHFDQ\VSRVöE
REVïXJL]GDU]Hñ
6NïDGQLDMHVWFDïNLHPLQQD
:SU]HFLZLHñVWZLHGRWUDG\F\MQ\FKSURFHGXUREVïXJL]GDU]Hñ
REVHUZDWRU\WHSR]ZDODMÈ
DE\MHGQR]GDU]HQLHZ\ZRïDïR
ZLHOHIXQNFML'ODWHJRWHĝ
LVWQLHMH]QDF]QLHPQLHMV]H
QLHEH]SLHF]HñVWZRZ\VWÈSLHQLD
NRQĠLNWöZPLÚG]\UöĝQ\PL
VNU\SWDPLG]LDïDMÈF\PLQDWHM
VDPHMVWURQLH
7HFKQLNDWDQLHG]LDïD
ZSU]HJOÈGDUFHLQWHUQHWRZHM
,( RUD]ZF]HĂQLHMV]\FK
Z\GDQLDFK,( DOHRGSRZLHGQLH
REHMĂFLHWHJRSUREOHPXEÚG]LH
SU]HGVWDZLRQHZSRGUR]G]LDOH
ķ2EVïXJDZVWDUV]\FKZHUVMDFK
SU]HJOÈGDUNL,QWHUQHW([SORUHUĵ
5öĝQLFHZRIHURZDQHMSU]H]
SRV]F]HJöOQHSU]HJOÈGDUNLLQWHUQHWRZHREVïXG]HPRGHOX'20
L]GDU]Hñ]QDF]QLHSU]\VSLHV]\ï\
DGDSWDFMÚELEOLRWHNLM4XHU\
MHGQDNPXVLV]ZLHG]LHÊQD
F]\PSROHJDMÈ]GDU]HQLDDE\
]UR]XPLHÊZMDNLVSRVöEVÈ
Xĝ\ZDQHSU]H]M4XHU\ PROCEDURY OBSŁUGI ZDARZEŃ
W ATRYBUTACH HTML
(NIE UŻYWAJ TEGO ROZWIĄZANIA)
8ZDJD3U]HGVWDZLRQHWXWDM
SRGHMĂFLHMHVWWHUD]X]QDZDQH
]D]ïÈSUDNW\NÚ-HGQDN
PXVLV]PLHÊĂZLDGRPRĂÊMHM
LVWQLHQLDSRQLHZDĝWHJRURG]DMX
UR]ZLÈ]DQLHPRĝQDVSRWNDÊ
ZVWDUV]\PNRG]LH SDWU]
SRSU]HGQLDVWURQD :NRG]LH+70/SLHUZV]\
HOHPHQW<input>PDDWU\EXW
RQD]ZLHonblur Z\ZRï\ZDQ\
JG\Xĝ\WNRZQLNRSXĂFLGDQ\
HOHPHQW :DUWRĂFLÈDWU\EXWX
MHVWQD]ZDIXQNFMLNWöUD
SRZLQQDE\ÊZ\NRQDQD
:DUWRĂFLÈDWU\EXWöZSURFHGXU\
REVïXJL]GDU]HñEÚG]LHNRG
-DYD6FULSW%DUG]RF]ÚVWR
Z\ZRï\ZDQDMHVWIXQNFMD
NWöUD]RVWDïD]GHğQLRZDQD
ZHOHPHQFLH<head>OXEWHĝ
RGG]LHOQ\PSOLNX-DYD6FULSW
MDNSU]HGVWDZLRQRSRQLĝHM c06/event-attributes.html
HTML
<form method=”post” action=”http://www.example.org/register”>
<label for=”username”>3RGDMQD]ZÚXĝ\WNRZQLND </label>
<input type=”text” id=”username” onblur=”checkUsername()” />
<div id=”feedback”></div>
<label for=”password”>3RGDMKDVïR </label>
<input type=”password” id=”password” />
<input type=”submit” value=”Zarejestruj!” />
</form>
...
<script type=”text/javascript” src=”js/event-attributes.js”></script>
c06/js/event-attributes.js
JAVASCRIPT
function checkUsername() {
// Deklaracja funkcji.
var elMsg = document.getElementById(’feedback’);
// Pobranie elementu feedback.
var elUsername = document.getElementById(’username’);
3REUDQLHQD]Z\Xĝ\WNRZQLND
if (elUsername.value.length < 5) {
-HĝHOLQD]ZDXĝ\WNRZQLNDMHVW]E\WNUöWND
HO0VJWH[W&RQWHQW ij1D]ZDXĝ\WNRZQLNDPXVLPLHÊSU]\QDMPQLHM]QDNöZij
// Komunikat.
} else {
// W przeciwnym razie.
elMsg.textContent = ’’;
8VXQLÚFLHNRPXQLNDWX
}
}
1D]Z\DWU\EXWöZSURFHGXU\REVïXJL
]GDU]HñZ+70/VÈLGHQW\F]QH
]QD]ZDPL]GDU]HñZ\PLHQLRQ\FK
ZSRGUR]G]LDïDFKķ5öĝQHW\S\
]GDU]HñĵLķ7HUPLQRORJLDĵDOHVÈ
SRSU]HG]RQHSU]HGURVWNLHPon
1DSU]\NïDG
HOHPHQW\<a>PRJÈPLHÊ]GDU]HQLDonclickonmouseover
onmouseout;
HOHPHQW\<form>PRJÈPLHÊ]GDU]HQLDonsubmit;
HOHPHQW\<input>PRJÈPLHÊ]GDU]HQLDonkeypress
onfocusonblus
ZDARZENIA 257
ľ
ľ
ľ
TRADYCYJNE PROCEDURY
OBSŁUGI ZDARZEŃ
W MODELU DOM
:V]\VWNLHQRZRF]HVQHSU]HJOÈGDUNLLQWHUQHWRZHSRWUDğÈREVïXJLZDÊWHQ
VSRVöEWZRU]HQLDSURFHGXUREVïXJL]GDU]HñDOHGRNDĝGHM]QLFKPRĝQD
GRïÈF]\ÊW\ONRMHGQÈIXQNFMÚ
3RQLĝHMSU]HGVWDZLRQRVNïDGQLÚGRïÈF]DQLD]GDU]HQLDGRHOHPHQWX]D
SRPRFÈSURFHGXU\REVïXJL]GDU]Hñ:VND]\ZDQDMHVWIXQNFMDNWöUD
SRZLQQD]RVWDÊZ\NRQDQDSRZ\VWÈSLHQLXGDQHJR]GDU]HQLD
element.onzdarzenie = nazwaFunkcji;
ELEMENT
ZDARZENIE
KOD
Węzeł elementu
w modelu DOM.
Poprzedzone przedrostkiem on zdarzenie
dołączone do węzła.
Nazwa funkcji przeznaczonej
do wywołania
(bez nawiasu na końcu).
:SRQLĝV]\PIUDJPHQFLHNRGX
SURFHGXUDREVïXJL]GDU]Hñ
MHVWZ\ZRï\ZDQDZRVWDWQLP
ZLHUV]X SR]GHğQLRZDQLX
IXQNFMLRUD]Z\ERU]HHOHPHQWX
ZPRGHOX'20 Odniesienie
do węzła
elementu
w modelu
DOM jest
często przechowywane
w zmiennej.
.LHG\IXQNFMDMHVWZ\ZRï\ZDQD
QDZLDV]QDMGXMÈF\VLÚQDNRñFX
MHMQD]Z\QDND]XMHLQWHUSUHWHURZLķ8UXFKRPWHUD]WHQNRGĵ
3RQLHZDĝQLHFKFHP\XUXFKDPLDÊNRGXSU]HGZ\VWÈSLHQLHP
]GDU]HQLDQDZLDVMHVWSRPLQLÚW\ZSURFHGXU]HREVïXJL]GDU]Hñ
SRND]DQHMZRVWDWQLPZLHUV]X
function checkUsername() {
.RGVSUDZG]DMÈF\OLF]EÚ]QDNöZZQD]ZLHXĝ\WNRZQLND
}
var el = document.getElementById(’username’);
el.onblur = checkUsername;
Nazwa zdarzenia jest poprzedzona
przedrostkiem on.
Na początku
kodu znajduje się
definicja nazwanej
funkcji.
Funkcja jest
wywoływana przez
procedurę obsługi
zdarzeń w ostatnim wierszu, ale
nawias został
pominięty.
3U]\NïDG\]DVWRVRZDQLDIXQNFMLDQRQLPRZHMLIXQNFMLZUD]]SDUDPHWUDPL]RVWDQÈSU]HGVWDZLRQH
ZSRGUR]G]LDOHķ8ĝ\FLHSDUDPHWUöZZSURFHGXUDFKREVïXJL]GDU]HñLREVHUZDWRUDFK]GDU]Hñĵ
258 ZDARZENIA
UŻYCIE PROCEDURY OBSŁUGI
ZDARZEŃ W MODELU DOM
:SRQLĝV]\PSU]\NïDG]LHSURFHGXUDREVïXJL]GDU]Hñ]QDMGXMH
VLÚZRVWDWQLPZLHUV]XNRGX
-DYD6FULSW3U]HG]DVWRVRZDQLHPSURFHGXU\REVïXJL]GDU]Hñ
ZPRGHOX'20WU]HEDZ\NRQDÊ
GZDNURNL
-HĝHOLSRZ\VWÈSLHQLX
]GDU]HQLDZHZVND]DQ\P
ZÚěOHZPRGHOX'20PDE\Ê
Z\ZRïDQDQD]ZDQDIXQNFMDWR
QDMSLHUZWU]HED]GHğQLRZDÊMHM
NRG ,VWQLHMHPRĝOLZRĂÊXĝ\FLD
WDNĝHIXQNFMLDQRQLPRZHM :RVWDWQLPZLHUV]XNRGX
RPDZLDQHJRSU]\NïDGX
SURFHGXUDREVïXJL]GDU]Hñ
elUsername.onblurZVND]XMH
ĝHNRGRF]HNXMHQDZ\VWÈSLHQLH
]GDU]HQLDblurZHOHPHQFLH
SU]HFKRZ\ZDQ\PSU]H]
]PLHQQÈRQD]ZLHelUsername
:Ú]HïHOHPHQWXPRGHOX'20
MHVWSU]HFKRZ\ZDQ\Z]PLHQQHM:RPDZLDQ\PSU]\NïDG]LH
SROHWHNVWRZH NWöUHJRDWU\EXW
idPDZDUWRĂÊusername ]RVWDMHXPLHV]F]RQHZ]PLHQQHM
RQD]ZLHelUsername
1DVWÚSQLHPDP\]QDNUöZQRĂFL
LGDOHMQD]ZÚIXQNFMLNWöUD
]RVWDQLHZ\NRQDQDSRZ\VWÈSLHQLX]GDU]HQLDZHZVND]DQ\P
HOHPHQFLH=ZUöÊXZDJÚQD
EUDNQDZLDVXSRQD]ZLHIXQNFML
2]QDF]DWREUDNPRĝOLZRĂFL
JAVASCRIPT
1
2
3
3RGF]DVXĝ\ZDQLDSURFHGXU
REVïXJL]GDU]HñQD]ZD]GDU]HQLDMHVWSRSU]HG]DQDSUHğNVHP
on PDP\ZLÚFonsubmit
onchangeonfocusonblur
onmouseoveronmouseoutLWG c06/js/event-handler.js
function checkUsername() {
// Deklaracja funkcji.
var elMsg = document.getElementById(’feedback’);
// Pobranie elementu feedback.
if (this.value.length < 5) {
-HĝHOLQD]ZDXĝ\WNRZQLNDMHVW]E\WNUöWND
elMsg.textContent =
ij1D]ZDXĝ\WNRZQLNDPXVLPLHÊSU]\QDMPQLHM]QDNöZij
// Komunikat.
} else {
// W przeciwnym razie.
elMsg.textContent = ’’;
8VXQLÚFLHNRPXQLNDWX
}
}
var elUsername = document.getElementById(’username’);
3REUDQLHSRODWHNVWRZHJRXVHUQDPH
elUsername.onblur = checkUsername;
*G\VWDQLHVLÚQLHDNW\ZQHQDOHĝ\Z\ZRïDÊIXQNFMÚ
FKHFN8VHUQDPH SU]HND]DQLDDUJXPHQWöZGRWHM
IXQNFML -HĝHOLFKFHV]SU]HND]DÊ
DUJXPHQW\IXQNFMLZ\ZRï\ZDQHM
ZSURFHGXU]HREVïXJL]GDU]Hñ
]HUNQLMGRSRGUR]G]LDïXķ8ĝ\FLH
SDUDPHWUöZZSURFHGXUDFK
REVïXJL]GDU]HñLREVHUZDWRUDFK
]GDU]Hñĵ .RG+70/SR]RVWDMHWDNLVDP
MDNSU]HGVWDZLRQ\ZSRGUR]G]LDOHķ3URFHGXU\REVïXJL
]GDU]HñZDWU\EXWDFK+70/ĵ
DOHMHVWSR]EDZLRQ\DWU\EXWX
onblur3URFHGXUDREVïXJL]GDU]Hñ]QDMGXMHVLÚZLÚFZNRG]LH
-DYD6FULSWDQLH+70/
2EVïXJDZSU]HJOÈGDUNDFK
ZZLHUV]XIXQNFMD
checkUsername()Xĝ\ZDVïRZD
NOXF]RZHJRthisZSROHFHQLX
ZDUXQNRZ\PDE\VSUDZG]LÊ
OLF]EÚ]QDNöZZSURZDG]RQ\FK
SU]H]Xĝ\WNRZQLND3U]HGVWDZLRQ\SU]\NïDGG]LDïDZZLÚNV]RĂFL
SU]HJOÈGDUHNLQWHUQHWRZ\FK
SRQLHZDĝZLHG]ÈRQHĝH
thisRGQRVLVLÚGRHOHPHQWX
ZNWöU\PZ\VWÈSLïR]GDU]HQLH
-HGQDNZSU]HJOÈGDUFH,QWHUQHW([SORUHURUD]ZF]HĂQLHMV]\FKVïRZRNOXF]RZH thisMHVW
WUDNWRZDQHMDNRRGQLHVLHQLHGR
RELHNWXwindow:Z\QLNXWHJR
SU]HJOÈGDUNDQLHZLHZNWöU\P
HOHPHQFLHZ\VWÈSLïR]GDU]HQLH7RR]QDF]DEUDNZDUWRĂFLGR
VSUDZG]HQLDLZ\JHQHURZDQLH
NRPXQLNDWXREïÚG]LH5R]ZLÈ]DQLHWHJRSUREOHPX]RVWDQLH
SU]HGVWDZLRQHZSRGUR]G]LDOH
ķ2ELHNW]GDU]HQLDZSU]HJOÈGDUFH,QWHUQHW([SORUHUļĵ
ZDARZENIA OBSERWATORY ZDARZEŃ
2EVHUZDWRU\]GDU]HñWRQDMQRZV]HSRGHMĂFLHZ]DNUHVLHSURFHGXUREVïXJL
]GDU]Hñ']LÚNLQLPPRĝQDSU]\SLVDÊ]GDU]HQLXZLHOHIXQNFML
DOHMHGQRF]HĂQLHREVHUZDWRU\]GDU]HñQLHVÈREVïXJLZDQHZVWDUV]\FK
ZHUVMDFKSU]HJOÈGDUHNLQWHUQHWRZ\FK
3RQLĝHMSU]HGVWDZLRQRVNïDGQLÚGRïÈF]DQLD]GDU]HQLDGRHOHPHQWX
]DSRPRFÈREVHUZDWRUD]GDU]Hñ:VND]\ZDQDMHVWIXQNFMDNWöUD
SRZLQQD]RVWDÊZ\NRQDQDSRZ\VWÈSLHQLXGDQHJR]GDU]HQLD
Dodaje ona obserwatora zdarzeń do węzła elementu w modelu DOM.
METODA
element.addEventListener(’zdarzenie’, nazwaFunkcji > ZDUWRĂÊBERRORZVND]);
ELEMENT
ZDARZENIE
KOD
PRZEPŁYW ZDARZEŃ
Węzeł elementu
w modelu DOM.
Zdarzenie dołączane do węzła, ujęte
w znaki cytowania.
Nazwa funkcji
przeznaczonej
do wywołania.
Wskazuje sposób przepływu zdarzeń. Najczęściej
ma przypisaną wartość
false (patrz podrozdział
„Przepływ zdarzeń”).
Odniesienie
do węzła
elementu
w modelu DOM
jest często
przechowywane w zmiennej.
function checkUsername() {
.RGVSUDZG]DMÈF\OLF]EÚ]QDNöZZQD]ZLHXĝ\WNRZQLND
}
var el = document.getElementById(’username’);
el.addEventListener(’blur’, checkUsername, false);
Nazwa zdarzenia jest ujęta w znaki cytowania.
Na początku
kodu znajduje
się definicja
nazwanej
funkcji.
Funkcja jest wywoływana
przez obserwatora zdarzeń
w ostatnim wierszu, ale nawias
został pominięty.
3U]\NïDG\]DVWRVRZDQLDIXQNFMLDQRQLPRZHMLIXQNFMLZUD]]SDUDPHWUDPL]RVWDQÈSU]HGVWDZLRQH
ZSRGUR]G]LDOHķ8ĝ\FLHSDUDPHWUöZZSURFHGXUDFKREVïXJL]GDU]HñLREVHUZDWRUDFK]GDU]Hñĵ
260 ZDARZENIA
UŻYCIE OBSERWATORA ZDARZEŃ
:SRQLĝV]\PSU]\NïDG]LH
REVHUZDWRU]GDU]HñSRMDZLD
VLÚZRVWDWQLPZLHUV]XNRGX
-DYD6FULSW3U]HG]DVWRVRZDQLHPREVHUZDWRUD]GDU]Hñ
ZPRGHOX'20WU]HEDZ\NRQDÊ
GZDNURNL
-HĝHOLSRZ\VWÈSLHQLX
]GDU]HQLDZHZVND]DQ\P
ZÚěOHZPRGHOX'20PDE\Ê
Z\ZRïDQDQD]ZDQDIXQNFMDWR
QDMSLHUZWU]HED]GHğQLRZDÊMHM
NRG ,VWQLHMHPRĝOLZRĂÊXĝ\FLD
WDNĝHIXQNFMLDQRQLPRZHM :Ú]HïHOHPHQWXPRGHOX'20
MHVWSU]HFKRZ\ZDQ\Z]PLHQQHM:RPDZLDQ\PSU]\NïDG]LH
SROHWHNVWRZH NWöUHJRDWU\EXW
idPDZDUWRĂÊusername ]RVWDMHXPLHV]F]RQHZ]PLHQQHM
RQD]ZLHelUsername
JAVASCRIPT
1
2
0HWRGDaddEventListener()
SRELHUDWU]\ZïDĂFLZRĂFL
L 2EVHUZRZDQH]GDU]HQLH
:RPDZLDQ\PSU]\NïDG]LHWR
MHVW]GDU]HQLHblur
LL .RGSU]H]QDF]RQ\GRZ\NRQDQLDSRZ\ZRïDQLX]GDU]HQLD
:RPDZLDQ\PSU]\NïDG]LHWR
MHVWIXQNFMDcheckUsername()
=ZUöÊXZDJÚQDEUDNQDZLDVöZ
ZW\PPLHMVFXSRQLHZDĝ
R]QDF]Dï\E\RQHXUXFKRPLHQLH
IXQNFMLSRGF]DVZF]\WDQLD
VWURQ\ ]DPLDVWSRZ\VWÈSLHQLX
]GDU]HQLD LLL :DUWRĂÊERRORZVNDZVND]XMÈFDQDVSRVöESU]HSï\ZX
]GDU]HñSDWU]SRGUR]G]LDï
ķ3U]HSï\Z]GDU]Hñĵ ]UHJXï\
EÚG]LHWRZDUWRĂÊfalse c06/js/event-listener.js
function checkUsername() {
// Deklaracja funkcji.
var elMsg = document.getElementById(’feedback’);
// Pobranie elementu feedback.
if (this.value.length < 5) {
-HĝHOLQD]ZDXĝ\WNRZQLNDMHVW]E\WNUöWND
elMsg.textContent =
ij1D]ZDXĝ\WNRZQLNDPXVLPLHÊSU]\QDMPQLHM]QDNöZij
// Komunikat.
} else {
// W przeciwnym razie.
elMsg.textContent = ’’;
8VXQLÚFLHNRPXQLNDWX
}
}
var elUsername = document.getElementById(’username’);
3REUDQLHSRODWHNVWRZHJRXVHUQDPH
*G\VWDQLHVLÚQLHDNW\ZQHQDOHĝ\Z\ZRïDÊIXQNFMÚ
FKHFN8VHUQDPH elUsername.addEventListener(’blur’, checkUsername,
i
ii
false);
iii
OBSŁUGA
W PRZEGLĄDARKACH
INTERNETOWYCH
,QWHUQHW([SORUHULZF]HĂQLHMV]HZHUVMHQLHREVïXJXMÈ
PHWRG\addEventListener()
1DWRPLDVWREVïXJXMÈPHWRGÚ
RQD]ZLHaddEventListener()
NWöUHMSU]\NïDGXĝ\FLD]RVWDQLH
SU]HGVWDZLRQ\ZSRGUR]G]LDOH
ķ2EVïXJDZVWDUV]\FKZHUVMDFK
SU]HJOÈGDUNL,QWHUQHW([SORUHUĵ
3RQDGWRSRGREQLHMDNZSRSU]HGQLPSU]\NïDG]LHSU]HJOÈGDUND,(LZF]HĂQLHMV]HMHM
Z\GDQLDQLHZLHG]ÈGRF]HJR
RGZRïXMHVLÚVïRZRNOXF]RZH
thisZSROHFHQLXZDUXQNRZ\P$OWHUQDW\ZQHSRGHMĂFLH
SR]ZDODMÈFHQDUR]ZLÈ]DQLH
WHJRSUREOHPX]RVWDQLH
]DSUH]HQWRZDQHZSRGUR]G]LDOH
ķ:NWöU\PHOHPHQFLHZ\VWÈSLïR
]GDU]HQLH"ĵ
NAZWY ZDARZEŃ
,QDF]HMQLĝZSU]\SDGNXSURFHGXUREVïXJL]GDU]HñZ+70/
RUD]WUDG\F\MQ\FKSURFHGXU
REVïXJL]GDU]HñZPRGHOX
'20JG\EÚG]LHP\SRGDZDÊ
QD]ZÚ]GDU]HQLDQDNWöUH
EÚG]LHUHDJRZDïNRGQLH
EÚG]LHP\PXVLHOLSRSU]HG]DÊ
MHMSU]HGURVWNLHPon
-HĝHOL]DFKRG]LSRWU]HEDXVXQLÚFLDREVHUZDWRUD]GDU]HñGR
G\VSR]\FMLPDV]IXQNFMÚRQD]ZLHremoveEventListener()
3RZRGXMHRQDXVXQLÚFLH
REVHUZDWRUD]GDU]Hñ]H
ZVND]DQHJRHOHPHQWX PDWDNLH
VDPHSDUDPHWU\ ZDARZENIA
261
UŻYCIE PARAMETRÓW
W PROCEDURACH OBSŁUGI
ZDARZEŃ I OBSERWATORACH
ZDARZEŃ
3RQLHZDĝZSURFHGXU]HREVïXJL]GDU]HñRUD]ZREVHUZDWRUDFK]GDU]Hñ
QLHPRĝQDXĝ\ZDÊQDZLDVXSRQD]ZLHIXQNFMLPRĝOLZRĂÊSU]HND]DQLD
DUJXPHQWöZIXQNFMLZ\PDJD]DVWRVRZDQLDSHZQHMV]WXF]NL
=Z\NOHNLHG\IXQNFMDZ\PDJD
SHZQ\FKLQIRUPDFMLDE\
PRJïDZ\NRQDÊVZRMH]DGDQLH
RGSRZLHGQLHDUJXPHQW\VÈ
SRGDZDQHZQDZLDVLH]QDMGXMÈF\PVLÚSRQD]ZLHIXQNFML
.LHG\LQWHUSUHWHUQDSRW\ND
QDZLDVSRQD]ZLHIXQNFML
QDW\FKPLDVWZ\NRQXMHMHMNRG
-HGQDNZSU]\SDGNXSURFHGXU\
REVïXJL]GDU]HñZ\NRQDQLHNRGX
FKFHP\ZVWU]\PDÊDĝGRFKZLOL
Z\VWÈSLHQLDRGSRZLHGQLHJR
]GDU]HQLD
Nazwa zdarzenia
Nazwana
funkcja ma po
nazwie nawias
zawierający
parametr
'ODWHJRWHĝMHĝHOL]DFKRG]L
NRQLHF]QRĂÊSU]HND]DQLDDUJXPHQWöZIXQNFMLZ\ZRï\ZDQHM
SU]H]SURFHGXUÚREVïXJL]GDU]Hñ
OXEREVHUZDWRUD]GDU]HñWR
WU]HEDMÈRSDNRZDÊZ\ZRïDQLHPIXQNFMLDQRQLPRZHM
Początek funkcji anonimowej
el.addEventListener(’blur’, function() {
checkUsername(5);
}, false);
Funkcja anonimowa
jest używana jako
drugi argument.
Stanowi „opakowanie”
dla funkcji nazwanej
Koniec polecenia
Koniec metody addEventListener()
Koniec funkcji
anonimowej
Wartość boolowska wskazująca na sposób
przepływu zdarzeń (patrz podrozdział
„Przepływ zdarzeń”)
1D]ZDQDIXQNFMDZ\PDJDMÈFD
DUJXPHQWöZ]QDMGXMHVLÚ
ZHZQÈWU]IXQNFMLDQRQLPRZHM
262 ZDARZENIA
:SUDZG]LHIXQNFMDDQRQLPRZD
PDQDZLDVDOH]RVWDMH
Z\NRQDQDW\ONRSRZ\ZRïDQLX
GDQHJR]GDU]HQLD
)XQNFMDQD]ZDQDPRĝHXĝ\ZDÊ
DUJXPHQWöZSRQLHZDĝMHVW
Z\NRQ\ZDQDW\ONRSRZ\ZRïDQLXIXQNFMLDQRQLPRZHM
UŻYCIE PARAMETRÓW
W OBSERWATORZE ZDARZEŃ
3LHUZV]\ZLHUV]SRQLĝV]HJRSU]\NïDGXSRND]XMH
XDNWXDOQLRQÈIXQNFMÚcheckUsername()3DUDPHWU
minLengthRNUHĂODPLQLPDOQÈOLF]EÚ]QDNöZ
ZQD]ZLHXĝ\WNRZQLND
:DUWRĂÊSU]HND]\ZDQDIXQNFMLcheckUsername()
MHVWZ\NRU]\VW\ZDQDZSROHFHQLXZDUXQNRZ\P
GRVSUDZG]HQLDF]\QD]ZDXĝ\WNRZQLNDPD
Z\VWDUF]DMÈFÈGïXJRĂÊ1DMHMSRGVWDZLHXĝ\WNRZQLNRWU]\PDRGSRZLHGQLNRPXQLNDWMHĂOLQD]ZD
Xĝ\WNRZQLNDMHVW]E\WNUöWND
c06/js/event-listener-with-parameters.js
JAVASCRIPT
var elUsername = document.getElementById(’username’);
3REUDQLHSRODWHNVWRZHJRXVHUQDPH
var elMsg = document.getElementById(’feedback’);
// Pobranie elementu feedback.
function checkUsername(minLength) {
if (elUsername.value.length < minLength) {
// Deklaracja funkcji.
-HĝHOLQD]ZDXĝ\WNRZQLND
MHVW]E\WNUöWND
3U]\JRWRZDQLHNRPXQLNDWXREïÚG]LH
HO0VJWH[W&RQWHQW ij1D]ZDXĝ\WNRZQLNDPXVLPLHÊSU]\QDMPQLHMijPLQ/HQJWKij]QDNöZij
} else {
// W przeciwnym razie.
elMsg.innerHTML = ’’;
8VXQLÚFLHNRPXQLNDWX
}
}
elUsername.addEventListener(’blur’, function() {
*G\HOHPHQWVWDQLHVLÚQLHDNW\ZQ\
checkUsername(5);
:W\PPLHMVFXVÈSU]HND]\ZDQHDUJXPHQW\
}, false);
2EVHUZDWRU]GDU]HñZRVWDWQLFKWU]HFKZLHUV]DFK
MHVWGïXĝV]\QLĝZSRSU]HGQLPSU]\NïDG]LH
SRQLHZDĝZ\ZRïDQLHIXQNFMLcheckUsername()
PXVL]DZLHUDÊZDUWRĂÊSDUDPHWUXminLength
$E\RWU]\PDÊRGSRZLHGQLHGDQHREVHUZDWRU
]GDU]HñXĝ\ZDIXQNFMLDQRQLPRZHMG]LDïDMÈFHM
ZFKDUDNWHU]HRSDNRZDQLD:HZQÈWU]WHJR
RSDNRZDQLDQDVWÚSXMHZ\ZRïDQLHIXQNFML
checkUsername()LSU]HND]DQLHDUJXPHQWX
2EVïXJDZSU]HJOÈGDUNDFKQDNROHMQHMVWURQLH
GRZLHV]VLÚMDNUR]ZLÈ]DÊSUREOHPEUDNXREVïXJL
REVHUZDWRUöZ]GDU]HñZSU]HJOÈGDUFH,(RUD]MHM
ZF]HĂQLHMV]\FKZ\GDQLDFK
ZDARZENIA 263
OBSŁUGA W STARSZYCH
WERSJACH PRZEGLĄDARKI
INTERNET EXPLORER
:SU]HJOÈGDUFH,QWHUQHW([SORUHUļ]DVWRVRZDQRLQQ\PRGHO]GDU]Hñ
FRR]QDF]DEUDNREVïXJLPHWRG\addEventListener()1DV]F]ÚĂFLHPRĝQD
]DVWRVRZDÊUR]ZLÈ]DQLHDZDU\MQHG]LÚNLNWöUHPXREVHUZDWRU\]GDU]Hñ
G]LDïDMÈZVWDUV]\FKZHUVMDFKSU]HJOÈGDUNL,(
3U]HJOÈGDUNL,(ļQLHREVïXJXMÈPHWRG\
addEventListener()=DPLDVWWHJRZ\NRU]\VWXMÈZïDVQÈPHWRGÚRQD]ZLHattachEvent()
Z\NRQXMÈFÈWRVDPR]DGDQLHDOHGRVWÚSQÈMHG\QLH
ZSU]HJOÈGDUNDFK,QWHUQHW([SORUHU-HĝHOLFKFHV]
Xĝ\ZDÊREVHUZDWRUöZ]GDU]HñZ,(RUD]ZH
ZF]HĂQLHMV]\FKZ\GDQLDFKWHMSU]HJOÈGDUNLWR
SRZLQLHQHĂ]DVWRVRZDÊSU]HGVWDZLRQHSRQLĝHM
SROHFHQLHZDUXQNRZH
-HĝHOLSU]HJOÈGDUNDREVïXJXMH
addEventListener():
:\NRQDMNRGZHZQÈWU]WHJR
QDZLDVXNODPURZHJR
-HĝHOLQLHWR]DVWRVXMLQQH
SRGHMĂFLH
8UXFKRPNRGZW\P
QDZLDVLHNODPURZ\P
']LÚNLNRQVWUXNFMLif-elsePRĝQDVSUDZG]LÊ
F]\SU]HJOÈGDUNDLQWHUQHWRZDREVïXJXMHPHWRGÚ
addEventListener():DUWRĂFLÈZDUXQNXZSROHFHQLXifEÚG]LHtrueMHĂOLSU]HJOÈGDUNDREVïXJXMH
Z\PLHQLRQÈPHWRGÚZWHG\PRĝQDMHMXĝ\ZDÊ
1DWRPLDVWMHĂOLSU]HJOÈGDUNDQLHREVïXJXMHPHWRG\
addEventListener()WRNRGVSUöEXMH]DVWRVRZDÊ
PHWRGÚattachEvent()
if (el.addEventListener) {
el.addEventListener(’blur’, function() {
checkUsername(5);
}, false );
} else {
el.attachEvent(’onblur’, function() {
checkUsername(5);
});
}
.LHG\Xĝ\ZDQDMHVWPHWRGDattachEvent()QD]ZD]GDU]HQLDSRZLQQDE\ÊSRSU]HG]RQDSU]HGURVWNLHP
on QDSU]\NïDGblurVWDMHVLÚonblur :UR]G]LDOHSR]QDV]LQQHUR]ZLÈ]DQLH RSDUWHQDSOLNX
QDU]ÚG]LRZ\P SR]ZDODMÈFHQDREVïXJÚPRGHOX]GDU]HñZVWDUV]\FKZ\GDQLDFK,(
264 ZDARZENIA
ROZWIĄZANIE AWARYJNE UŻYCIA
OBSERWATORÓW ZDARZEŃ W IE8
.RGSURFHGXU\REVïXJL]GDU]Hñ
SU]HGVWDZLRQHMSRQLĝHM]RVWDï
XWZRU]RQ\QDED]LHNRGX
]SRSU]HGQLHJRSU]\NïDGXDOH
W\PUD]HPMHVW]QDF]QLHGïXĝV]\
SRQLHZDĝ]DZLHUDUR]ZLÈ]DQLH
DZDU\MQHSU]H]QDF]RQHGODSU]HJOÈGDUHN,QWHUQHW([SORUHUļ
3RIXQNFMLcheckUsername()
]QDMGXMHVLÚSROHFHQLHif
JAVASCRIPT
VSUDZG]DMÈFHF]\PHWRGD
addEventListener()MHVW
REVïXJLZDQD:DUWRĂFLÈ
]ZURWQÈMHVWtrueMHĂOLZÚ]Hï
HOHPHQWXREVïXJXMHWÚPHWRGÚ
ZSU]HFLZQ\PUD]LH]ZUDFDQD
MHVWZDUWRĂÊfalse
-HĝHOLSU]HJOÈGDUNDLQWHUQHWRZDREVïXJXMHPHWRGÚ
addEventListener()WR
c06/js/event-listener-with-ie-fallback.js
var elUsername = document.getElementById(’username’);
3REUDQLHSRODWHNVWRZHJRXVHUQDPH
var elMsg = document.getElementById(’feedback’);
// Pobranie elementu feedback.
function checkUsername(minLength) {
// Deklaracja funkcji.
if (elUsername.value.length < minLength) {
-HĝHOLQD]ZDXĝ\WNRZQLNDMHVW]E\WNUöWND
3U]\JRWRZDQLHNRPXQLNDWX
elMsg.innerHTML =
ij1D]ZDXĝ\WNRZQLNDPXVLPLHÊSU]\QDMPQLHMijPLQ/HQJWK
ij]QDNöZij
} else {
// W przeciwnym razie.
elMsg.innerHTML = ’’;
8VXQLÚFLHNRPXQLNDWXREïÚG]LH
}
}
if (elUsername.addEventListener) {
-HĝHOLREVHUZDWRU]GDU]HñMHVWREVïXJLZDQ\
elUsername.addEventListener(’blur’, function(){
*G\SROHVWDMHVLÚQLHDNW\ZQH
checkUsername(5);
:\ZRïDQLHIXQNFMLFKHFN8VHUQDPH }, false );
3U]HFKZ\FHQLHSRGF]DVID]\SURSDJDFML]GDU]Hñ
} else {
// W przeciwnym razie.
elUsername.attachEvent(’onblur’, function(){
5R]ZLÈ]DQLHDZDU\MQHGOD,(RQEOXU
checkUsername(5);
:\ZRïDQLHIXQNFMLFKHFN8VHUQDPH });
}
Z\NRQDQ\]RVWDQLHNRGXPLHV]F]RQ\ZSLHUZV]\PQDZLDVLH
NODPURZ\PRSDUW\ZïDĂQLHQD
PHWRG]LHaddEventListener()
1DWRPLDVWMHĂOLSU]HJOÈGDUND
LQWHUQHWRZDQLHREVïXJXMH
Z\PLHQLRQHMPHWRG\WRXĝ\WD
]RVWDQLHPHWRGDattachEvent()
]QDQDZF]HĂQLHMV]\PZHUVMRP
,(=ZUöÊXZDJÚQDNRQLHF]QRĂÊ
SRSU]HG]HQLDQD]Z\]GDU]HQLD
SU]HGURVWNLHPon
-HĝHOL]DFKRG]LSRWU]HED]DSHZQLHQLDREVïXJLSU]HJOÈGDUNL,(
OXEZF]HĂQLHMV]\FKZ\GDñ WR]DPLDVWVWRVRZDÊWDNLHUR]ZLÈ]DQLHDZDU\MQHGODNDĝGHgo]GDU]HQLDQDNWöUHNRGPD
UHDJRZDÊOHSV]\PSRGHMĂFLHP
MHVWXWZRU]HQLHZïDVQHMIXQNFML
%ÚG]LHWRWDN]ZDQDIXQNFMDSRPRFQLF]DWZRU]ÈFDRGSRZLHGQLÈSURFHGXUÚREVïXJL]GDU]Hñ
3U]\NïDGWDNLHJRUR]ZLÈ]DQLD
SR]QDV]ZUR]G]LDOHZNWöU\P]DMPXMHP\VLÚXVSUDZQLDQLHPLZHU\ğNDFMÈIRUPXODU]\
VLHFLRZ\FK
%DUG]RZDĝQHMHVWSR]QDQLH
VNïDGQLXĝ\ZDQHMSU]H],(
LVWDUV]HZ\GDQLD DE\
ZLHG]LHÊGODF]HJRIXQNFMD
SRPRFQLF]DMHVWXĝ\ZDQDLQD
F]\PSROHJDMHMG]LDïDQLH
-DNVLÚSU]HNRQDV]ZQDVWÚSQ\PUR]G]LDOHWRMHVWNROHMQD
QLHVSöMQRĂÊPLÚG]\SU]HJOÈGDUNDPLLQWHUQHWRZ\PLNWöUDPRĝH
E\Ê]QLZHORZDQDSU]H]Xĝ\FLH
ELEOLRWHNLM4XHU\
ZDARZENIA 265
PRZEPŁYW ZDARZEŃ
(OHPHQW\+70/VÈ]DJQLHĝGĝDQHZLQQ\FKHOHPHQWDFK-HĝHOLXPLHĂFLV]
NXUVRUQDGïÈF]HPOXENOLNQLHV]MHWRDNW\ZXMHV]OXENOLNQLHV]WDNĝHMHJR
HOHPHQW\QDGU]ÚGQH
:\REUDěVRELHOLVWÚ]DZLHUDMÈFÈïÈF]H*G\]QDMG]LHVLÚQDGQLPNXUVRUP\V]\OXE]RVWDQLHRQR
NOLNQLÚWH-DYD6FULSWZ\ZRïD]GDU]HQLDZGDQ\P
HOHPHQFLH<a>RUD]ZHZV]\VWNLFKHOHPHQWDFK
ZHZQÈWU]NWöU\FK]QDMGXMHVLÚWHQHOHPHQW<a>
DO CU
<ht m
<b o
<ul
< li
ME
DO CU
NT
l>
dy
3URFHGXU\REVïXJL]GDU]HñRUD]REVHUZDWRU\]GDU]HñPRĝQDGRïÈF]DÊGRHOHPHQWöZQDGU]ÚGQ\FK
F]\OLZRPDZLDQ\PSU]\NïDG]LHGR<li><ul>
<body> i <html>DWDNĝHGRRELHNWöZdocument
i window.ROHMQRĂÊZ\ZRï\ZDQLD]GDU]HñQRVL
QD]ZÚSU]HSï\ZX]GDU]HñD]GDU]HQLDSRUXV]DMÈ
VLÚZREXNLHUXQNDFK
<ht m
<b o
>
>
>
<a>
<ul
< li
ME
NT
l>
dy
>
>
>
<a>
PROPAGACJA ZDARZEŃ
PRZECHWYTYWANIE ZDARZEŃ
1DSRF]ÈWNX]GDU]HQLH]QDMGXMHVLÚZQDMEDUG]LHM
V]F]HJöïRZ\PZÚěOHDQDVWÚSQLHSU]HSï\ZDQD
]HZQÈWU]GRnajmniejV]F]HJöïRZHJR7RMHVW
GRP\ĂOQ\W\SSU]HSï\ZX]GDU]HñSRZV]HFKQLH
REVïXJLZDQ\SU]H]SU]HJOÈGDUNLLQWHUQHWRZH
1DSRF]ÈWNX]GDU]HQLH]QDMGXMHVLÚZnajmniej
V]F]HJöïRZ\PZÚěOHDQDVWÚSQLHSU]HSï\ZDGR
ZHZQÈWU]GRQDMEDUG]LHMV]F]HJöïRZHJR7HQ
W\SSU]HSï\ZX]GDU]HñQLHMHVWREVïXJLZDQ\SU]H]
SU]HJOÈGDUNÚ,QWHUQHW([SORUHULMHMZF]HĂQLHMV]H
ZHUVMH
266 ZDARZENIA
DLACZEGO PRZEPŁYW
ZDARZEŃ MA ZNACZENIE?
3U]HSï\Z]GDU]HñWDNQDSUDZGÚPD]QDF]HQLHJG\NRG]DZLHUDSURFHGXU\
REVïXJL]GDU]HñZHOHPHQWDFKorazMHGHQ]QLFKMHVWHOHPHQWHPSRWRPQ\P
OXESU]RGNLHP
3U]HGVWDZLRQ\SRQLĝHMSU]\NïDG
PDREVHUZDWRUD]GDU]HñRGSRZLDGDMÈFHJRQD]GDU]HQLHclick
ZZ\PLHQLRQ\FKHOHPHQWDFK
MHGHQZHOHPHQFLH<ul>;
MHGHQZHOHPHQFLH<li>;
MHGHQZHOHPHQFLH<a>
HOHPHQWXOLVW\
ľ
ľ
ľ
:RNQLHGLDORJRZ\PNRPXQLNDWX]GDU]HQLHZ\ĂZLHWOD
]DZDUWRĂÊ+70/GDQHJR
HOHPHQWXDG]LÚNLSU]HSï\ZRZL
]GDU]HñPRĝQDZVND]DÊ
HOHPHQWRGSRZLHG]LDOQ\]D
UHDNFMÚQD]GDU]HQLHclick
-HĂOLFKRG]LRWUDG\F\MQHSURFHGXU\REVïXJL]GDU]HñZPRGHOX'20
RUD]SURFHGXU\REVïXJL]GDU]HñZDWU\EXWDFK+70/ ZV]\VWNLH
QRZRF]HVQHSU]HJOÈGDUNLLQWHUQHWRZHGRP\ĂOQLHVWRVXMÈSURSDJDFMÚ
]GDU]Hñ]DPLDVWLFKSU]HFKZ\W\ZDQLD:SU]\SDGNXREVHUZDWRUD
]GDU]HñRVWDWQLSDUDPHWUPHWRG\addEventListener()SR]ZDODQD
ZVND]DQLHNLHUXQNXZ\ZRï\ZDQLD]GDU]Hñ
trueR]QDF]DID]ÚSU]HFKZ\W\ZDQLD
falseR]QDF]DSURSDJDFMÚ]GDU]Hñ ZDUWRĂÊfalseMHVWF]ÚVWRXĝ\ZDQDGRP\ĂOQLHSRQLHZDĝSU]HFKZ\W\ZDQLHQLHMHVWREVïXJLZDQH
Z,(RUD]ZHZF]HĂQLHMV]\FKZ\GDQLDFKWHMSU]HJOÈGDUNL ľ
ľ
3OLNHYHQWĠRZMV SROHZHMVWURQLHSRND]DQRZ\QLNMHJRG]LDïDQLD
VDPSOLNMHVWGRVWÚSQ\ZPDWHULDïDFKGRïÈF]RQ\FKGRNVLÈĝNL GHPRQVWUXMHUöĝQLFÚPLÚG]\SURSDJDFMÈ]GDU]HñDLFKSU]HFKZ\W\ZDQLHP:W\PSU]\NïDG]LHSURFHGXUDREVïXJL]GDU]HñPDZDUWRĂÊ
falseGODRVWDWQLHJRSDUDPHWUXPHWRG\addEventListener()
FRZVND]XMHQDXĝ\FLHSURSDJDFML]GDU]Hñ:SLHUZV]\PRNQLH
GLDORJRZ\PZLG]LP\]DZDUWRĂÊ]QDMGXMÈFHJRVLÚQDMEDUG]LHM
ZHZQÈWU]HOHPHQWX<a>ZNROHMQ\FKRNQDFKĽ]DZDUWRĂÊQDVWÚSQ\FKHOHPHQWöZZNLHUXQNXQD]HZQÈWU]:HUVMÚSU]HGVWDZLDMÈFÈ
SU]HFKZ\W\ZDQLH]GDU]Hñ]QDMG]LHV]ZHZVSRPQLDQ\FKPDWHULDïDFK
GRïÈF]RQ\FKGRNVLÈĝNL
ZDARZENIA 267
OBIEKT ZDARZENIA
.LHG\]GDU]HQLHZ\VWÚSXMHRELHNWeventSU]HND]XMHLQIRUPDFMHRGDQ\P
]GDU]HQLXLHOHPHQFLHZNWöU\P]RVWDïRRQRZ\ZRïDQH
=DNDĝG\PUD]HPJG\Z\VWÚSXMH]GDU]HQLHRELHNWevent
]DZLHUDZLHOHXĝ\WHF]Q\FK
GDQ\FKGRW\F]ÈF\FKWHJR
]GDU]HQLD
ZVND]XMHHOHPHQWZNWöU\P
Z\VWÈSLïR]GDU]HQLH
ZVND]XMHNODZLV]QDFLĂQLÚW\
GOD]GDU]HQLDkeypress;
ZVND]XMHNWöUÈF]ÚĂÊ
YLHZSRUWXXĝ\WNRZQLNNOLNQÈï
GOD]GDU]HQLDclick
ľ
ľ
ľ
2ELHNW]GDU]HQLDMHVWSU]HND]\ZDQ\GRNDĝGHMIXQNFML
]GHğQLRZDQHMZSURFHGXU]H
REVïXJLOXEREVHUZDWRU]H
]GDU]HQLD
-HĝHOL]DFKRG]LSRWU]HED
SU]HND]DQLDDUJXPHQWöZGRQD]ZDQHMIXQNFMLWRRELHNWevent
EÚG]LHZSLHUZV]HMNROHMQRĂFL
SU]HND]\ZDQ\DQRQLPRZHM
IXQNFMLRSDNRZDQLD RGE\ZDVLÚ
WRDXWRPDW\F]QLH 1DVWÚSQLH
WU]HEDSRGDÊMÈMDNRSDUDPHWU
IXQNFMLQD]ZDQHM MDNSRND]DQR
QDQDVWÚSQHMVWURQLH .LHG\RELHNWeventMHVW
SU]HND]\ZDQ\IXQNFMLWRF]ÚVWR
RWU]\PXMHSDUDPHWURQD]ZLHe;
WRSRZV]HFKQLHVWRVRZDQ\VNUöW
UR]ZLÈ]DQLHWRMHVWVWRVRZDQH
UöZQLHĝZWHMNVLÈĝFH 3DPLÚWDMĝHQLHNWöU]\SURJUDPLĂFLXĝ\ZDMÈSDUDPHWUXRQD]ZLH
eZFHOXRGZRïDQLDVLÚGR
RELHNWXerror'ODWHJRWHĝ
ZSHZQ\FKVNU\SWDFKePRĝH
R]QDF]DÊeventOXEerror
3U]HJOÈGDUND,QWHUQHW([SORUHUPDQLHW\ONRLQQÈVNïDGQLÚREVHUZDWRUöZ]GDU]Hñ MDNZVSRPQLDQR
ZSRGUR]G]LDOHķ2EVïXJDZVWDUV]\FKZHUVMDFKSU]HJOÈGDUNL,QWHUQHW([SORUHUĵ DOHRELHNWeventZ,(
ļPDWDNĝHLQQHQD]Z\PHWRGLZïDĂFLZRĂFLZ\PLHQLRQ\FKZSRQLĝV]\FKWDEHODFKLSU]HGVWDZLRQ\FK
ZSU]\NïDG]LHZSRGUR]G]LDOHķ8ĝ\FLHREVHUZDWRUD]GDU]HñZUD]]RELHNWHPHYHQWĵ
:’$¥&,:2¥m
2'32:,('1,.:,(ļ
OPIS
target
srcElement
:VND]XMHHOHPHQWGRFHORZ\GOD]GDU]HQLD
HOHPHQW]NWöU\PEÚG]LHSURZDG]RQDLQWHUDNFMD type
type
7\SZ\ZRïDQHJR]GDU]HQLD
cancelable
QLHREVïXJLZDQD
:VND]XMHF]\PRĝQDDQXORZDÊGRP\ĂOQH
]DFKRZDQLHHOHPHQWX
METODA
:’$¥&,:2¥m:,(ļ
OPIS
preventDefault()
returnValue
$QXOXMHGRP\ĂOQH]DFKRZDQLH]GDU]HQLD
RLOHLVWQLHMHWDNDPRĝOLZRĂÊ stopPropagation()
cancelBubble
8QLHPRĝOLZLD]GDU]HQLXGDOV]ÈSURSDJDFMÚ
OXESU]HFKZ\W\ZDQLH
268 ZDARZENIA
OBSERWATOR ZDARZEŃ BEZ PARAMETRÓW
2
function checkUsername(e) {
3 var target = e.target; 3REUDQLHHOHPHQWXGRFHORZHJRGOD]GDU]HQLD
}
var el = document.getElementById(’username’);
el.addEventListener(’blur’, checkUsername, false);
1
%H]NRQLHF]QRĂFLSRGHMPRZDQLDMDNLFKNROZLHNNURNöZ
RGZRïDQLHGRRELHNWXeventMHVW
DXWRPDW\F]QLHSU]HND]\ZDQHRG
SRïRĝHQLDZVND]\ZDQHJRSU]H]
OLF]EÚZNWöU\PREVHUZDWRU
]GDU]HñZ\ZRïXMHIXQNFMÚĮ
Į'RWHJRSRïRĝHQLDJG]LH
MHVW]GHğQLRZDQDIXQNFMD1D
W\PHWDSLHSDUDPHWUPXVLE\Ê
QD]ZDQ\'ODRELHNWXevent
SDUDPHWUEDUG]RF]ÚVWRPD
QD]ZÚe
7DQD]ZDPRĝHE\Ê
Xĝ\WDZHZQÈWU]IXQNFMLMDNR
RGZRïDQLHGRRELHNWXevent
7HUD]PRĝQDMXĝXĝ\ZDÊPHWRG
LZïDĂFLZRĂFLRELHNWXevent
OBSERWATOR ZDARZEŃ Z PARAMETRAMI
3
function checkUsername(e, minLength) {
4 var target = e.target; 3REUDQLHHOHPHQWXGRFHORZHJRGOD]GDU]HQLD
}
var el = document.getElementById(’username’);
el.addEventListener(’blur’, function(e){ 1
checkUsername(e, 5);
2
}, false);
2GZRïDQLHGRRELHNWXevent
MHVWDXWRPDW\F]QLHSU]HND]\ZDQHIXQNFMLDQRQLPRZHMDOH
PXVLE\ÊZVND]DQHZQDZLDVLH
2GZRïDQLHGRRELHNWX
eventPRĝHE\ÊSU]HND]DQH
IXQNFMLQD]ZDQHMZSRVWDFLMHM
SLHUZV]HJRSDUDPHWUX
)XQNFMDQD]ZDQDRWU]\PXMH
RGZRïDQLHGRRELHNWXevent
MDNRSLHUZV]\SDUDPHWUPHWRG\
1D]Z\WHMPRĝQDWHUD]
Xĝ\ZDÊZQD]ZDQHMIXQNFML
ZDARZENIA OBIEKT ZDARZENIA
W PRZEGLĄDARCE INTERNET
EXPLORER 5 – 8
3RQLĝHMSU]HGVWDZLRQRMDNRELHNWeventPRĝQDX]\VNDÊZSU]HJOÈGDUFH
,(ļNieMHVWRQSU]HND]\ZDQ\DXWRPDW\F]QLHGRIXQNFMLSURFHGXU\
REVïXJLOXEREVHUZDWRUD]GDU]HñDOHjestGRVWÚSQ\MDNRHOHPHQW
SRWRPQ\RELHNWXwindow
:NRG]LHSRSUDZHMVWURQLHSROHFHQLHifVSUDZG]DF]\RELHNWevent]RVWDïSU]HND]DQ\IXQNFML
-DNPRJïHĂ]REDF]\ÊZUR]G]LDOHZSRGUR]G]LDOHķ6SUDZG]HQLHUöZQRĂFLLLVWQLHQLDĵLVWQLHQLH
RELHNWXMHVWWUDNWRZDQHMDNRZDUWRĂÊtruthy
'ODWHJRWHĝZDUXQHNPRĝQDRGF]\WDÊQDVWÚSXMÈFR
ķ-HĝHOLRELHNW]GDU]HQLDnie istniejeĮĵ
function checkUsername(e) {
if (!e) {
e = window.event;
}
}
:SU]HJOÈGDUFH,QWHUQHW([SORUHURUD]
ZF]HĂQLHMV]\FKZ\GDQLDFKeQLHSU]HFKRZXMH
RELHNWXSU]HGVWDZLRQ\NRG]RVWDMHZ\NRQDQ\
DeRWU]\PXMHRELHNWeventEÚGÈF\HOHPHQWHP
SRWRPQ\PRELHNWXwindow
POBRANIE WŁAŚCIWOŚCI
*G\RWU]\PDP\RGQLHVLHQLHGRRELHNWXevent
GRVWÚSGRMHJRZïDĂFLZRĂFLPRĝQDX]\VNDÊ
ZVSRVöESRND]DQ\ZNRG]LHSRSUDZHMVWURQLH
7HFKQLNDWDG]LDïDUöZQLHĝZSU]\SDGNXV]\ENLHJR
REOLF]DQLDZDUWRĂFL SDWU]UR]G]LDïSRGUR]G]LDï
ķ3U]HUZDQLHREOLF]DQLDZDUWRĂFLĵ var target;
target = e.target || e.srcElement;
FUNKCJA POBIERAJĄCA ELEMENT
DOCELOWY DLA ZDARZENIA
-HĝHOLREVHUZDWRUD]GDU]HñWU]HEDSU]\SLVDÊNLONX
HOHPHQWRPPRĝQDWR]URELÊ]DSRPRFÈNRGX
SU]HGVWDZLRQHJRSRSUDZHMVWURQLH-HVWWRIXQNFMD
]ZUDFDMÈFDRGQLHVLHQLHGRHOHPHQWXZNWöU\P
Z\VWÈSLïR]GDU]HQLH
270 ZDARZENIA
function getEventTarget(e) {
if (!e) {
e = window.event;
}
return e.target || e.srcElement;
}
UŻYCIE OBSERWATORA ZDARZEŃ
WRAZ Z OBIEKTEM EVENT
3RQLĝHMSU]HGVWDZLRQRSU]\NïDGZ\NRU]\VW\ZDQ\
GRWÈGZUR]G]LDOHDOH]SHZQ\PLPRG\ğNDFMDPL
)XQNFMDQRVLQD]ZÚcheckLength()]DPLDVW
checkUsername()LPRĝHE\ÊXĝ\WDZGRZROQ\P
SROXWHNVWRZ\P
2ELHNWeventMHVWSU]HND]\ZDQ\GRREVHUZDWRUD]GDU]Hñ2PDZLDQ\SU]\NïDG]DZLHUD
UR]ZLÈ]DQLHDZDU\MQHGODSU]HJOÈGDUHNLQWHUQHWRZ\FK,(ļ ZUR]G]LDOH]DGHPRQVWURZDQR
]DVWRVRZDQLHIXQNFMLSRPRFQLF]HMGRWHJRFHOX $E\RNUHĂOLÊHOHPHQW\Xĝ\ZDQHSU]H]
LQWHUQDXWÚIXQNFMDZ\NRU]\VWXMHZïDĂFLZRĂÊ
targetRELHNWXevent ZSU]HJOÈGDUNDFK,(ļ
VWRVRZDQDMHVW]NROHLZïDĂFLZRĂÊsrcElement JAVASCRIPT
function checkLength(e, minLength) {
var el, elMsg;
if (!e) {
e = window.event;
}
el = e.target || e.srcElement;
elMsg = el.nextSibling;
if (el.value.length < minLength) {
']LÚNLZ\PLHQLRQ\PPRG\ğNDFMRPIXQNFMD
MHVW]QDF]QLHHODVW\F]QLHMV]DQLĝSU]HGVWDZLRQD
ZF]HĂQLHMZUR]G]LDOHSRQLHZDĝ
0RĝQDMÈZ\NRU]\VWDÊGRVSUDZG]HQLD
GïXJRĂFLGRZROQHJRSRODWHNVWRZHJRRLOHSR
W\PHOHPHQFLH]QDMGXMHVLÚSXVW\HOHPHQWNWöU\
PRĝHSU]HFKRZ\ZDÊNRPXQLNDWZ\ĂZLHWODQ\
Xĝ\WNRZQLNRZL 0LÚG]\HOHPHQWDPLQLHSRZLQQ\
Z\VWÚSRZDÊVSDFMHOXE]QDNLQRZHJRZLHUV]D
SRQLHZDĝZWHG\QLHNWöUHSU]HJOÈGDUNLLQWHUQHWRZH
PRJÈ]ZUöFLÊZÚ]Hï]QDNXRGVWÚSX .RGG]LDïDZSU]HJOÈGDUNDFK,(ļSRQLHZDĝ
VSUDZG]DF]\SU]HJOÈGDUNDREVïXJXMHQDMQRZV]H
ZSURZDG]RQHIXQNFMH -HĂOLLFKQLHREVïXJXMH
WR]RVWDQLH]DVWRVRZDQHUR]ZLÈ]DQLHDZDU\MQH
ZSRVWDFLVWDUV]\FKWHFKQLN c06/js/event-listener-with-event-object.js
// Deklaracja funkcji.
// Deklaracja zmiennych.
-HĝHOLRELHNWHYHQWQLHLVWQLHMH
8ĝ\FLHUR]ZLÈ]DQLDDZDU\MQHJRGOD,(
3REUDQLHHOHPHQWXGRFHORZHJRGOD]GDU]HQLD
3REUDQLHQDVWÚSQHJRHOHPHQWXUöZQRU]ÚGQHJR
-HĝHOLGïXJRĂÊMHVWQLHZ\VWDUF]DMÈFD
GHğQLXMHP\NRPXQLNDW
HO0VJLQQHU+70/ ij1D]ZDXĝ\WNRZQLNDPXVLPLHÊSU]\QDMPQLHMijPLQ/HQJWKij]QDNöZij
} else {
// W przeciwnym razie.
elMsg.innerHTML = ’’;
8VXQLÚFLHNRPXQLNDWX
}
}
var elUsername = document.getElementById(’username’); 3REUDQLHSRODWHNVWRZHJRXVHUQDPH
if (elUsername.addEventListener) {
-HĝHOLREVHUZDWRU]GDU]HñMHVW
REVïXJLZDQ\
elUsername.addEventListener(’blur’, function(e) {
// W przypadku zdarzenia blur.
checkLength(e, 5);
:\ZRïDQLHIXQNFMLFKHFN/HQJWK }, false);
3U]HFKZ\FHQLHSRGF]DVID]\
SURSDJDFML]GDU]Hñ
} else {
// W przeciwnym razie.
elUsername.attachEvent(’onblur’, function(e){
5R]ZLÈ]DQLHDZDU\MQHGOD,(RQEOXU
checkLength(e, 5);
:\ZRïDQLHIXQNFMLFKHFN/HQJWK });
}
ZDARZENIA
271
DELEGACJA ZDARZENIA
8WZRU]HQLHREVHUZDWRUöZ]GDU]HñGODGXĝHMOLF]E\HOHPHQWöZPRĝHVSRZROQLÊG]LDïDQLHVWURQ\DOHSU]HSï\Z]GDU]HñSR]ZDODQDQDVïXFKLZDQLH]GDU]Hñ
ZHOHPHQFLHQDGU]ÚGQ\P
-HĝHOLXĝ\WNRZQLNSURZDG]LLQWHUDNFMÚ]GXĝÈ
OLF]EÈHOHPHQWöZQDVWURQLHQDSU]\NïDGQD
VNXWHNLVWQLHQLD
EDUG]RGXĝHMOLF]E\SU]\FLVNöZZLQWHUIHMVLH
Xĝ\WNRZQLND
GïXJLHMOLVW\
Z\SHïQLRQ\FKZV]\VWNLFKNRPöUHNWDEHOL
WRGRGDQLHREVHUZDWRUD]GDU]HñGRNDĝGHJR
HOHPHQWXPRĝHGRSURZDG]LÊGR]Xĝ\FLDGXĝHM
LORĂFLSDPLÚFLL]PQLHMV]\ÊZ\GDMQRĂÊDSOLNDFML
ľ
ľ
ľ
3RQLHZDĝ]GDU]HQLDZSï\ZDMÈQDHOHPHQW\
QDGU]ÚGQH ]HZ]JOÚGXQDSU]HSï\Z]GDU]HñSDWU]
SRGUR]G]LDïķ3U]HSï\Z]GDU]Hñĵ WRSURFHGXUÚ
REVïXJL]GDU]HñPRĝQDXPLHĂFLÊZHOHPHQFLH
QDGU]ÚGQ\PLXĝ\ZDÊZïDĂFLZRĂFLtargetRELHNWX
eventGRZ\V]XNDQLDHOHPHQWöZSRWRPQ\FK
ZNWöU\FKZ\VWÈSLïR]GDU]HQLH
3U]H]GRïÈF]HQLHREVHUZDWRUD]GDU]HñGR
HOHPHQWXQDGU]ÚGQHJRRGSRZLHGěMHVWXG]LHODQD
W\ONRMHGQHPXHOHPHQWRZL ]DPLDVWVWRVRZDÊ
SURFHGXUÚREVïXJL]GDU]HñGODNDĝGHJRHOHPHQWX
SRWRPQHJR =DGDQLHREVHUZDWRUD]GDU]Hñ]RVWDMHGHOHJRZDQH
GRHOHPHQWXQDGU]ÚGQHJR:SU]\SDGNXOLVW\
SRND]DQHMSRSUDZHMVWURQLHMHĝHOLREVHUZDWRU
]GDU]Hñ]RVWDQLHXPLHV]F]RQ\ZHOHPHQFLH<ul>
]DPLDVWZSRV]F]HJöOQ\FKHOHPHQWDFK<li>WR
SRWU]HEQ\MHVWW\ONRMHGHQREVHUZDWRU]GDU]Hñ
6NXWNLHPEÚG]LHRVLÈJQLÚFLHOHSV]HMZ\GDMQRĂFL
DSRGRGDQLXOXEXVXQLÚFLXHOHPHQWöZOLVW\
UR]ZLÈ]DQLHEÚG]LHQDGDOIXQNFMRQRZDïRZWDNL
VDPVSRVöE .RGRPDZLDQHJRSU]\NïDGX]RVWDï
SU]HGVWDZLRQ\ZSRGUR]G]LDOHķ+70/ĵ DODATKOWE KORZYŚCI WYNIKAJĄCE Z DELEGACJI ZDARZEŃ
DZIAŁANIE Z NOWYMI
ELEMENTAMI
-HĝHOLZGU]HZLHPRGHOX'20
]RVWDQÈXPLHV]F]RQHQRZH
HOHPHQW\QLHWU]HEDEÚG]LH
GRGDZDÊGRQLFKSURFHGXU
REVïXJL]GDU]HñSRQLHZDĝ
]DGDQLHWR]RVWDïRGHOHJRZDQH
GRHOHPHQWXQDGU]ÚGQHJR
272 ZDARZENIA
WYELIMINOWANIE
OGRANICZEŃ
ZWIĄZANYCH ZE SŁOWEM
KLUCZOWYM THIS
:HZF]HĂQLHMV]HMF]ÚĂFL
UR]G]LDïXVïRZRNOXF]RZHthis
]RVWDïRXĝ\WHGRLGHQW\ğNDFML
HOHPHQWXGRFHORZHJRGOD
]GDU]HQLD-HGQDNWHFKQLND
WDQLHG]LDïDZSU]HJOÈGDUFH
,(OXEMHĂOLIXQNFMDZ\PDJD
SDUDPHWUöZ
UPROSZCZENIE KODU
'RXWZRU]HQLDMHVWPQLHMV]D
OLF]EDIXQNFML3RQDGWRPQLHMV]D
OLF]EDZDUVWZZ\VWÚSXMHPLÚG]\
PRGHOHP'20LNRGHPFR
XïDWZLDREVïXJÚLNRQVHUZDFMÚ
ZMIANA ZACHOWANIA
DOMYŚLNEGO
2ELHNWeventSRVLDGDPHWRG\SR]ZDODMÈFHQD]PLDQÚGRP\ĂOQHJR]DFKRZDQLDHOHPHQWXRUD]QD]PLDQÚVSRVREXZMDNLHOHPHQW\QDGU]ÚGQHHOHPHQWX
RGSRZLDGDMÈQD]GDU]HQLH
preventDefault()
stopPropagation()
UŻYCIE OBU METOD
3HZQH]GDU]HQLDWDNLHMDN
NOLNQLÚFLHïÈF]DOXEZ\VïDQLH
IRUPXODU]DVLHFLRZHJRSRZRGXMÈSU]HQLHVLHQLHXĝ\WNRZQLNDQD
LQQÈVWURQÚ
*G\]GDU]HQLH]RVWDQLH
REVïXĝRQH]DSRPRFÈMHGQHJR
HOHPHQWXPRĝHZ\VWÈSLÊ
SRWU]HEDZVWU]\PDQLDSURSDJRZDQLD]GDU]HQLDGRHOHPHQWöZ
QDGU]ÚGQ\FK ]ZïDV]F]DMHĂOL
LVWQLHMÈWDPRGG]LHOQHSURFHGXU\REVïXJLRGSRZLDGDMÈFHQDWH
VDPH]GDU]HQLD :SRGREQ\FKV\WXDFMDFK
F]DVDPLPRĝQDVLÚVSRWNDÊ
]Xĝ\FLHPSRQLĝV]HJRSROHFHQLD
ZIXQNFML
return false;
$E\]PLHQLÊ]DFKRZDQLH
GRP\ĂOQHZVSRPQLDQ\FK
HOHPHQWöZ QDSU]\NïDG]DWU]\PDÊXĝ\WNRZQLNDQDWHMVDPHM
VWURQLH]DPLDVWSU]HQLHĂÊJR
GRVWURQ\ZVND]DQHMSU]H]ïÈF]H
OXEQDQRZÈVWURQÚSRZ\VïDQLX
IRUPXODU]DVLHFLRZHJR PRĝQDZ\NRU]\VWDÊPHWRGÚ
preventDefault()RELHNWX
event
3U]HJOÈGDUND,(ļSRVLDGDZïDĂFLZRĂÊRQD]ZLH
returnValueNWöUHMPRĝQD
SU]\SLVDÊZDUWRĂÊfalse
.RQVWUXNFMDZDUXQNRZD
PRĝHVSUDZG]DÊF]\PHWRGD
preventDefault()MHVW
REVïXJLZDQDĽMHĂOLQLHWR
]DVWRVRZDQH]RVWDQLHSRGHMĂFLH
,(
if (event.preventDefault) {
event.preventDefault();
} else {
event.returnValue = false;
}
$E\]DWU]\PDÊSURSDJRZDQLH
]GDU]HñQDOHĝ\Xĝ\ÊPHWRG\
stopPropagation()RELHNWX
event
2GSRZLHGQLNLHPZSU]HJOÈGDUFH,(RUD]ZF]HĂQLHMV]\FK
MHMZ\GDQLDFKMHVWZïDĂFLZRĂÊ
cancelBubbleNWöUHMPRĝQD
SU]\SLVDÊZDUWRĂÊtrue7XWDM
WDNĝHNRQVWUXNFMDZDUXQNRZD
PRĝHVSUDZG]LÊF]\PHWRGD
stopPropagation()MHVWREVïXJLZDQDĽMHĂOLQLHWR]RVWDQLH
]DVWRVRZDQHSRGHMĂFLH,(
if (event.stopPropogation) {
event.stopPropogation();
} else {
event.cancelBubble = true;
}
8QLHPRĝOLZLDRQR]DFKRZDQLH
GRP\ĂOQHHOHPHQWXDWDNĝH
ZVWU]\PXMHSURSDJRZDQLH
]GDU]HñOXELFKSU]HFKZ\W\ZDQLH5R]ZLÈ]DQLHWRG]LDïD
ZHZV]\VWNLFKSU]HJOÈGDUNDFK
LQWHUQHWRZ\FKLMHVWQLH]Z\NOH
SRSXODUQH
=ZUöÊMHGQDNXZDJÚQDWR
ĝHNLHG\LQWHUSUHWHUQDSRWND
SROHFHQLHreturn false;QLH
SU]HWZRU]\ĝDGQHJRNROHMQHJR
NRGXZGDQHMIXQNFMLLSU]HMG]LH
GRSLHUZV]HJRSROHFHQLDSR
Z\ZRïXMÈF\PWÚIXQNFMÚ
3RQLHZDĝLVWQLHMHQLHEH]SLHF]HñVWZR]DEORNRZDQLDNRGX
ZIXQNFMLF]ÚVWROHSV]\P
UR]ZLÈ]DQLHPMHVWXĝ\FLH
PHWRG\preventDefault()
RELHNWXevent]DPLDVWSROHFHQLDreturn false;
ZDARZENIA 273
UŻYCIE DELEGACJI ZDARZEŃ
:W\PSU]\NïDG]LHZ\NRU]\VWDP\ZLHG]Ú]GRE\WÈ
GRWÈGZUR]G]LDOH.DĝG\HOHPHQWOLVW\]DZLHUDïÈF]H
.LHG\Xĝ\WNRZQLNNOLNQLHïÈF]H DE\ZVND]DÊ]DNRñF]HQLH]DGDQLD HOHPHQW]RVWDQLHXVXQLÚW\]OLVW\
:\JOÈGXUXFKRPLRQHJRSURJUDPXSRND]DQR
ZSRGUR]G]LDOHķ'HOHJDFMD]GDU]HQLDĵ
3RSUDZHMVWURQLHSU]HGVWDZLRQRGLDJUDPNWöU\
SRZLQLHQSRPöFZ]UR]XPLHQLXNROHMQRĂFLSU]HWZDU]DQLDNRGX
1DVWURQLHSRSUDZHM]QDMG]LHV]NRGěUöGïRZ\
SU]\NïDGX
ľ
1
Pobranie elementu <ul> listy rzeczy do kupienia
2
N
ľ
4
:NRG]LH+70/ïÈF]DSURZDG]ÈQDVWURQÚLWHP'RQH
phpMHĂOLSU]HJOÈGDUNDQLHREVïXJXMHVNU\SWöZ
-DYD6FULSW :\PLHQLRQ\SOLN3+3QLH]QDMGXMHVLÚ
ZPDWHULDïDFKGRïÈF]RQ\FKGRNVLÈĝNLSRQLHZDĝ
]DZLHUDNRGZMÚ]\NXG]LDïDMÈF\PSRVWURQLHVHUZHUD
:::ĽZ\NUDF]DWRSR]DSRUXV]DQÈWHPDW\NÚ 274
ZDARZENIA
T
3
Użyj attachEvent()
ľ
2EVHUZDWRU]GDU]Hñ]RVWDïGRGDQ\GRHOHPHQWX
<ul>DZLÚFPXVLE\ÊZ\EUDQ\
6SUDZG]HQLHF]\SU]HJOÈGDUNDLQWHUQHWRZD
REVïXJXMHPHWRGÚaddEventListener()
-HĝHOLWDNQDVWÚSXMHZ\ZRïDQLHIXQNFMLitemDone()
SRNOLNQLÚFLXHOHPHQWXOLVW\SU]H]Xĝ\WNRZQLND
-HĝHOLQLHXĝ\ZDQDMHVWPHWRGDattachEvent()
)XQNFMDitemDone()XVXQLHHOHPHQW]OLVW\'R
G]LDïDQLDIXQNFMDSRWU]HEXMHSHZQ\FKLQIRUPDFML
=DGHNODURZDQH]RVWDMÈWU]\]PLHQQHSU]HFKRZXMÈFH
LQIRUPDFMHQLH]EÚGQHGRG]LDïDQLDIXQNFMLitemDone()
=PLHQQDtargetZVND]XMHHOHPHQWNOLNQLÚW\
SU]H]Xĝ\WNRZQLND:FHOXRNUHĂOHQLDWHJRHOHPHQWX
Z\ZRïDQDMHVWIXQNFMDgetTarget()2GE\ZDVLÚWRQD
SRF]ÈWNXVNU\SWXLMHVWSRND]DQHQDGROHGLDJUDPX
=PLHQQDelParentSU]HFKRZXMHHOHPHQWQDGU]ÚGQ\
HOHPHQW<li> =PLHQQDelGrandparentSU]HFKRZXMHHOHPHQW
QDGU]ÚGQ\HOHPHQWXQDGU]ÚGQHJR
(OHPHQW<li>]RVWDMHXVXQLÚW\]HOHPHQWX<ul>
6SUDZG]HQLHF]\SU]HJOÈGDUNDLQWHUQHWRZD
REVïXJXMHpreventDefault()0DWRQDFHOXXQLHPRĝOLZLHQLHSU]HQLHVLHQLDXĝ\WNRZQLNDQDQRZÈVWURQÚ
-HĝHOLWDNQDOHĝ\Xĝ\ÊZ\PLHQLRQHMPHWRG\
-HĝHOLQLHXĝ\WDEÚG]LHVWDUV]DZïDĂFLZRĂÊ,(
RQD]ZLHreturnValue
Czy obsługiwana
jest metoda
addEventListener()?
Użyj addEventListener()
Zdarzenie: click, czyli kliknięcie dowolnego łącza listy
Funkcja: itemDone()
Usuwa z listy ukończone zadanie
5
6
Utworzenie zmiennych:
target: kliknięty element
elParent: element nadrzędny klikniętego elementu
elGrandparent: element nadrzędny elementu
nadrzędnego
7
Pobranie klikniętego elementu; wywołanie
getTarget()
8
Pobranie elementu nadrzędnego (<li>)
9
Pobranie elementu nadrzędnego elementu
nadrzędnego (<ul>)
10
Usunięcie elementu <li> z <ul>
11
Czy metoda
preventDefault() jest
obsługiwana?
N
13
Użyj returnValue
T
12
preventDefault()
Funkcja: getTarget()
Pobiera element kliknięty przez użytkownika
N
Pobranie
elementu
docelowego dla
zdarzenia
Czy istnieje
obiekt event?
T
Pobranie elementu docelowego dla zdarzenia za pomocą
starego obiektu event w IE
c06/event-delegation.html
HTML
<ul id=”shoppingList”>
<li class=”complete”><a
<li class=”complete”><a
<li class=”complete”><a
<li class=”complete”><a
</ul>
href=”itemDone.php?id=1”><em>ĂZLHĝH</em> ğJL</a></li>
href=”itemDone.php?id=2”>orzeszki piniowe</a></li>
href=”itemDone.php?id=3”>PLöG</a></li>
href=”itemDone.php?id=4”>ocet balsamiczny</a></li>
JAVASCRIPT
function getTarget(e) {
if (!e) {
e = window.event;
}
return e.target || e.srcElement;
}
5
6
7
8
function itemDone(e) {
8VXQLÚFLHHOHPHQWX]OLVW\
var target, elParent, elGrandparent;
target = getTarget(e);
elParent = target.parentNode;
9
10
11
12
13
}
1
2
3
4
c06/js/event-delegation.js
// Deklaracja funkcji.
-HĝHOLRELHNWHYHQWQLHLVWQLHMH
8ĝ\FLHVWDUHJRRELHNWXHYHQWZ,(
3REUDQLHHOHPHQWXGRFHORZHJRGOD
// zdarzenia.
// Deklaracja funkcji.
// Deklaracja zmiennych.
3REUDQLHNOLNQLÚWHJRHOHPHQWX
3REUDQLHHOHPHQWXQDGU]ÚGQHJR
GODNOLNQLÚWHJR
elGrandparent = target.parentNode.parentNode; 3REUDQLHOLVW\
elGrandparent.removeChild(elParent);
8VXQLÚFLHHOHPHQWXOLVW\
8QLHPRĝOLZLHQLH]DFKRZDQLDGRP\ĂOQHJRïÈF]DF]\OLSU]HQLHVLHQLDXĝ\WNRZQLND
QDLQQÈVWURQÚ
if (e.preventDefault) {
&]\PHWRGDSUHYHQW'HIDXOW MHVW
REVïXJLZDQD"
e.preventDefault();
8ĝ\FLHPHWRG\SUHYHQW'HIDXOW } else {
// W przeciwnym razie.
e.returnValue = false;
8ĝ\FLHVWDUV]HMZHUVML,(
}
.RQğJXUDFMDREVHUZDWRUD]GDU]HñZ\ZRïDQLHLWHP'RQH ZRGSRZLHG]L
// na zdarzenie click.
var el = document.getElementById(’shoppingList’); 3REUDQLHOLVW\U]HF]\GR
// kupienia.
if (el.addEventListener) {
-HĝHOLREVHUZDWRU]GDU]HñMHVW
REVïXJLZDQ\
el.addEventListener(’click’, function(e) {
'RGDQLHREVHUZDWRUD
itemDone(e);
:\ZRïDQLHLWHP'RQH }, false);
8ĝ\FLHSURSDJDFML]GDU]HQLD
} else {
// W przeciwnym razie.
el.attachEvent(’onclick’, function(e){
8ĝ\FLHVWDUHJRPRGHOX,(
// onclick.
itemDone(e);
:\ZRïDQLHLWHP'RQH });
}
ZDARZENIA 275
W KTÓRYM ELEMENCIE
WYSTĄPIŁO ZDARZENIE?
3RGF]DVZ\ZRï\ZDQLDIXQNFMLXĝ\FLHZïDĂFLZRĂFLtargetRELHNWXevent
WRQDMOHSV]\VSRVöEXVWDOHQLDZNWöU\PHOHPHQFLHZ\VWÈSLïR]GDU]HQLH
7DNLHSRGHMĂFLH]RVWDïRSU]HGVWDZLRQHSRQLĝHMLRSLHUDVLÚQDVïRZLH
NOXF]RZ\Pthis
SŁOWO KLUCZOWE THIS
6ïRZRNOXF]RZHthisRGZRïXMHVLÚGRZïDĂFLFLHODIXQNFML
:NRG]LHSRSUDZHMVWURQLH
thisRGZRïXMHVLÚGRHOHPHQWX
ZNWöU\PZ\VWÈSLïR]GDU]HQLH
7DNLHUR]ZLÈ]DQLHG]LDïDNLHG\
IXQNFMLQLHVÈSU]HND]\ZDQH
ĝDGQHSDUDPHWU\ LGODWHJRQLH
MHVWZ\ZRï\ZDQD]SR]LRPX
IXQNFMLDQRQLPRZHM function checkUsername() {
var elMsg = document.getElementById(’feedback’);
if (this.value.length < 5) {
HO0VJLQQHU+70/ ij1D]ZDXĝ\WNRZQLNDMHVW]E\WNUöWNDij
} else {
elMsg.innerHTML = ’’;
}
}
var el = document.getElementById(’username’);
el.addEventListener(’blur’, checkUsername, false);
To jakby funkcja została zdefiniowana
w tym miejscu, a nie gdzieś indziej.
UŻYCIE PARAMETRÓW
-HĝHOLIXQNFMLVÈSU]HND]\ZDQH
SDUDPHWU\VïRZRNOXF]RZH
thisQLHG]LDïDSRQLHZDĝ
ZïDĂFLFLHOGDQHMIXQNFMLQLH
MHVWMXĝHOHPHQWHPGRNWöUHJR
GRïÈF]RQRREVHUZDWRUD]GDU]Hñ
DOHMHVWIXQNFMÈDQRQLPRZÈ
(OHPHQWZNWöU\PZ\ZRïDQR
]GDU]HQLHPRĝQDSU]HND]DÊ
MDNRLQQ\SDUDPHWUIXQNFML
:REXSU]\SDGNDFKSUHIHURZDQ\PSRGHMĂFLHPMHVWXĝ\FLH
RELHNWXevent
276
ZDARZENIA
function checkUsername(el, minLength) {
var elMsg = document.getElementById(’feedback’);
if (el.value.length < minLength) {
HO0VJLQQHU+70/ ij1D]ZDXĝ\WNRZQLNDMHVW]E\WNUöWNDij
} else {
elMsg.innerHTML = ’’;
}
}
var el = document.getElementById(’username’);
el.addEventListener(’blur’, function() {
checkUsername(el, 5);
}, false);
RÓŻNE TYPY ZDARZEŃ
:SR]RVWDïHMF]ÚĂFLUR]G]LDïXSR]QDV]UöĝQHW\S\]GDU]HñQDNWöUHPRĝQD
XG]LHODÊRGSRZLHG]L
=GDU]HQLDVÈ]GHğQLRZDQHZ
VSHF\ğNDFML:&'20
VSHF\ğNDFML+70/
RELHNWRZ\FKPRGHODFK
SU]HJOÈGDUHNLQWHUQHWRZ\FK
%20 ľ
ľ
ľ
:LÚNV]RĂÊ]GDU]HñMHVW
Z\QLNLHPSURZDG]RQHMSU]H]
Xĝ\WNRZQLNDLQWHUDNFML]NRGHP
+70/DOHLVWQLHMHNLOND]GDU]Hñ
UHDJXMÈF\FKQD]GDU]HQLD
SU]HJOÈGDUNLLQWHUQHWRZHMOXE
LQQH]GDU]HQLD'20
:SUDZG]LHZNVLÈĝFHQLHRPöZLP\ZV]\VWNLFK]GDU]HñDOH
SU]HGVWDZLRQHSU]\NïDG\GDG]È
&LZ\VWDUF]DMÈFÈZLHG]ÚDE\Ă
PöJïSUDFRZDÊ]HZV]\VWNLPL
W\SDPL]GDU]Hñ
ZDARZENIA W3C DOM
ZDARZENIA HTML5
ZDARZENIA BOM
=GDU]HQLDZVSHF\ğNDFMLPRGHOX'20VÈ]DU]ÈG]DQHSU]H]
NRQVRUFMXP:&NWöUHMHVW
RGSRZLHG]LDOQHWDNĝH]DLQQH
VSHF\ğNDFMHPLÚG]\LQQ\PL
+70/&66L;0/:LÚNV]RĂÊ
]GDU]HñZ\PLHQLRQ\FKZW\P
UR]G]LDOHMHVWF]ÚĂFLÈVSHF\ğNDFML:&'20
6SHF\ğNDFMD+70/ QDGDO
RSUDFRZ\ZDQD V]F]HJöïRZR
Z\PLHQLD]GDU]HQLDNWöUH
SRZLQQ\E\ÊREVïXJLZDQH
SU]H]SU]HJOÈGDUNLLQWHUQHWRZH
LXĝ\ZDQHZNRG]LH+70/
1DSU]\NïDGPDP\]GDU]HQLD
Z\ZRï\ZDQHSRZ\VïDQLXIRUPXODU]DVLHFLRZHJROXE]PLDQLH
HOHPHQWöZIRUPXODU]D SR]QDV]
MHZSRGUR]G]LDOHķ=GDU]HQLD
IRUPXODU]DVLHFLRZHJRĵ 3URGXFHQFLSU]HJOÈGDUHNLQWHUQHWRZ\FKUöZQLHĝLPSOHPHQWXMÈ
SHZQH]GDU]HQLDMDNRF]ÚĂÊ
RELHNWRZHJRPRGHOXSU]HJOÈGDUNLLQWHUQHWRZHM DQJbrowser
REMHFWPRGHOĽ%20 =UHJXï\
QLHVÈWR]GDU]HQLDZ\PLHQLRQH
ZVSHF\ğNDFML:& FKRÊ
QLHNWöUHZSU]\V]ïRĂFL]RVWDQÈ
GRGDQHGRWHMVSHF\ğNDFML .LOND]WHJRURG]DMX]GDU]Hñ
MHVWSU]H]QDF]RQ\FKGRSUDF\
]HNUDQDPLGRW\NRZ\PL
3U]HJOÈGDUNLLQWHUQHWRZH
LPSOHPHQWXMÈZV]\VWNLH
]GDU]HQLD]DSRPRFÈRPöZLRQHJRMXĝRELHNWXevent
3RQDGWRLQIRUPXMÈRHOHPHQFLH
ZNWöU\PZ\VWÈSLïR]GDU]HQLH
NODZLV]XQDFLĂQLÚW\PSU]H]
Xĝ\WNRZQLNDPLHMVFXSRïRĝHQLD
NXUVRUDLWG
,VWQLHMÈMHGQDNSHZQH]GDU]HQLD
QLHREVïXJLZDQHSU]H]PRGHO
]GDU]Hñ'20ZV]F]HJöOQRĂFL
GRW\F]\WR]GDU]HñSU]H]QDF]RQ\FKGRSUDF\]HOHPHQWDPL
IRUPXODU]DVLHFLRZHJR 7HJR
URG]DMX]GDU]HQLDE\ï\F]ÚĂFLÈ
PRGHOX'20DOH]RVWDï\
SU]HQLHVLRQHGRVSHF\ğNDFML
+70/ submit
input
change
,VWQLHMÈUöZQLHĝQRZH]GDU]HQLD
ZSURZDG]RQHZVSHF\ğNDFML
+70/LREVïXJLZDQHZMHG\QLH
QDMQRZV]\FKZHUVMDFKSU]HJOÈGDUHNLQWHUQHWRZ\FK2WRNLOND
]QLFK SR]QDV]MHZSRGUR]G]LDOHķ=GDU]HQLD+70/ĵ readystatechange
DOMContentLoaded
hashchange
touchstart
touchend
touchmove
orientationchange
,QQH]GDU]HQLDVÈGRGDZDQH
ZFHOXSU]HFKZ\W\ZDQLD
JHVWöZRUD]Z\NRU]\VWDQLD
]DOHWSï\QÈF\FK]REVïXJL
SU]\VSLHV]HQLRPLHU]D3U]\
Z\NRU]\VW\ZDQLXZ\PLHQLRQ\FK
IXQNFMLQDOHĝ\]DFKRZDÊGXĝÈ
RVWURĝQRĂÊSRQLHZDĝSRV]F]HJöOQHSU]HJOÈGDUNLLQWHUQHWRZH
EDUG]RF]ÚVWRWZRU]ÈRGPLHQQH
LPSOHPHQWDFMHSRGREQHM
IXQNFMRQDOQRĂFL
ZDARZENIA 277
ZDARZENIA INTERFEJSU
UŻYTKOWNIKA
=GDU]HQLDLQWHUIHMVXXĝ\WNRZQLNDVÈVNXWNLHPLQWHUDNFML]RNQHP
SU]HJOÈGDUNLDQLHZ\ĂZLHWODQÈSU]H]QLÈVWURQÈ+70/ĽPRĝHWRE\Ê
QDSU]\NïDGZF]\WDQLHVWURQ\OXE]PLDQDZ\PLDUöZRNQDSU]HJOÈGDUNL
3URFHGXUDREVïXJL]GDU]Hñ OXE
REVHUZDWRU]GDU]HñLQWHUIHMVX
Xĝ\WNRZQLND SRZLQQDE\Ê
GRïÈF]RQDGRRNQDSU]HJOÈGDUNL
LQWHUQHWRZHM
:VWDU\PNRG]LH+70/PRĝQDQDSRWNDÊWH]GDU]HQLDXĝ\ZDQH
ZFKDUDNWHU]HDWU\EXWöZRWZLHUDMÈFHJR]QDF]QLND<body>
1DSU]\NïDGVWDUV]\NRGPRĝHXĝ\ZDÊDWU\EXWXonloadZFHOX
Z\ZRïDQLDNRGXSU]H]QDF]RQHJRGRXUXFKRPLHQLDSRZF]\WDQLX
VWURQ\LQWHUQHWRZHM ZDARZENIE :<:2’<:$1(
load
2%6’8*$:35=(*/k'$5.$&+
,17(51(72:<&+
:\ZRï\ZDQHSRSHïQ\PZF]\WDQLXVWURQ\
:HGïXJVSHF\ğNDFML'20/HYHO OLVWRSDG RPDZLDQH
LQWHUQHWRZHM=GDU]HQLHWRMHVWZ\ZRï\ZDQH
]GDU]HQLHMHVWZ\ZRï\ZDQHZRELHNFLHdocumentFKRÊZF]HĂ-
WDNĝHZZÚ]ïDFKLQQ\FKHOHPHQWöZSU]H-
QLHME\ïRZ\ZRï\ZDQHZRELHNFLHwindow:FHOX]DSHZQLHQLD
]QDF]RQ\FKGRZF]\WDQLDWDNLFKMDNREUD]\
ZVWHF]QHM]JRGQRĂFLSU]HJOÈGDUNLREVïXJXMÈREDSRGHMĂFLD
VNU\SW\LRELHNW\
SURJUDPLĂFLF]ÚVWRGRïÈF]DMÈSURFHGXU\REVïXJL]GDU]Hñload
GRRELHNWXwindow ]DPLDVWdocument unload
:\ZRï\ZDQHSRGF]DVXVXZDQLDVWURQ\
:HGïXJVSHF\ğNDFML'20/HYHORPDZLDQH]GDU]HQLHMHVW
LQWHUQHWRZHM QDMF]ÚĂFLHMSRZ\VWÈSLHQLX
Z\ZRïDQHZZÚěOHGODHOHPHQWX<body>DOHZVWDUV]\FK
ĝÈGDQLDSREUDQLDQRZHMVWURQ\ =DSR]QDM
SU]HJOÈGDUNDFKLQWHUQHWRZ\FKMHVWZ\ZRï\ZDQHZRELHNFLH
VLÚWDNĝH]RSLVHP]GDU]HQLDbeforeunload
window WÚPRĝOLZRĂÊF]ÚVWR]DFKRZXMHVLÚZFHOX]DFKRZD-
SDWU]SRGUR]G]LDïķ=GDU]HQLD+70/ĵ NWöUH
QLDZVWHF]QHM]JRGQRĂFL MHVWZ\ZRï\ZDQHSU]HGRSXV]F]HQLHPVWURQ\
SU]H]Xĝ\WNRZQLND
error
:\ZRï\ZDQHNLHG\SU]HJOÈGDUNDLQWHUQHWRZD
2EVïXJDWHJR]GDU]HQLDMHVWQLHVSöMQDZSU]HJOÈGDUNDFK
QDSRWNDEïÈG-DYD6FULSWOXEJG\]DVöEQLH
LQWHUQHWRZ\FKLGODWHJRQLHVWDQRZLRQRQLH]DZRGQHJR
LVWQLHMH
VSRVREXREVïXJLEïÚGöZ:LÚFHMLQIRUPDFMLQDWHQWHPDW
]QDMG]LHV]ZUR]G]LDOH
resize
:\ZRï\ZDQHSR]PLDQLHZLHONRĂFLRNQD
3RGF]DV]PLDQ\ZLHONRĂFLRNQDSU]HJOÈGDUNDLQWHUQHWRZD
SU]HJOÈGDUNLLQWHUQHWRZHM
QLHXVWDQQLHZ\ZRïXMH]GDU]HQLHresize'ODWHJRWHĝXQLNDM
Xĝ\FLDWHJR]GDU]HQLDGRZ\NRQ\ZDQLDVNRPSOLNRZDQHJR
NRGXSRQLHZDĝVWURQDPRĝHE\ÊZöZF]DVRGHEUDQDMDNR
ZROQRUHDJXMÈFDQDG]LDïDQLDXĝ\WNRZQLND
scroll
:\ZRï\ZDQHSRSU]HZLQLÚFLX]DZDUWRĂFL
3RGF]DVSU]HZLMDQLD]DZDUWRĂFLRNQDSU]HJOÈGDUNDLQWHUQHWR-
VWURQ\ZJöUÚOXEZGöï0RĝHRGQRVLÊVLÚ
ZDQLHXVWDQQLHZ\ZRïXMH]GDU]HQLHscroll'ODWHJRWHĝXQLNDM
GRFDïHMVWURQ\OXERNUHĂORQHJRHOHPHQWXQD
Xĝ\FLDWHJR]GDU]HQLDGRZ\NRQ\ZDQLDVNRPSOLNRZDQHJR
VWURQLH QDSU]\NïDG<textarea>SRVLDGDMÈFH-
NRGXJG\Xĝ\WNRZQLNSU]HZLMD]DZDUWRĂÊVWURQ\
JRSDVNLSU]HZLMDQLD 278 ZDARZENIA
ZDARZENIE LOAD
=GDU]HQLHloadMHVWEDUG]R
F]ÚVWRXĝ\ZDQHGRZ\NRQDQLD
VNU\SWXNWöU\PXVLX]\VNDÊ
GRVWÚSGR]DZDUWRĂFLQDVWURQLH
:RPDZLDQ\PSU]\NïDG]LH
IXQNFMDRQD]ZLHsetup()
XDNW\ZQLDSROHWHNVWRZHSR
ZF]\WDQLXVWURQ\
=GDU]HQLHMHVWDXWRPDW\F]QLH
Z\ZRï\ZDQHSU]H]RELHNW
windowSR]DNRñF]HQLX
ZF]\W\ZDQLDVWURQ\+70/oraz
MHM]DVREöZREUD]öZVW\OöZ
&66VNU\SWöZ QDZHW]DZDUWRĂFLGRVWDUF]DQHMSU]H]ğUP\
WU]HFLHQDSU]\NïDGEDQHUöZ
UHNODPRZ\FK )XQNFMDsetup()QLHEÚG]LH
G]LDïDïDSU]HGZF]\WDQLHP
VWURQ\SRQLHZDĝRSLHUDVLÚQD
Z\V]XNDQLXHOHPHQWXNWöUHJR
ZDUWRĂFLÈDWU\EXWXidMHVW
username2GQDOH]LRQ\HOHPHQW
MHVWQDVWÚSQLHDNW\ZRZDQ\
c06/js/load.js
JAVASCRIPT
function setup() {
// Deklaracja funkcji.
var textInput;
// Utworzenie zmiennej.
textInput = document.getElementById(’username’); 3REUDQLHSRODWHNVWRZHJR
XVHUQDPH
textInput.focus();
8DNW\ZQLHQLHHOHPHQWXSRODWHNVWRZHJR
}
window.addEventListener(’load’, setup, false);
3RZF]\WDQLXVWURQ\EÚG]LHZ\ZRïDQDIXQNFMDVHWXS WYNIK
=ZUöÊXZDJÚQDGRïÈF]HQLHREVHUZDWRUD]GDU]Hñ
GRRELHNWXwindow DQLHRELHNWXdocument
SRQLHZDĝZRPDZLDQ\PSU]\NïDG]LHPRĝHWR
GRSURZDG]LÊGRSUREOHPöZZ\QLNDMÈF\FK]EUDNX
]JRGQRĂFLPLÚG]\SU]HJOÈGDUNDPL 3RQLHZDĝ]GDU]HQLHloadMHVWZ\ZRï\ZDQH
GRSLHURSRZF]\WDQLXFDïHM]DZDUWRĂFLVWURQ\
REUD]\VNU\SW\DQDZHWUHNODP\ Xĝ\WNRZQLN
UR]SRF]QLHNRU]\VWDQLH]HVWURQ\zanimQDVWÈSL
XUXFKRPLHQLHVNU\SWX
-HĝHOLHOHPHQW<script>]QDMGXMHVLÚQDNRñFX
VWURQ\+70/WRPRGHO'20ZF]\WDHOHPHQW\
IRUPXODU]DVLHFLRZHJRSU]HGXUXFKRPLHQLHP
VNU\SWXDW\PVDP\PQLHPDNRQLHF]QRĂFL
RF]HNLZDQLDQD]GDU]HQLHload 3DWU]WDNĝH
]GDU]HQLHDOMContentLoadedZSRGUR]G]LDOH
ķ=GDU]HQLD+70/ĵLPHWRGDdocument.ready()
ELEOLRWHNLM4XHU\SU]HGVWDZLRQDZUR]G]LDOH
ZSRGUR]G]LDOHķ6SUDZG]HQLHF]\VWURQDMHVW
JRWRZDGRWHJRE\]QLÈSUDFRZDÊĵ =SXQNWXZLG]HQLDXĝ\WNRZQLNDV]F]HJöOQLHZLGRF]QDEÚG]LHZSURZDG]RQDSU]H]VNU\SW]PLDQD
Z\JOÈGXVWURQ\]PLDQDDNW\ZQHJRHOHPHQWX
OXEZ\EöUHOHPHQWXIRUPXODU]DJG\Xĝ\WNRZQLN
]QLHJRNRU]\VWD 3RQDGWRZLWU\QDPRĝHE\Ê
ZF]\W\ZDQDZROQLHM :\REUDěVRELHIRUPXODU]VLHFLRZ\]ZLHORPD
SRODPLWHNVWRZ\PL8ĝ\WNRZQLNPöJïMXĝPLHÊZ\SHïQLRQHSHZQHSROD QDSU]\NïDGGUXJLHLWU]HFLH ZFKZLOLXUXFKRPLHQLDVNU\SWXNWöU\DNW\ZXMH
SLHUZV]HSROH$NW\ZDFMDWDQDVWÚSXMH]E\WSöěQR
L]DNïöFDSUDFÚXĝ\WNRZQLNRZL
ZDARZENIA ZDARZENIA FOCUS I BLUR
(OHPHQW\+70/]NWöU\PLXĝ\WNRZQLNSURZDG]LLQWHUDNFMÚQDSU]\NïDG
ïÈF]DLHOHPHQW\IRUPXODU]DVLHFLRZHJRPRJÈVWDZDÊVLÚDNW\ZQH
,VWQLHMÈ]GDU]HQLDZ\ZRï\ZDQHDNW\ZDFMÈOXEGH]DNW\ZDFMÈHOHPHQWöZ
-HĝHOL]GDQ\PHOHPHQWHP+70/PRĝQD
SURZDG]LÊLQWHUDNFMÚWRHOHPHQWWHQPRĝHVWDÊ
VLÚDNW\ZQ\OXEQLHDNW\ZQ\3RQDGWR]DSRPRFÈ
NODZLV]DTabPRĝQDSRUXV]DÊVLÚPLÚG]\HOHPHQWDPLNWöUHPRJÈE\ÊDNW\ZQH WDWHFKQLNDMHVW
F]ÚVWRZ\NRU]\VW\ZDQDSU]H]RVRE\QLHSHïQRVSUDZQH :VWDUV]\FKVNU\SWDFK]GDU]HQLDfocus i blurVÈ
EDUG]RF]ÚVWRXĝ\ZDQHZFHOX]PLDQ\Z\JOÈGX
HOHPHQWXNWöU\VWDïVLÚDNW\ZQ\-HGQDNREHFQLH
SVHXGRNODVD&66RQD]ZLH:focusMHVWOHSV]\P
UR]ZLÈ]DQLHP RLOHQLHWU]HEDPLHÊZSï\ZXQD
HOHPHQWinnyQLĝWHQNWöU\VWDïVLÚDNW\ZQ\ =GDU]HQLDfocus i blurVÈEDUG]RF]ÚVWRZ\NRU]\VW\ZDQHZIRUPXODU]DFKVLHFLRZ\FK6]F]HJöOQLH
Xĝ\WHF]QHVÈZQDVWÚSXMÈF\FKV\WXDFMDFK
ľ.RQLHF]QRĂÊZ\ĂZLHWOHQLDSRGSRZLHG]LOXE
NRPXQLNDWXXĝ\WNRZQLNRZLZWUDNFLHMHJRSUDF\
]HOHPHQWDPLIRUPXODU]DVLHFLRZHJR SRGSRZLHG]LWHVÈ]Z\NOHZ\ĂZLHWODQHZinnych
HOHPHQWDFKDnieW\FK]NWöU\PLXĝ\WNRZQLN
ZïDĂQLHSUDFXMH .RQLHF]QRĂÊSU]HSURZDG]HQLDZHU\ğNDFML
IRUPXODU]DVLHFLRZHJRSRGF]DVSU]HMĂFLD
Xĝ\WNRZQLND]MHGQHMNRQWURONLGRLQQHM DQLH
RF]HNLZDQLH]ZHU\ğNDFMÈGRFKZLOLZ\VïDQLD
FDïHJRIRUPXODU]DVLHFLRZHJR ľ
ZDARZENIE
:<:2’<:$1(
35=(3’<:='$5=(”
focus
.LHG\HOHPHQWVWDMHVLÚDNW\ZQ\GODMHJRZÚ]ïD'20MHVW
Z\ZRï\ZDQH]GDU]HQLHfocus
3U]HFKZ\W\ZDQLH
blur
.LHG\HOHPHQWVWDMHVLÚQLHDNW\ZQ\GODMHJRZÚ]ïD'20
MHVWZ\ZRï\ZDQH]GDU]HQLHblur
3U]HFKZ\W\ZDQLH
focusin
3RGREQLHMDNfocus SDWU]SRZ\ĝHMJG\SRZVWDZDïDWD
NVLÈĝND]GDU]HQLHWRQLHE\ïRREVïXJLZDQHZSU]HJOÈGDUFH
)LUHIR[ 3U]HFKZ\W\ZDQLHLSURSDJRZDQLH
focusout
3RGREQLHMDNblur SDWU]SRZ\ĝHMJG\SRZVWDZDïDWD
NVLÈĝND]GDU]HQLHWRQLHE\ïRREVïXJLZDQHZSU]HJOÈGDUFH
)LUHIR[ 3U]HFKZ\W\ZDQLHLSURSDJRZDQLH
280 ZDARZENIA
ZDARZENIA FOCUS I BLUR
:SU]HGVWDZLRQ\PSRQLĝHMSU]\NïDG]LHSROH
WHNVWRZHVWDMHVLÚDNW\ZQHLQLHDNW\ZQHDRGSRZLHGQLNRPXQLNDWMHVWZ\ĂZLHWODQ\Xĝ\WNRZQLNRZL
ZHOHPHQFLH<div>]QDMGXMÈF\PVLÚSRGSROHP
WHNVWRZ\P'RREVïXJLNRPXQLNDWXXĝ\ZDQHVÈ
GZLHIXQNFMH
3LHUZV]DWRtipUsername()Z\ZRï\ZDQDJG\
SROHWHNVWRZHVWDMHVLÚDNW\ZQH=PLDQLHXOHJD
DWU\EXWclassHOHPHQWX]DZLHUDMÈFHJRNRPXQLNDW
LXDNWXDOQLDQDMHVW]DZDUWRĂÊHOHPHQWX
c06/js/focus-blur.js
JAVASCRIPT
function checkUsername() {
var username = el.value;
// Deklaracja funkcji.
1D]ZDXĝ\WNRZQLNDMHVW
// przechowywana w zmiennej.
if (username.length < 5) {
-HĝHOLQD]ZDXĝ\WNRZQLNDPD
PQLHMQLĝ]QDNöZ
elMsg.className = ’warning’;
=PLDQDDWU\EXWXFODVV
// w elemencie komunikatu.
HO0VJWH[W&RQWHQW ij1D]ZDQDGDO]E\WNUöWNDij// Uaktualnienie komunikatu.
} else {
// W przeciwnym razie.
elMsg.textContent = ’’;
8VXQLÚFLHNRPXQLNDWX
}
}
function tipUsername() {
// Deklaracja funkcji.
elMsg.className = ’tip’;
=PLDQDDWU\EXWXFODVV
// w elemencie komunikatu.
HO0VJLQQHU+70/ ij1D]ZDXĝ\WNRZQLNDPXVLPLHÊSU]\QDMPQLHM]QDNöZij
// Dodanie komunikatu.
}
var el = document.getElementById(’username’);
var elMsg = document.getElementById(’feedback’);
'DQHZHMĂFLRZHZSROXXVHUQDPH
(OHPHQWZ\ĂZLHWODMÈF\NRPXQLNDW
.LHG\SROHWHNVWRZHVWDMHVLÚDNW\ZQHOXEQLHDNW\ZQH
QDOHĝ\Z\ZRïDÊRGSRZLHGQLÈIXQNFMÚ
el.addEventListener(’focus’, tipUsername, false); $NW\ZQHWLS8VHUQDPH el.addEventListener(’blur’, checkUsername, false); // 1LHDNW\ZQHFKHFN8VHUQDPH WYNIK
'UXJDWRcheckUsername()Z\ZRï\ZDQDJG\
SROHWHNVWRZHVWDMHVLÚQLHDNW\ZQH7DIXQNFMD
GRGDMHNRPXQLNDWL]PLHQLDDWU\EXWclassMHĂOL
QD]ZDXĝ\WNRZQLNDPDPQLHMQLĝSLÚÊ]QDNöZ
:SU]HFLZQ\PUD]LHQDVWÚSXMHXVXQLÚFLHNRPXQLNDWX
ZDARZENIA 281
ZDARZENIA MYSZY
=GDU]HQLDP\V]\VÈZ\ZRï\ZDQHSRGF]DV
SRUXV]DQLDP\V]ÈRUD]NOLNDQLDMHMSU]\FLVNDPL
:V]\VWNLHHOHPHQW\]QDMGXMÈFHVLÚQDVWURQLH
REVïXJXMÈ]GDU]HQLDP\V]\DSRQDGWRZV]\VWNLH
SURSDJXMÈWH]GDU]HQLD=ZUöÊXZDJÚQDIDNWĝH
DNFMHVÈ]XSHïQLHLQQHZXU]ÈG]HQLDFKZ\SRVDĝRQ\FKZHNUDQGRW\NRZ\
8QLHPRĝOLZLHQLH]DFKRZDQLDGRP\ĂOQHJRPRĝH
VSRZRGRZDÊQLHRF]HNLZDQHZ\QLNLĽQDSU]\NïDG
]GDU]HQLHclickMHVWZ\ZRï\ZDQHMHG\QLHSRGF]DV
MHGQRF]HVQHJRZ\VWÈSLHQLD]GDU]Hñmousedown
i mouseup
ZDARZENIE
:<:2’<:$1(
(.5$1'27<.2:<
click
:\ZRï\ZDQHJG\Xĝ\WNRZQLNNOLNQLHSRGVWDZRZ\P
SU]\FLVNLHPP\V]\ QDMF]ÚĂFLHMMHVWWROHZ\SU]\FLVN
ZP\V]DFKZ\SRVDĝRQ\FKZFRQDMPQLHMGZDSU]\FLVNL =GDU]HQLHclickEÚG]LHZ\ZRï\ZDQHGODHOHPHQWXQDG
NWöU\PDNWXDOQLH]QDMGXMHVLÚNXUVRUP\V]\=RVWDQLH
Z\ZRïDQHWDNĝHZWHG\JG\Xĝ\WNRZQLNQDFLĂQLHNODZLV]Esc
QDNODZLDWXU]HNLHG\HOHPHQWMHVWDNW\ZQ\
1DFLĂQLÚFLHHNUDQXGRW\NRZHJR
MHVWWUDNWRZDQHMDNMHGQRNURWQH
NOLNQLÚFLHOHZ\PSU]\FLVNLHP
P\V]\
dblclick
:\ZRï\ZDQHJG\ZNUöWNLPRGVWÚSLHF]DVXXĝ\WNRZQLN
GZXNURWQLHNOLNQLHSRGVWDZRZ\PSU]\FLVNLHPP\V]\
'ZXNURWQHQDFLĂQLÚFLHHNUDQX
GRW\NRZHJRMHVWWUDNWRZDQH
MDNGZXNURWQHNOLNQLÚFLHOHZ\P
SU]\FLVNLHPP\V]\
mousedown
:\ZRï\ZDQHJG\Xĝ\WNRZQLNZFLĂQLHGRZROQ\SU]\FLVN
P\V]\ QLHPRĝHE\ÊZ\ZRïDQHSU]H]QDFLĂQLÚFLHNODZLV]D
QDNODZLDWXU]H 0RĝQDXĝ\Ê]GDU]HQLD
touchstart
mouseup
:\ZRï\ZDQHJG\Xĝ\WNRZQLN]ZROQLSU]\FLVNP\V]\
QLHPRĝHE\ÊZ\ZRïDQHSU]H]QDFLĂQLÚFLHNODZLV]DQD
NODZLDWXU]H 0RĝQDXĝ\Ê]GDU]HQLDtouchend
mouseover
:\ZRï\ZDQHJG\NXUVRU]QDMGRZDïVLÚQD]HZQÈWU]
HOHPHQWXL]RVWDïXPLHV]F]RQ\QDGHOHPHQWHP QLHPRĝH
E\ÊZ\ZRïDQHSU]H]QDFLĂQLÚFLHNODZLV]DQDNODZLDWXU]H :\ZRï\ZDQHJG\NXUVRU]RVWDQLHSU]HVXQLÚW\QDGHOHPHQW
mouseout
:\ZRï\ZDQHJG\NXUVRUMHVWQDGHOHPHQWHPDQDVWÚSQLH
]RVWDMHSU]HQLHVLRQ\QDGLQQ\ĽQD]HZQÈWU]HOHPHQWX
ELHĝÈFHJROXEMHJRHOHPHQWöZSRWRPQ\FK QLHPRĝHE\Ê
Z\ZRïDQHSU]H]QDFLĂQLÚFLHNODZLV]DQDNODZLDWXU]H :\ZRï\ZDQHJG\NXUVRU
]RVWDQLHSU]HQLHVLRQ\]QDG
HOHPHQWX
mousemove
:\ZRï\ZDQHSRGF]DVSRUXV]DQLDNXUVRUHPQDGHOHPHQWHP :\ZRï\ZDQHSRGF]DVSRUXV]D7R]GDU]HQLHMHVWZ\ZRï\ZDQHQLHXVWDQQLH QLHPRĝHE\Ê
QLDNXUVRUHP
Z\ZRïDQHSU]H]QDFLĂQLÚFLHNODZLV]DQDNODZLDWXU]H KIEDY UŻYWAĆ STYLÓW CSS?
=GDU]HQLDmouseover i mouseoutVÈEDUG]RF]ÚVWR
Xĝ\ZDQHGR]PLDQ\Z\JOÈGXHOHPHQWöZOXE
]PLDQ\REUD]öZSRXPLHV]F]HQLXNXUVRUDP\V]\
QDGREUD]HP$E\]PLHQLÊZ\JOÈGHOHPHQWX
SUHIHURZDQÈWHFKQLNÈMHVWXĝ\FLHSVHXGRNODV\&66
RQD]ZLH:hover
282 ZDARZENIA
DLACZEGO MAMY ODDZIELNE
ZDARZENIA MOUSEDOWN I MOUSEUP?
=GDU]HQLDmouseover i mouseoutVÈRGG]LHOQ\PL
]GDU]HQLDPLZ\ZRï\ZDQ\PLSRGF]DVRGSRZLHGQLRQDFLĂQLÚFLDL]ZROQLHQLDSU]\FLVNXP\V]\
1DMF]ÚĂFLHMVÈZ\NRU]\VW\ZDQHZFHOXGRGDQLD
IXQNFMLķSU]HFLÈJQLMLXSXĂÊĵOXEWHĝ]DSHZQLHQLD
SHZQHMNRQWUROLZJUDFK
ZDARZENIE CLICK
&HOHPSRQLĝV]HJRSU]\NïDGX
MHVWXĝ\FLH]GDU]HQLDclickGR
XVXQLÚFLDGXĝHJRNRPXQLNDWX
Z\ĂZLHWODQHJRQDĂURGNXVWURQ\
-HGQDNZSLHUZV]HMNROHMQRĂFL
VNU\SWPXVLXWZRU]\ÊWHQ
NRPXQLNDW
3RQLHZDĝNRPXQLNDW]QDMGXMH
VLÚQDQDMZ\ĝV]HMZDUVWZLH
VWURQ\SRZLQLHQE\ÊZ\ĂZLHWODQ\W\ONRZWHG\JG\REVïXJD
-DYD6FULSWMHVWZïÈF]RQD
ZSU]HFLZQ\PUD]LHXĝ\WNRZQLNQLHEÚG]LHPLDïPRĝOLZRĂFL
MHJRXNU\FLD *G\Z\VWÈSL]GDU]HQLHclick
QDïÈF]X]DP\NDMÈF\PNRPXQLNDWQDVWÈSLZ\ZRïDQLHIXQNFML
dismissNote()=DGDQLHP
Z\PLHQLRQHMIXQNFMLMHVW
XVXQLÚFLHNRPXQLNDWXGRGDQHJR
SU]H]WHQVDPVNU\SW
c06/js/click.js
JAVASCRIPT
3U]\JRWRZDQLHNRGX+70/GODNRPXQLNDWX
var msg = ’<div class=\”header\”><a id=\”close\” href=”#”>zamknij X</a></div>’;
PVJ ijGLY!K!.RQVHUZDFMDV\VWHPXK!ij
PVJ ij0LÚG]\JRG]LQDPLDQDV]HVHUZHU\EÚGÈNRQVHUZRZDQHij
PVJ ij:W\PF]DVLHPRJÈZ\VWÈSLÊQLHZLHONLH]DNïöFHQLDZG]LDïDQLXXVïXJGLY!ij
var elNote = document.createElement(’div’);
elNote.setAttribute(’id’, ’note’);
elNote.innerHTML = msg;
document.body.appendChild(elNote);
8WZRU]HQLHQRZHJRHOHPHQWX
'RGDQLHDWU\EXWXLGRZDUWRĂFLQRWH
// Dodanie komunikatu.
8PLHV]F]HQLHHOHPHQWXQDVWURQLH
function dismissNote() {
document.body.removeChild(elNote);
}
// Deklaracja funkcji.
8VXQLÚFLHHOHPHQWX
var elClose = document.getElementById(’close’); 3REUDQLHSU]\FLVNX]DP\NDMÈFHJR
elClose.addEventListener(’click’, dismissNote, false);
.OLNQLÚFLHSU]\FLVNX]DP\NDMÈFHJR
WYNIK
DOSTĘPNOŚĆ
=GDU]HQLHclickPRĝHE\Ê]DVWRVRZDQHZGRZROQ\PHOHPHQFLH-HGQDNQDMOHSLHMVWRVRZDÊ
MHZHOHPHQWDFKQDMF]ÚĂFLHMNOLNDQ\FKLQLHGRVWÚSQ\FKGODRVöENWöUHGRQDZLJDFMLSRVWURQLH
LQWHUQHWRZHMZ\NRU]\VWXMÈNODZLDWXUÚ
%\ÊPRĝHEÚG]LHV]NXV]RQ\Xĝ\FLHP]GDU]HQLD
clickZFHOXXUXFKRPLHQLDVNU\SWXJG\Xĝ\WNRZQLNNOLNQLHHOHPHQWIRUPXODU]DVLHFLRZHJR:W\P
SU]\SDGNXOHSV]\PUR]ZLÈ]DQLHPMHVWXĝ\FLH
]GDU]HQLDfocusSRQLHZDĝMHVWRQRZ\ZRï\ZDQH
JG\Xĝ\WNRZQLNX]\VNXMHGRVWÚSGRNRQWURONL
]DSRPRFÈNODZLV]DTab
ZDARZENIA 283
GDZIE WYSTĘPUJĄ ZDARZENIA?
2ELHNWeventPRĝHGRVWDUF]\ÊLQIRUPDFMHRPLHMVFXSRïRĝHQLDNXUVRUD
JG\Z\VWÈSLïR]GDU]HQLH
X
EKRAN
STRONA
KLIENT
Y
EKRAN
STRONA
KLIENT
:ïDĂFLZRĂFLscreenX i screenY
ZVND]XMÈSRïRĝHQLHNXUVRUDQD
HNUDQLHPRQLWRUD3RPLDUMHVW
GRNRQ\ZDQ\Z]JOÚGHPOHZHJR
JöUQHJRURJXHNUDQX DQLHRNQD
SU]HJOÈGDUNL :ïDĂFLZRĂFLpageX i pageY
ZVND]XMÈSRïRĝHQLHNXUVRUD
Z]JOÚGHPFDïHMVWURQ\
LQWHUQHWRZHM3RF]ÈWHNVWURQ\
PRĝH]QDMGRZDÊVLÚSR]D
YLHZSRUWHP'ODWHJRWHĝQDZHW
MHĂOLNXUVRU]QDMGXMHVLÚZW\P
VDP\PSRïRĝHQLXZVSöïU]ÚGQH
VWURQ\LNOLHQWDPRJÈE\ÊUöĝQH
:ïDĂFLZRĂFLclientX i clientY
ZVND]XMÈSRïRĝHQLHNXUVRUD
ZYLHZSRUFLHSU]HJOÈGDUNL
-HĝHOLXĝ\WNRZQLNSU]HZLQÈï
VWURQÚLMHMSRF]ÈWHNSR]RVWDMH
QLHZLGRF]Q\WRQLHPDWR
ZSï\ZXQDZVSöïU]ÚGQHNOLHQWD
284 ZDARZENIA
USTALENIE POŁOŻENIA
:SRQLĝV]\PSU]\NïDG]LHJG\
NXUVRUP\V]\MHVWSU]HPLHV]F]DQ\QDHNUDQLHSRODWHNVWRZHQD
SRF]ÈWNXVWURQ\EÚGÈZ\ĂZLHWODï\DNWXDOQHMHJRSRïRĝHQLH
:WHQVSRVöEEÚGÈ]DGHPRQVWURZDQHWU]\UöĝQHSRïRĝHQLD
MDNLHPRJÈZ\VWÚSRZDÊ
SRGF]DVSRUXV]DQLDP\V]È
OXEQDFLVNDQLDMHMGRZROQ\FK
SU]\FLVNöZ
JAVASCRIPT
=ZUöÊXZDJÚQDWRMDNIXQNFMD
showPosition()RWU]\PXMH
SDUDPHWUeventRGZRïXMÈF\VLÚ
GRRELHNWXevent3RïRĝHQLH
NXUVRUDP\V]\MHVWRGF]\W\ZDQH
]ZïDĂFLZRĂFLZ\PLHQLRQHJR
RELHNWXevent
c06/js/position.js
var sx = document.getElementById(’sx’);
(OHPHQWSU]HFKRZXMÈF\ZDUWRĂÊZïDĂFLZRĂFLVFUHHQ;
var sy = document.getElementById(’sy’);
(OHPHQWSU]HFKRZXMÈF\ZDUWRĂÊZïDĂFLZRĂFLVFUHHQ<
var px = document.getElementById(’px’);
(OHPHQWSU]HFKRZXMÈF\ZDUWRĂÊZïDĂFLZRĂFLSDJH;
var py = document.getElementById(’py’);
(OHPHQWSU]HFKRZXMÈF\ZDUWRĂÊZïDĂFLZRĂFLSDJH<
var cx = document.getElementById(’cx’);
(OHPHQWSU]HFKRZXMÈF\ZDUWRĂÊZïDĂFLZRĂFLFOLHQW;
var cy = document.getElementById(’cy’);
(OHPHQWSU]HFKRZXMÈF\ZDUWRĂÊZïDĂFLZRĂFLFOLHQW<
function showPosition(event) { // Deklaracja funkcji.
sx.value = event.screenX;
8DNWXDOQLHQLHHOHPHQWXZDUWRĂFLÈZïDĂFLZRĂFLVFUHHQ;
sy.value = event.screenY;
8DNWXDOQLHQLHHOHPHQWXZDUWRĂFLÈZïDĂFLZRĂFLVFUHHQ<
px.value = event.pageX;
8DNWXDOQLHQLHHOHPHQWXZDUWRĂFLÈZïDĂFLZRĂFLSDJH;
py.value = event.pageY;
8DNWXDOQLHQLHHOHPHQWXZDUWRĂFLÈZïDĂFLZRĂFLSDJH<
cx.value = event.clientX;
8DNWXDOQLHQLHHOHPHQWXZDUWRĂFLÈZïDĂFLZRĂFLFOLHQW;
cy.value = event.clientY;
8DNWXDOQLHQLHHOHPHQWXZDUWRĂFLÈZïDĂFLZRĂFLFOLHQW<
}
var el = document.getElementById(’body’);
// Pobranie elementu <body>.
el.addEventListener(’mousemove’, showPosition, false);
5XFKSRZRGXMHXDNWXDOQLHQLHZDUWRĂFL
WYNIK
ZDARZENIA 285
ZDARZENIA KLAWIATURY
=GDU]HQLDNODZLDWXU\VÈZ\ZRï\ZDQHJG\Xĝ\WNRZQLNNRU]\VWD]NODZLDWXU\
VÈZ\ZRï\ZDQHWDNĝHGODNDĝGHJRURG]DMXXU]ÈG]HQLDZ\SRVDĝRQHJR
ZNODZLDWXUÚ ZDARZENIE
:<:2’<:$1(
input
:\ZRï\ZDQHSRGF]DV]PLDQ\ZDUWRĂFLHOHPHQWX<input>OXE<textarea>2EVïXJLZDQHSRUD]
SLHUZV]\Z,( FKRÊQLHZ\ZRï\ZDQHSRGF]DVXVXZDQLDWHNVWXZ,( :SU]\SDGNXVWDUV]\FK
SU]HJOÈGDUHNLQWHUQHWRZ\FKPRĝQDZ\NRU]\VWDÊUR]ZLÈ]DQLHDZDU\MQHRSDUWHQD]GDU]HQLX
keydown
keydown
:\ZRï\ZDQHJG\Xĝ\WNRZQLNQDFLĂQLHGRZROQ\NODZLV]QDNODZLDWXU]H-HĝHOLNODZLV]EÚG]LH
SU]\WU]\PDQ\]GDU]HQLHEÚG]LHZ\ZRï\ZDQHQLHXVWDQQLH7RMHVWEDUG]RZDĝQHSRQLHZDĝ
GRNïDGQLHSRZLHOD]DFKRZDQLHZSROXWHNVWRZ\PNLHG\Xĝ\WNRZQLNSU]\WU]\PDQDFLĂQLÚW\NODZLV]
WHQVDP]QDNEÚG]LHQLHXVWDQQLHZVWDZLDQ\ZSROXWHNVWRZ\P keypress
:\ZRï\ZDQHJG\Xĝ\WNRZQLNQDFLĂQLHNODZLV]FRVSRZRGXMHZ\ĂZLHWOHQLHQDHNUDQLHRGSRZLHGQLHJR]QDNX=GDU]HQLHWRQLHEÚG]LHZ\ZRï\ZDQHQDSU]\NïDGSRQDFLĂQLÚFLXNODZLV]DNXUVRUD
FKRÊZVSRPQLDQ\]QDNSRZRGXMHZ\ZRïDQLH]GDU]HQLDkeydown-HĝHOLXĝ\WNRZQLNSU]\WU]\PD
QDFLĂQLÚW\NODZLV]]GDU]HQLHEÚG]LHZ\ZRï\ZDQHQLHXVWDQQLH
keyup
:\ZRï\ZDQHJG\Xĝ\WNRZQLN]ZDOQLDNODZLV]QDNODZLDWXU]H=GDU]HQLDkeydown i keypressVÈ
Z\ZRï\ZDQHSU]HGZ\ĂZLHWOHQLHP]QDNXQDHNUDQLHSRGF]DVJG\keyupMXĝSRMHJRZ\ĂZLHWOHQLX
7U]\]GDU]HQLDNWöU\FKQD]Z\]DF]\QDMÈVLÚRG
SU]HGURVWNDkeyVÈZ\ZRï\ZDQHZSRQLĝV]HM
NROHMQRĂFL
keydownĽXĝ\WNRZQLNQDFLVQÈïNODZLV]
keypressĽXĝ\WNRZQLNQDFLVQÈïOXESU]\WU]\PXMHQDFLĂQLÚW\NODZLV]SRZRGXMÈF\Z\ĂZLHWOHQLH]QDNXQDVWURQLH
keyupĽXĝ\WNRZQLN]ZROQLïNODZLV]
KTÓRY KLAWISZ ZOSTAŁ NACIŚNIĘTY?
.LHG\Xĝ\ZDV]]GDU]HñkeydownOXEkeypress
RELHNWeventSRVLDGDZïDĂFLZRĂÊRQD]ZLH
keyCode0RĝQDMÈZ\NRU]\VWDÊGRXVWDOHQLD
NWöU\NODZLV]]RVWDïQDFLĂQLÚW\-HGQDNZDUWRĂFLÈ
]ZURWQÈQLHEÚG]LHOLWHUDSU]\SRU]ÈGNRZDQDGDQHPXNODZLV]RZL MDNPRĝQDRF]HNLZDÊ DOHNRG
$6&,,SU]HGVWDZLDMÈF\PDïÈOLWHUÚRGSRZLDGDMÈFÈ
WHPXNODZLV]RZL7DEHOÚ]QDNöZLRGSRZLDGDMÈF\FKLPNRGöZ$6&,,]QDMG]LHV]ZLQWHUQHFLHQD
VWURQLHSRĂZLÚFRQHMNVLÈĝFH
-HĝHOLFKFHV]SREUDÊU]HF]\ZLVWÈOLWHUÚOXEF\IUÚ
]DPLDVWRGSRZLDGDMÈFHJRMHMNRGX$6&,, RELHNW
String]DZLHUDZEXGRZDQÈPHWRGÚRQD]ZLH
fromCharCode()NWöUDSU]HSURZDG]DRGSRZLHGQLÈNRQZHUVMÚ
String.fromCharCode(event.keycode);
286 ZDARZENIA
KTÓRY KLAWISZ ZOSTAŁ
NACIŚNIĘTY?
:RPDZLDQ\PSU]\NïDG]LH
HOHPHQW<textarea>]DZLHUD
W\ONR]QDNöZ.LHG\Xĝ\WNRZQLNZSURZDG]DWHNVWVNU\SW
Z\ĂZLHWODOLF]EÚ]QDNöZMDNLH
MHV]F]HSR]RVWDï\GRXĝ\FLD
2EVHUZDWRU]GDU]HñVSUDZG]D
]GDU]HQLDkeypressGODHOHPHQWX<textarea>=DNDĝG\P
UD]HPJG\Z\VWÈSL]GDU]HQLH
IXQNFMDcharCount()XDNWXDOQLD
OLF]EÚ]QDNöZLSRND]XMH
RVWDWQLRXĝ\W\
JAVASCRIPT
var el;
=GDU]HQLHinputEÚG]LHVSUDZG]DïRVLÚGRVNRQDOHSRGF]DV
XDNWXDOQLDQLDOLF]E\SR]RVWDï\FK
]QDNöZJG\Xĝ\WNRZQLN
ZNOHMDWHNVWOXEXĝ\ZDNODZLV]D
BackspaceFKRÊQLHGRVWDUF]\
ZöZF]DVLQIRUPDFMLRRVWDWQLP
QDFLĂQLÚW\PNODZLV]X
c06/js/keypress.js
// Deklaracja zmiennych.
function charCount(e) {
// Deklaracja funkcji.
YDUWH[W(QWHUHGFKDU'LVSOD\FRXQWHUODVW.H\// Deklaracja zmiennych.
textEntered = document.getElementById(’message’).value;
7HNVWSRGDQ\SU]H]Xĝ\WNRZQLND
charDisplay = document.getElementById(’charactersLeft’); (OHPHQWOLF]QLND
counter = (180 - (textEntered.length));
/LF]EDSR]RVWDï\FK]QDNöZ
charDisplay.textContent = counter;
:\ĂZLHWOHQLHOLF]E\SR]RVWDï\FK
]QDNöZ
lastkey = document.getElementById(’lastkey’);
6SUDZG]HQLHRVWDWQLHJR
QDFLĂQLÚWHJRNODZLV]D
ODVWNH\WH[W&RQWHQW ij2VWDWQLNODZLV]PDNRG$6&,,ijHNH\&RGH
// Utworzenie komunikatu.
}
el = document.getElementById(’message’);
// Pobranie elementu komunikatu.
el.addEventListener(’keypress’, charCount, false); =GDU]HQLHNH\SUHVV
WYNIK
ZDARZENIA 287
ZDARZENIA FORMULARZA
SIECIOWEGO
,VWQLHMÈGZD]GDU]HQLDQDMF]ÚĂFLHMXĝ\ZDQHZIRUPXODU]DFKVLHFLRZ\FK
1DMF]ÚĂFLHMEÚG]LHV]VLÚVSRW\NDï]H]GDU]HQLHPsubmitVWRVRZDQ\PSRGF]DV
ZHU\ğNDFMLIRUPXODU]DVLHFLRZHJR
ZDARZENIE
:<:2’<:$1(
submit
.LHG\IRUPXODU]VLHFLRZ\]RVWDMH
Z\VïDQ\]GDU]HQLHsubmitMHVW
Z\ZRï\ZDQHZZÚěOHSU]HGVWDZLDMÈF\PHOHPHQW<form>1DMF]ÚĂFLHM
MHVWXĝ\ZDQHZWUDNFLHVSUDZG]DQLD
ZDUWRĂFLZSURZDG]RQ\FKSU]H]
Xĝ\WNRZQLNDSU]HGLFKZ\VïDQLHPGR
VHUZHUD
change
:\ZRï\ZDQHSRGF]DV]PLDQ\
VWDQXZLHOXHOHPHQWöZIRUPXODU]D
VLHFLRZHJRQDSU]\NïDG
GRNRQDQRZ\ERUX]UR]ZLMDQHM
OLVW\
Z\EUDQRSU]\FLVNRSFML
]D]QDF]RQROXEXVXQLÚWR
]D]QDF]HQLHSRODZ\ERUX
&]ÚVWROHSV]\PUR]ZLÈ]DQLHP
MHVWXĝ\FLH]GDU]HQLDchange
]DPLDVWclickSRQLHZDĝNOLNQLÚFLH
P\V]ÈQLHMHVWMHG\Q\PVSRVREHP
ZMDNLXĝ\WNRZQLNPRĝHSUDFRZDÊ
]HOHPHQWDPLIRUPXODU]\VLHFLRZ\FK
8ĝ\WNRZQLNPRĝHQDSU]\NïDG
NRU]\VWDÊ]NODZLV]\NXUVRUDTab
EnterLWG ľ
ľ
ľ
input
288 ZDARZENIA
=GDU]HQLHinputNWöUHZ\NRU]\VWDOLĂP\QDSRSU]HGQLHMVWURQLHMHVW
QDMF]ÚĂFLHMXĝ\ZDQH]HOHPHQWDPL
<input> i <textarea>
ZDARZENIA FOCUS I BLUR
=GDU]HQLDfocus i blur SR]QDïHĂMHZSRGUR]G]LDOHķ=GDU]HQLDIRFXVLEOXUĵ VÈF]ÚVWRXĝ\ZDQH
ZIRUPXODU]DFKVLHFLRZ\FKFKRÊPRJÈE\Ê
VWRVRZDQHWDNĝHZSRïÈF]HQLX]LQQ\PLHOHPHQWDPLWDNLPLMDNïÈF]D QLHVÈZLÚFSRZLÈ]DQH
Z\ïÈF]QLH]IRUPXODU]DPLVLHFLRZ\PL WERYFIKACJA
6SUDZG]DQLHZDUWRĂFLQRVLQD]ZÚZHU\ğNDFML
-HĝHOLXĝ\WNRZQLNSRPLQLHZ\PDJDQHLQIRUPDFMH
OXEZSURZDG]LQLHSRSUDZQHGDQHWRVSUDZG]HQLH
IRUPXODU]DVLHFLRZHJRSRGW\PNÈWHP]DSRPRFÈ
-DYD6FULSWMHVWV]\EV]HQLĝZ\VïDQLHGDQ\FKGR
VHUZHUDZFHOXLFKZHU\ğNDFML7HPDWZHU\ğNDFML
SRUXV]RQRZUR]G]LDOH
UŻYCIE ZDARZEŃ
FORMULARZA SIECIOWEGO
.LHG\Xĝ\WNRZQLNNRU]\VWD]OLVW\UR]ZLMDQHM]GDU]HQLHchange
VSRZRGXMHZ\ZRïDQLHIXQNFML
packageHint()=DGDQLHP
WHMIXQNFMLMHVWZ\ĂZLHWOHQLH
NRPXQLNDWXSRGUR]ZLMDQÈOLVWÈ
LQIRUPXMÈFHJRRGRNRQDQ\P
Z\ERU]H
*G\Xĝ\WNRZQLNZ\ĂOHIRUPXODU]
VLHFLRZ\QDVWÈSLZ\ZRïDQLH
IXQNFMLcheckTerms()=DGDQLHPIXQNFMLMHVWVSUDZG]HQLH
F]\Xĝ\WNRZQLN]D]QDF]\ïSROH
Z\ERUXZVND]XMÈFHQDMHJR
]JRGÚQDZDUXQNXNRU]\VWDQLD
]ZLWU\Q\LQWHUQHWRZHM
:SU]\SDGNXEUDNX]JRG\
IXQNFMDXQLHPRĝOLZLGRP\ĂOQH
]DFKRZDQLHHOHPHQWXIRUPXODU]DVLHFLRZHJR LZVWU]\PD
SU]HND]DQLHGDQ\FKIRUPXODU]D
GRVHUZHUD RUD]Z\ĂZLHWOL
Xĝ\WNRZQLNRZLNRPXQLNDW
REïÚG]LH
JAVASCRIPT
c06/js/form.js
var elForm, elSelectPackage, elPackageHint, elTerms, elTermsHint;
// Deklaracja zmiennych.
elForm
= document.getElementById(’formSignup’); 3U]HFKRZ\ZDQLHHOHPHQWöZ
elSelectPackage = document.getElementById(’package’);
elPackageHint
= document.getElementById(’packageHint’);
elTerms
= document.getElementById(’terms’);
elTermsHint
= document.getElementById(’termsHint’);
function packageHint() {
// Deklaracja funkcji.
var pack = this.options[this.selectedIndex].value;
// Pobranie wybranej opcji.
if (pack == ’monthly’) {
-HĝHOLZDUWRĂFLÈMHVWPRQWKO\
HO3DFNDJH+LQWLQQHU+70/ ij3ïDFÈF]DURNRV]F]ÚG]DV]]ïij
:\ĂZLHWOHQLHWHJRNRPXQLNDWX
} else {
// W przeciwnym razie.
HO3DFNDJH+LQWLQQHU+70/ ij'REU\Z\EöUij:\ĂZLHWOHQLHWHJRNRPXQLNDWX
}
}
function checkTerms(event) {
// Deklaracja funkcji.
if (!elTerms.checked) {
-HĝHOL]D]QDF]RQRSROHZ\ERUX
HO7HUPV+LQWLQQHU+70/ ij0XVLV]VLÚ]JRG]LÊ]ZDUXQNDPLij
:\ĂZLHWOHQLHNRPXQLNDWX
event.preventDefault();
1LHZ\V\ïDMIRUPXODU]DVLHFLRZHJR
}
}
8WZRU]HQLHREVHUZDWRUöZ]GDU]HñVXEPLWZ\ZRïXMHFKHFN7HUPV QDWRPLDVWFKDQJHZ\ZRïXMHSDFNDJH+LQW elForm.addEventListener(’submit’, checkTerms, false);
elSelectPackage.addEventListener(’change’, packageHint, false);
ZDARZENIA ZDARZENIA DOTYCZĄCE
ZMIAN I OBSERWATORY
'RGDQLHOXEXVXQLÚFLHHOHPHQWX]PRGHOX'20SRZRGXMH]PLDQÚMHJR
VWUXNWXU\=PLDQDWDZ\ZRïXMH]GDU]HQLHGRW\F]ÈFH]PLDQ
.LHG\VNU\SWGRGDMHOXEXVXZD]DZDUWRĂÊQD
VWURQLHQDVWÚSXMHXDNWXDOQLHQLHMHMGU]HZD
PRGHOX'20,VWQLHMHZLHOHSRZRGöZGODNWöU\FK
PRĝQDUHDJRZDÊQDWRXDNWXDOQLHQLHQDSU]\NïDG
SRLQIRUPRZDQLHXĝ\WNRZQLNDR]PLDQLHZSURZDG]RQHMQDVWURQLH
3RQLĝHMZ\PLHQLRQRSHZQH]GDU]HQLDZ\ZRï\ZDQH
SR]PLDQLHPRGHOX'207H]GDU]HQLDGRW\F]ÈFH
]PLDQ]RVWDï\ZSURZDG]RQHZSU]HJOÈGDUNDFK
)LUHIR[,(6DIDULLZV]\VWNLFKZHUVMDFK
&KURPHijD:DUWRZW\PPLHMVFXGRGDÊĝH
]GDU]HQLDWHPDMÈE\Ê]DVWÈSLRQHSU]H]]GDU]HQLD
DOWHUQDW\ZQHQD]\ZDQHREVHUZDWRUDPL]PLDQ
ZDARZENIE
:<:2’<:$1(
DOMNodeInserted
:\ZRï\ZDQHSRZVWDZLHQLXZÚ]ïDZGU]HZLHPRGHOX'20QDSU]\NïDG
]DSRPRFÈappendChild()replaceChild() i insertBefore()
DOMNodeRemoved
:\ZRï\ZDQHSRXVXQLÚFLXZÚ]ïD]GU]HZDPRGHOX'20QDSU]\NïDG
]DSRPRFÈremoveChild()OXEreplaceChild()
'206XEWUHH0RGLğHG
:\ZRï\ZDQHSR]PLDQLHVWUXNWXU\PRGHOX'20ĽSRGZöFK
Z\PLHQLRQ\FKSRZ\ĝHM]GDU]HQLDFK
DOMNodeInsertedIntoDocument
:\ZRï\ZDQHSRZVWDZLHQLXZÚ]ïDZGU]HZLHPRGHOX'20MDNRZÚ]ïD
SRWRPQHJRLQQHJRZÚ]ïD]QDMGXMÈFHJRVLÚMXĝZGRNXPHQFLH
DOMNodeRemovedFromDocument
:\ZRï\ZDQHSRXVXQLÚFLXZÚ]ïDZGU]HZLHPRGHOX'20MDNRZÚ]ïD
SRWRPQHJRLQQHJRZÚ]ïD]QDMGXMÈFHJRVLÚMXĝZGRNXPHQFLH
PROBLEM ZE ZDARZENIAMI
DOTYCZĄCYMI ZMIAN
-HĝHOLVNU\SWZSURZDG]DZLHOH]PLDQQDVWURQLH
VNXWNLHPPRĝHE\ÊZ\ZRï\ZDQLHEDUG]RGXĝHM
OLF]E\]GDU]HñGRW\F]ÈF\FK]PLDQ3RZVWDMHZUDĝHQLHĝHVWURQDVLÚZF]\WXMHLUHDJXMHQDG]LDïDQLD
Xĝ\WNRZQLND3U]H]]GDU]HQLDWHPRJÈE\ÊUöZQLHĝ
Z\ZRïDQHLQQHREVHUZDWRU\]GDU]HñSRGF]DVJG\
SURSDJXMÈ]GDU]HQLDZPRGHOX'20PRG\ğNXMÈFH
LQQHMHJRF]ÚĂFLLZ\ZRïXMÈFHNROHMQH]GDU]HQLD
GRW\F]ÈFH]PLDQ'ODWHJRWHĝVÈ]DVWÚSRZDQH
SU]H]REVHUZDWRU\]PLDQ
2EVïXJDZSU]HJOÈGDUNDFK&KURPH)LUHIR[
,(2SHUD6DIDUL
ZDARZENIA
NOWE OBSERWATORY ZMIAN
2EVHUZDWRU\]PLDQRSUDFRZDQRZWDNLVSRVöE
DE\PRJï\ZVWU]\PDÊVLÚ]G]LDïDQLHPDĝGR
]DNRñF]HQLDZ\NRQ\ZDQLD]DGDQLDSU]H]VNU\SW
1DVWÚSQLH]PLDQ\VÈ]JïDV]DQHJUXSRZR DQLH
SRMHG\QF]R :VND]XMHV]URG]DM]PLDQZPRGHOX
'20QDNWöUHPDMÈ]DUHDJRZDÊREVHUZDWRU\
-HGQDNJG\SRZVWDZDïDWDNVLÈĝNDREVïXJDREVHUZDWRUöZSU]H]SU]HJOÈGDUNLLQWHUQHWRZHQLHE\ïD
MHV]F]HQDW\OHUR]SRZV]HFKQLRQDDE\Xĝ\ZDÊLFK
ZSXEOLF]QLHRIHURZDQ\FKZLWU\QDFK
2EVïXJDZSU]HJOÈGDUNDFK,()LUHIR[
&KURPH OXE]SUHğNVHPwebkit 6DIDUL
2SHUD:XU]ÈG]HQLDFKPRELOQ\FK
$QGURLG6DIDULZL26
UŻYCIE ZDARZEŃ
DOTYCZĄCYCH ZMIAN
:SRQLĝV]\PSU]\NïDG]LHGZDREVHUZDWRU\]GDU]HñZ\ZRïXMÈZïDVQHIXQNFMH3LHUZV]\]QDMGXMH
VLÚZSU]HGRVWDWQLPZLHUV]XNRGXRF]HNXMHQD
NOLNQLÚFLHïÈF]DSURZDG]ÈFHJRGRGRGDQLDQRZHJR
HOHPHQWXOLVW\1DVWÚSQLHZ\NRU]\VWXMH]GDU]HQLD
RSHUDFMLQDPRGHOX'20ZFHOXGRGDQLDQRZHJRHOHPHQWX ]PLDQDVWUXNWXU\PRGHOX'20
LZ\ZRïDQLH]GDU]HñGRW\F]ÈF\FK]PLDQ c06/js/mutation.js
JAVASCRIPT
var elList, addLink, newEl, newText, counter, listItems; // Deklaracja zmiennych.
elList = document.getElementById(’list’);
3REUDQLHOLVW\
addLink = document.querySelector(’a’);
3REUDQLHSU]\FLVNXGRGDZDQLDHOHPHQWX
counter = document.getElementById(’counter’); // Pobranie elementu licznika.
function addItem(e) {
// Deklaracja funkcji.
e.preventDefault();
8QLHPRĝOLZLHQLHDNFMLïÈF]D
newEl = document.createElement(’li’);
// Nowy element <li>.
newText = document.createTextNode(’New list item’);
1RZ\ZÚ]HïWHNVWRZ\
newEl.appendChild(newText);
'RGDQLHWHNVWXGRHOHPHQWXOL!
elList.appendChild(newEl);
'RGDQLHHOHPHQWXOL!GROLVW\
}
function updateCount() {
// Deklaracja funkcji.
listitems = list.getElementsByTagName(’li’).length;
8VWDOHQLHFDïNRZLWHMOLF]E\HOHPHQWöZOL!
counter.innerHTML = listitems;
// Uaktualnienie licznika.
}
addLink.addEventListener(’click’, addItem, false);
.OLNQLÚFLHSU]\FLVNX
elList.addEventListener(’DOMNodeInserted’, updateCount, false);
0RGHO'20XDNWXDOQLRQ\
WYNIK
'UXJLREVHUZDWRU]GDU]HñRF]HNXMHQD]PLDQÚ
GU]HZDPRGHOX'20GODHOHPHQWX<ul>
3RZ\ZRïDQLX]GDU]HQLDDOMNodeInserted
QDVWÚSXMHZ\ZRïDQLHIXQNFMLRQD]ZLH
updateCount()=DGDQLHPIXQNFMLMHVWZ\ĂZLHWODQLHOLF]E\ZVND]XMÈFHMQDZLHONRĂÊOLVW\
RUD]XDNWXDOQLHQLHWHMZDUWRĂFLZ\ĂZLHWODQHM
QDSRF]ÈWNXVWURQ\
ZDARZENIA ZDARZENIA HTML5
7XWDMSU]HGVWDZLRQRWU]\G]LDïDMÈFHQDSR]LRPLHVWURQ\]GDU]HQLDGRïÈF]RQH
ZZHUVMLVSHF\ğNDFML+70/NWöUDEDUG]RV]\ENRVWDïDVLÚSRSXODUQD
2%6’8*$
:35=(*/k'$5.$&+
,17(51(72:<&+
ZDARZENIE
:<:2’<:$1(
DOMContentLoaded
=GDU]HQLHZ\ZRï\ZDQHSRGF]DVWZRU]HQLDGU]HZDPRGHOX
'20 REUD]\VW\OH&66LVNU\SW\-DYD6FULSWZFLÈĝPRJÈ
E\ÊZF]\W\ZDQH 6NU\SW\VÈXUXFKDPLDQHZF]HĂQLHMQLĝ]D
SRPRFÈ]GDU]HQLDloadZNWöU\PQDVWÚSXMHRF]HNLZDQLH
QDZF]\WDQLHSR]RVWDï\FK]DVREöZQDSU]\NïDGREUD]öZ
LUHNODP3RZVWDMHZLÚFZUDĝHQLHĝHVWURQDMHVWZF]\W\ZDQDV]\EFLHM-HGQDN]SRZRGXZ\HOLPLQRZDQLDRF]HNLZDQLD
QDZF]\WDQLHVNU\SWXGU]HZRPRGHOX'20PRĝHQLH
]DZLHUDÊNRGX+70/JHQHURZDQHJRSU]H]ZVSRPQLDQH
VNU\SW\=GDU]HQLHPRĝHE\ÊGRïÈF]RQHGRRELHNWöZwindow
OXEdocument
hashchange
=GDU]HQLHZ\ZRï\ZDQHJG\]PLHQLVLÚZDUWRĂÊKDVKDGUHVX ,()LUHIR[6DIDUL
85/ F]\OLEH]RGĂZLHĝHQLDFDïHJRRNQD :DUWRĂÊKDVK
&KURPH2SHUD
MHVWXĝ\ZDQDZFHOXZVND]DQLDRNUHĂORQ\FKIUDJPHQWöZ
F]DVDPLQD]\ZDQ\FKNRWZLFDPL QDVWURQLHDWDNĝHMHVW
VWRVRZDQDQDVWURQDFKNRU]\VWDMÈF\FK]WHFKQRORJLL$MD[
GRZF]\W\ZDQLD]DZDUWRĂFL3URFHGXUDREVïXJLhashchange
G]LDïDZRELHNFLHwindow3RZ\ZRïDQLX]GDU]HQLDRELHNW
eventEÚG]LHSRVLDGDïZïDĂFLZRĂFLoldURL i newURL
SU]HFKRZXMÈFHDGUHV\85/SU]HG]PLDQÈLSR]PLDQLH
beforeunload
=GDU]HQLHZ\ZRï\ZDQHZRELHNFLHwindowSU]HGXVXQLÚFLHP &KURPH)LUHIR[,(
VWURQ\3RZLQQRE\ÊXĝ\ZDQHW\ONRSRWRDE\SRPöF
6DIDUL2SHUD
Xĝ\WNRZQLNRZL DQLH]DFKÚFDÊJRGRSR]RVWDQLDQDVWURQLH
MHĂOL]GHF\GRZDïVLÚMÈRSXĂFLÊ 1DSU]\NïDGSRPRFQHPRĝH
E\ÊSRLQIRUPRZDQLHXĝ\WNRZQLNDĝH]PLDQ\ZSURZDG]RQH
ZIRUPXODU]XVLHFLRZ\PQLH]RVWDï\]DSLVDQH0RĝQD
GRGDÊNRPXQLNDWGRRNQDGLDORJRZHJRZ\ĂZLHWODQHJR
SU]H]SU]HJOÈGDUNÚ1LHPDV]MHGQDNNRQWUROLQDGWHNVWHP
Z\ĂZLHWODQ\PSU]HGNRPXQLNDWHPRUD]QDSU]\FLVNDFK
NOLNDQ\FKSU]H]Xĝ\WNRZQLND PRJÈVLÚUöĝQLÊZ]DOHĝQRĂFL
RGXĝ\ZDQHMSU]HJOÈGDUNLLV\VWHPXRSHUDF\MQHJR &KURPH)LUHIR[
,(6DIDUL2SHUD
,VWQLHMHMHV]F]HZLHOHLQQ\FK]GDU]HñZSURZDG]RQ\FKGRREVïXJLQDMQRZV]\FKXU]ÈG]HñQDSU]\NïDG
VPDUWIRQöZLWDEOHWöZ5HDJXMÈRQHQD]GDU]HQLDWDNLHMDNJHVW\LUXFKQDSRGVWDZLHZDUWRĂFL
GRVWDUF]DQ\FKSU]H]SU]\VSLHV]HQLRPLHU] Z\NU\ZDNÈWSRGNWöU\PMHVWWU]\PDQHXU]ÈG]HQLH ZDARZENIA
UŻYCIE ZDARZEŃ HTML5
:SRQLĝV]\PSU]\NïDG]LHWXĝ
SRXWZRU]HQLXGU]HZDPRGHOX
'20DNW\ZQHVWDQLHVLÚSROH
WHNVWRZHRLGHQW\ğNDWRU]H
username
=GDU]HQLHDOMcontentLoaded
MHVWZ\ZRï\ZDQHSU]HG]GDU]HQLHPload SRQLHZDĝGUXJLH
]Z\PLHQLRQ\FKRF]HNXMHQD
ZF]\WDQLHZV]\VWNLFK]DVREöZ
VWURQ\ JAVASCRIPT
-HĝHOLXĝ\WNRZQLN]GHF\GXMHVLÚ
QDRSXV]F]HQLHVWURQ\SU]HG
NOLNQLÚFLHPSU]\FLVNXZ\V\ïDMÈFHJRIRUPXODU]VLHFLRZ\]GDU]HQLHbeforeunloadVSUDZG]L
F]\Xĝ\WNRZQLNQDSHZQRFKFH
RSXĂFLÊVWURQÚ
06/js/html5-events.js
function setup() {
var textInput;
textInput = document.getElementById(’message’);
textInput.focus();
}
window.addEventListener(’DOMContentLoaded’, setup, false);
window.addEventListener(’beforeunload’, function(event){
return ’Masz niezapisane zmiany...’;
}, false);
WYNIK
3ROHZHMVWURQLHPRĝHV]
]REDF]\ÊRNQRGLDORJRZHNWöUH
MHVWZ\ĂZLHWODQHJG\QDVWÈSL
SUöEDRSXV]F]HQLDVWURQ\
7HNVWZ\ĂZLHWODQ\SU]HG
NRPXQLNDWHPLSU]\FLVNL
PRJÈE\ÊLQQHZ]DOHĝQRĂFL
RGSU]HJOÈGDUNLLQWHUQHWRZHM
QLHPDV]QDGW\PNRQWUROL ZDARZENIA ZDARZENIA
PRZYKŁAD
ZDARZENIA
7HQSU]\NïDGZ\ĂZLHWODXĝ\WNRZQLNRZLLQWHUIHMV
SR]ZDODMÈF\QDUHMHVWUDFMÚQRWDWHNJïRVRZ\FK
8ĝ\WNRZQLNPRĝHSRGDÊQD]ZÚZ\ĂZLHWODQÈ
ZQDJïöZNXDQDVWÚSQLHQDFLVQÈÊSU]\FLVNUR]SRF]\QDMÈF\QDJU\ZDQLH FRVSRZRGXMH]PLDQÚ
Z\ĂZLHWODQHJRREUD]X .LHG\Xĝ\WNRZQLNUR]SRF]QLHZSURZDG]DQLHQD]Z\ZSROXWHNVWRZ\P]GDU]HQLHkeyupVSRZRGXMHZ\ZRïDQLHIXQNFMLwriteLabel()
=DGDQLHWHMIXQNFMLSROHJDQDVNRSLRZDQLXWHNVWX]SRODIRUPXODU]D
VLHFLRZHJRL]DSLVDQLXJRZJïöZQ\PQDJïöZNXSRGORJR:VSRPQLDQ\WHNVW]DVWÈSLZLÚFVïRZDAUDIO NOTE
3U]\FLVNķQDJUDMSDX]DĵMHVW]QDF]QLHEDUG]LHMLQWHUHVXMÈF\3RVLDGD
RQDWU\EXWRQD]ZLHdata-state.LHG\VWURQDMHVWZF]\W\ZDQD
ZDUWRĂFLÈDWU\EXWXEÚG]LHrecord*G\Xĝ\WNRZQLNNOLNQLHSU]\FLVN
ZDUWRĂÊDWU\EXWXXOHJQLH]PLDQLHQDpause WRVSRZRGXMHZ\ZRïDQLH
QRZHMUHJXï\&66ZVND]XMÈFHMQDQDJU\ZDQLH -HĝHOLQLHXĝ\ZDïHĂMHV]F]HDWU\EXWöZdata-Z+70/WRPXVLV]
ZLHG]LHÊĝHSR]ZDODMÈRQHQDSU]HFKRZ\ZDQLHZïDVQ\FKGDQ\FK
ZGRZROQ\PHOHPHQFLH+70/ 1D]ZDDWU\EXWXPRĝHE\ÊGRZROQD
LUR]SRF]\QDÊVLÚRGdata-RLOHEÚG]LH]DSLVDQDPDï\PLOLWHUDPL :WHQVSRVöEGHPRQVWUXMHP\QRZÈWHFKQLNÚRSDUWÈQDGHOHJDFML
]GDU]Hñ2EVHUZDWRU]GDU]HñMHVWXPLHV]F]RQ\ZHOHPHQFLHQDGU]ÚGQ\PNWöUHJRZDUWRĂFLÈDWU\EXWXidMHVWbuttons2ELHNWevent
MHVWZ\NRU]\VW\ZDQ\GRRNUHĂOHQLDZDUWRĂFLDWU\EXWXidXĝ\WHJR
HOHPHQWX1DVWÚSQLHZDUWRĂÊDWU\EXWXidMHVWXĝ\ZDQDZNRQVWUXNFML
switchGRZ\EUDQLDZ\ZRï\ZDQHMIXQNFML Z]DOHĝQRĂFLRGVWDQX
ZNWöU\P]QDMGXMHVLÚSU]\FLVNĽrecordOXEpause 7RGREU\VSRVöEQDREVïXJÚZLHOXSU]\FLVNöZSRQLHZDĝ]PQLHMV]D
OLF]EÚREVHUZDWRUöZ]GDU]HñZNRG]LH
2EVHUZDWRU\]GDU]Hñ]QDMGXMÈVLÚQDNRñFXVWURQ\=DSHZQLOLĂP\
WDNĝHUR]ZLÈ]DQLHDZDU\MQHGODXĝ\WNRZQLNöZSU]HJOÈGDUNLLQWHUQHWRZHM,(OXEVWDUV]HM Z\NRU]\VWXMÈRQHLQQ\PRGHO]GDU]Hñ ZDARZENIA PRZYKŁAD
ZDARZENIA
1DSRF]ÈWNXVNU\SWXXPLHV]F]DP\GHğQLFMH]PLHQQ\FK
Z\PDJDQ\FKGRG]LDïDQLDNRGX
DQDVWÚSQLH]ELHUDP\SRWU]HEQH
QDPZÚ]ï\HOHPHQWöZ
)XQNFMHRGWZDU]DF]D SRND]DQH
QDVWURQLHSRSUDZHM SRMDZLÈ
VLÚGDOHMQDWRPLDVWQDGROH
VWURQ\PDP\REVHUZDWRU\
]GDU]Hñ
2EVHUZDWRU\]GDU]Hñ]QDMGXMÈ
VLÚZNRQVWUXNFMLZDUXQNRZHM
ZLÚFPHWRGDattachEvent()
PRĝHE\ÊXĝ\WDZSU]\SDGNX
JG\Xĝ\WNRZQLNNRU]\VWD
]SU]HJOÈGDUNLLQWHUQHWRZHM,(
OXEVWDUV]HM
c06/js/example.js
JAVASCRIPT
var noteInput, noteName, textEntered, target;
// Deklaracja zmiennych.
noteName = document.getElementById(’noteName’); (OHPHQW]DZLHUDMÈF\QRWDWNÚ
noteInput = document.getElementById(’noteInput’);
(OHPHQWSR]ZDODMÈF\QDGRGDQLHQRWDWNL
function writeLabel(e) {
if (!e) {
e = window.event;
}
target = e.target || e.srcElement;
textEntered = e.target.value;
noteName.textContent = textEntered;
}
// Deklaracja funkcji.
-HĝHOLRELHNW]GDU]HQLDQLHLVWQLHMH
8ĝ\FLHUR]ZLÈ]DQLDDZDU\MQHJRGOD,(
3REUDQLHHOHPHQWXGRFHORZHJRGOD]GDU]HQLD
:DUWRĂÊWHJRHOHPHQWX
8DNWXDOQLHQLHWHNVWXQRWDWNL
:W\PPLHMVFX]QDMGXMÈVLÚNRQWURONLQDJU\ZDQLDLSDX]\RUD]IXQNFMH
.RG]QDMG]LHV]QDVWURQLHSRSUDZHM
if (document.addEventListener) {
-HĝHOLREVHUZDWRU]GDU]HñMHVWREVïXJLZDQ\
document.addEventListener(’click’, function(e){ // W przypadku zdarzenia click.
recorderControls(e);
:\ZRïDQLHIXQNFMLUHFRUGHU&RQWUROV }, false);
3U]HFKZ\FHQLHZID]LHSURSDJRZDQLD]GDU]Hñ
-HĝHOL]GDU]HQLHLQSXW]RVWDQLHZ\ZRïDQHGODSRODWHNVWRZHJRQRWH,QSXW
WRZ\ZRïDMIXQNFMÚZULWH/DEHO noteInput.addEventListener(’input’, writeLabel, false);
} else {
// W przeciwnym razie.
document.attachEvent(’onclick’, function(e){
5R]ZLÈ]DQLHDZDU\MQHGOD,(GRZROQH]GDU]HQLHFOLFN
recorderControls(e);
:\ZRïDQLHIXQNFMLUHFRUGHU&RQWUROV });
-HĝHOL]GDU]HQLHNH\XS]RVWDQLHZ\ZRïDQHGODSRODWHNVWRZHJRQRWH,QSXW
WRZ\ZRïDMIXQNFMÚZULWH/DEHO noteInput.attachEvent(’onkeyup’, writeLabel, false);
}
ZDARZENIA
PRZYKŁAD
ZDARZENIA
)XQNFMDrecorderControls()MHVWDXWRPDW\F]QLH
SU]HND]\ZDQDRELHNWRZLevent1LHW\ONR]DSHZQLDWRREVïXJÚVWDUV]\FKZHUVMLSU]HJOÈGDUNL,(
DOHUöZQLHĝXQLHPRĝOLZLDïÈF]XMHJR]DFKRZDQLH
GRP\ĂOQH SU]HQLHVLHQLHXĝ\WNRZQLNDQDQRZÈ
VWURQÚ JAVASCRIPT
.RQVWUXNFMDswitch]RVWDïDXĝ\WDGRZVND]DQLD
IXQNFMLZ\ZRï\ZDQHMZ]DOHĝQRĂFLRGWHJRFR
SUöEXMH]URELÊXĝ\WNRZQLNĽUR]SRF]ÈÊOXE]DNRñF]\ÊQDJU\ZDQLHQRWDWNLJïRVRZHM7DNDWHFKQLND
GHOHJDFMLWRGREU\VSRVöEREVïXJLZLHOXSU]\FLVNöZ
]QDMGXMÈF\FKVLÚZLQWHUIHMVLHXĝ\WNRZQLND
c06/js/example.js
function recorderControls(e) {
'HNODUDFMDIXQNFMLUHFRUGHU&RQWUROV if (!e) {
-HĝHOLRELHNW]GDU]HQLDQLHLVWQLHMH
e = window.event;
8ĝ\FLHUR]ZLÈ]DQLDDZDU\MQHJRGOD,(
}
target = e.target || e.srcElement;
3REUDQLHHOHPHQWXGRFHORZHJR
if (event.preventDefault) {
-HĝHOLPHWRGDSUHYHQW'HIDXOW MHVWREVïXJLZDQD
e.preventDefault();
=DWU]\PDQLHDNFMLGRP\ĂOQHM
} else {
// W przeciwnym razie.
event.returnValue = false;
5R]ZLÈ]DQLHDZDU\MQHGOD,(]DWU]\PDQLHDNFMLGRP\ĂOQHM
}
switch(target.getAttribute(’data-state’)) { 3REUDQLHDWU\EXWXGDWDVWDWH
case ’record’:
-HĝHOLZDUWRĂÊDWU\EXWXZ\QRVLUHFRUG
record(target);
:\ZRïDQLHIXQNFMLUHFRUG break;
2SXV]F]HQLHIXQNFML
case ’stop’:
-HĝHOLZDUWRĂÊDWU\EXWXZ\QRVLVWRS
stop(target);
:\ZRïDQLHIXQNFMLVWRS break;
2SXV]F]HQLHIXQNFML
7XWDMPRĝQDGRGDÊNROHMQHSU]\FLVNL
}
};
function record(target) {
// Deklaracja funkcji.
target.setAttribute(’data-state’, ’stop’);
3U]\SLVDQLHDWU\EXWRZLGDWDVWDWHZDUWRĂFLVWRS
target.textContent = ’stop’;
8VWDZLHQLHWHNVWXijVWRSij
}
function stop(target) {
target.setAttribute(’data-state’, ’record’);
3U]\SLVDQLHDWU\EXWRZLGDWDVWDWHZDUWRĂFLUHFRUG
target.textContent = ’record’;
8VWDZLHQLHWHNVWXijUHFRUGij
}
ZDARZENIA PODSUMOWANIE
ZDARZENIA
f =GDU]HQLDWRRIHURZDQ\SU]H]SU]HJOÈGDUNÚLQWHUQHWRZÈVSRVöE
ZVND]DQLDĝHFRĂVLÚ]GDU]\ïR QDSU]\NïDG]DNRñF]\ïRVLÚ
ZF]\W\ZDQLHVWURQ\OXE]RVWDïQDFLĂQLÚW\SU]\FLVN f 'RïÈF]DQLHWRSURFHVRNUHĂOHQLDNWöUH]GDU]HQLHPDZ\VWÈSLÊ
LNWöU\HOHPHQWRF]HNXMHQDZ\VWÈSLHQLHGDQHJR]GDU]HQLD
f .LHG\]GDU]HQLHZ\VWÈSLZHOHPHQFLHPRĝHZ\ZRïDÊIXQNFMÚ
-DYD6FULSW.LHG\QDVWÚSQLHIXQNFMDZSHZLHQVSRVöE
]PRG\ğNXMHVWURQÚLQWHUQHWRZÈPRĝQDRGQLHĂÊZUDĝHQLHĝH
MHVWZFLÈĝLQWHUDNW\ZQDĽUHDJXMHQDG]LDïDQLDXĝ\WNRZQLND
f 'HOHJDFMÚ]GDU]HñPRĝQDZ\NRU]\VWDÊGRPRQLWRURZDQLD
]GDU]Hñ]DFKRG]ÈF\FKZHZV]\VWNLFKHOHPHQWDFKSRWRPQ\FK
GDQHJRHOHPHQWX
f 1DMF]ÚĂFLHMXĝ\ZDQHVÈ]GDU]HQLD]GHğQLRZDQHSU]H]
NRQVRUFMXP:&ZVSHF\ğNDFMLPRGHOX'20,VWQLHMÈWDNĝH
LQQH]GDU]HQLD]GHğQLRZDQHQDSU]\NïDGZVSHF\ğNDFML
+70/LFKDUDNWHU\VW\F]QHGODGDQ\FKSU]HJOÈGDUHN
LQWHUQHWRZ\FK
ZDARZENIA
7
JQUERY
Biblioteka jQuery oferuje prosty sposób na wykonywanie
QDMF]ÚĂFLHMVSRW\NDQ\FK]DGDñ-DYD6FULSW2GE\ZD
VLÚWRV]\ENRLVSöMQLHZHZV]\VWNLFKQDMZDĝQLHMV]\FK
SU]HJOÈGDUNDFKLQWHUQHWRZ\FKEH]NRQLHF]QRĂFLVWRVRZDQLD
MDNLFKNROZLHNUR]ZLÈ]DñDZDU\MQ\FKZNRG]LH
WYBÓR ELEMENTÓW
WYKONYWANIE ZADAŃ
OBSŁUGA ZDARZEŃ
'RVWÚSGRHOHPHQWöZMHVW
SURVWV]\]DSRPRFÈVHOHNWRUöZVW\OX&66RIHURZDQ\FK
SU]H]M4XHU\QLĝSU]\Xĝ\FLX
]DS\WDñ'206HOHNWRU\
FKDUDNWHU\]XMÈVLÚZLÚNV]È
HODVW\F]QRĂFLÈLZLÚNV]\PL
PRĝOLZRĂFLDPL
0HWRG\M4XHU\SR]ZDODMÈQD
XDNWXDOQLHQLHGU]HZDPRGHOX
'20DQLPDFMÚHOHPHQWöZ
SRMDZLDMÈF\FKVLÚZZLGRNX
L]QLNDMÈF\FK]QLHJRDWDNĝH
Z\NRQ\ZDQLHSÚWOLQD]ELRU]H
HOHPHQWöZĽZV]\VWNRWR
ZMHGQ\PZLHUV]XNRGX
Biblioteka jQuery zawiera
PHWRG\SR]ZDODMÈFHQD
GRïÈF]DQLHREVHUZDWRUöZ
]GDU]HñGRZ\EUDQ\FK
HOHPHQWöZEH]NRQLHF]QRĂFL
tworzenia jakiegokolwiek
UR]ZLÈ]DQLDDZDU\MQHJR
ZNRG]LHGRREVïXJL
VWDUV]\FKSU]HJOÈGDUHN
LQWHUQHWRZ\FK
:W\PUR]G]LDOHSU]\MÚWR]DïRĝHQLHĝHSU]HF]\WDïHĂZF]HĂQLHMV]HUR]G]LDï\NVLÈĝNLL]QDV]
SRGVWDZ\MÚ]\ND-DYD6FULSW-DN]REDF]\V]ZSRïÈF]HQLX]WUDG\F\MQ\PLWHFKQLNDPL-DYD6FULSW
ELEOLRWHNDM4XHU\RIHUXMHEDUG]RGXĝHPRĝOLZRĂFL.RQLHF]QHMHVWMHGQDN]UR]XPLHQLH-DYD6FULSW
DE\PöFZSHïQLZ\NRU]\VWDÊM4XHU\
300 JQUERY
JQUERY 301
CO TO JEST JQUERY?
M4XHU\WRSOLN-DYD6FULSWGRïÈF]DQ\QDVWURQDFKLQWHUQHWRZ\FK
%LEOLRWHNDWDSR]ZDODQDZ\V]XNLZDQLHHOHPHQWöZ]DSRPRFÈ
VHOHNWRUöZVW\OX&66DQDVWÚSQLHZ\NRQ\ZDQLHGRZROQ\FK]DGDñ
QDW\FKHOHPHQWDFK]Z\NRU]\VWDQLHPPHWRGM4XHU\
1. WYSZUKIWANIE ELEMENTÓW
ZA POMOCĄ SELEKTORÓW STYLU CSS
Funkcja o nazwie jQuery()SR]ZDODQDZ\V]XNDQLHFRQDMPQLHM
MHGQHJRHOHPHQWXQDVWURQLH7ZRU]\RELHNWRQD]ZLHjQuery
]DZLHUDMÈF\RGQLHVLHQLDGRHOHPHQWöZ-DNSRND]DQRSRQLĝHM$()
WRF]ÚVWRVWRVRZDQ\VNUöW]DPLDVWjQuery()
FUNKCJA (TWORZY OBIEKT JQUERY)
$(’li.hot’)
SELEKTOR
Funkcja jQuery()PDMHGHQSDUDPHWUselektorVW\OX&66
3U]HGVWDZLRQ\WXWDMVHOHNWRUZ\V]XNXMHZV]\VWNLHHOHPHQW\<li>
NWöU\FKZDUWRĂFLÈDWU\EXWXclass jest hot
PODOBIEŃSTWA DO MODELU DOM
• 6HOHNWRU\M4XHU\Z\NRQXMÈ]DGDQLDSRGREQHGRWUDG\F\MQ\FK]DS\WDñ'20DOHLFKVNïDGQLDMHVW
]QDF]QLHSURVWV]D
• 2ELHNWM4XHU\PRĝQDSU]HFKRZ\ZDÊZ]PLHQQHMSRGREQLHMDNZSU]\SDGNXZÚ]ïöZPRGHOX'20
• :ïDĂFLZRĂFLLPHWRG\M4XHU\ SRGREQLHMDNZïDĂFLZRĂFLLPHWRG\PRGHOX'20 PRĝQDZ\NRU]\VWDÊ
GRSU]HSURZDG]DQLDRSHUDFMLQDZ\EUDQ\FKZÚ]ïDFKPRGHOX'20
302 JQUERY
2ELHNWjQueryPDZLHOHPHWRGNWöU\FKPRĝQDXĝ\ÊGRSUDF\]Z\EUDQ\PL
HOHPHQWDPL0HWRG\WHSU]HGVWDZLDMÈ]DGDQLDNWöUHVÈQDMF]ÚĂFLHM
Z\NRQ\ZDQHQDW\FKHOHPHQWDFK
2. WYKONANIE ZADAŃ NA ELEMENTACH
ZA POMOCĄ METOD JQUERY
3RQLĝHMPDP\RELHNWjQuery utworzony przez
IXQNFMÚjQuery()2ELHNWL]QDMGXMÈFHVLÚZQLP
HOHPHQW\VÈRNUHĂODQHPLDQHPdopasowanego
zbioru lub kolekcji elementów wybranych przez
jQuery
0HWRG\RELHNWXjQueryPRĝQDZ\NRU]\VWDÊGR
XDNWXDOQLHQLD]QDMGXMÈF\FKVLÚZQLPHOHPHQWöZ
3RQLĝV]DPHWRGDSRZRGXMHGRGDQLHQRZHM
ZDUWRĂFLGODDWU\EXWXclass
OBIEKT JQUERY
METODA
$(’li.hot’).addClass(’complete’);
OPERATOR ELEMENTU
SKŁADOWEGO
2SHUDWRUHOHPHQWXVNïDGRZHJRZVND]XMHĝH
PHWRGDSRSUDZHMVWURQLHSRZLQQDE\ÊXĝ\WD
GRXDNWXDOQLHQLDHOHPHQWöZZRELHNFLHjQuery
Z\PLHQLRQ\PSROHZHMVWURQLH
PARAMETR(Y)
.DĝGDPHWRGDPDSDUDPHWU SDUDPHWU\ GRVWDUF]DMÈF\V]F]HJöïRZHLQIRUPDFMHRVSRVRELH
XDNWXDOQLHQLDHOHPHQWöZ7XWDMSDUDPHWUZVND]XMH
ZDUWRĂÊGRGDZDQÈGRDWU\EXWXclass
KLUCZOWE RÓŻNICE W STOSUNKU DO MODELU DOM
• %LEOLRWHNDG]LDïDVSöMQLHZZLHOXSU]HJOÈGDUNDFKLQWHUQHWRZ\FKQLHWU]HEDWZRU]\ÊUR]ZLÈ]Dñ
DZDU\MQ\FKZNRG]LH
• :\EöUHOHPHQWöZMHVWSURVWV]\ SRQLHZDĝRSLHUDVLÚQDVNïDGQLVW\OöZ&66 L]QDF]QLHGRNïDGQLHMV]\
• 2EVïXJD]GDU]HñMHVWSURVWV]DSRQLHZDĝRSLHUDVLÚQDMHGQHMPHWRG]LHG]LDïDMÈFHMZHZV]\VWNLFK
•
•
•
QDMZDĝQLHMV]\FKSU]HJOÈGDUNDFKLQWHUQHWRZ\FK
0HWRG\G]LDïDMÈQDZV]\VWNLFKZ\EUDQ\FKHOHPHQWDFKQLHPDNRQLHF]QRĂFLSU]HSURZDG]DQLDLWHUDFML
SU]H]ZV]\VWNLH SDWU]SRGUR]G]LDïķ3ÚWOHĵ 'RVWDUF]RQHVÈPHWRG\GRGDWNRZHSU]H]QDF]RQHGRZ\NRQ\ZDQLDF]ÚVW\FK]DGDñQDSU]\NïDG
DQLPDFML SDWU]SRGUR]G]LDïķ(IHNW\ĵ *G\]RVWDQLHGRNRQDQ\Z\EöUQDHOHPHQWDFKPRĝQDZ\ZRïDÊZLHOHPHWRG
JQUERY 303
PROSTY PRZYKŁAD UŻYCIA
JQUERY
:SU]\NïDGDFKSU]HGVWDZLRQ\FK
ZW\PUR]G]LDOHEÚG]LHP\
Xĝ\ZDÊDSOLNDFMLOLVW\U]HF]\
GRNXSLHQLDZ\NRU]\VW\ZDQHM
ZGZöFKSRSU]HGQLFKUR]G]LDïDFK=DZDUWRĂÊQDVWURQLH
EÚG]LHXDNWXDOQLDQD]DSRPRFÈ
ELEOLRWHNLM4XHU\
1. $E\]DVWRVRZDÊELEOLRWHNÚ
M4XHU\QDMSLHUZQDOHĝ\
GRïÈF]\ÊVNU\SWM4XHU\QD
VWURQLH-DNZLG]LV]]RVWDï
GRïÈF]RQ\SU]HG]DP\NDMÈF\P
]QDF]QLNLHP</body>
2. 3RGRïÈF]HQLXM4XHU\
na stronie wczytywany jest
GUXJLSOLN-DYD6FULSWXĝ\ZDMÈF\
PHWRGLVHOHNWRUöZM4XHU\GR
XDNWXDOQLDQLD]DZDUWRĂFLQD
VWURQLH+70/
c07/basic-example.html
1
2
SKĄD POBRAĆ JQUERY
I W JAKIEJ WERSJI?
:SRZ\ĝV]\PSU]\NïDG]LH
ELEOLRWHNDM4XHU\]RVWDïD
GRïÈF]RQDSU]HG]DP\NDMÈF\P
]QDF]QLNLHP</body>SRGREQLH
MDNLQQHVNU\SW\ -HV]F]HLQQ\
VSRVöEGRïÈF]HQLDVNU\SWX
SRND]DQRZSRGUR]G]LDOH
ķ:F]\WDQLHM4XHU\]&'1ĵ .RSLDELEOLRWHNLM4XHU\]RVWDïD
XPLHV]F]RQDZPDWHULDïDFK
GRïÈF]RQ\FKGRNVLÈĝNL
M4XHU\PRĝHV]UöZQLHĝ
SREUDÊ]ZLWU\Q\https://
jquery.org/1XPHUZHUVML
biblioteki jQuery powinien
E\ÊSRGDQ\ZQD]ZLHSOLNX
:RPDZLDQ\PSU]\NïDG]LHMHVW
to plik jquery-1.11.0.jsFKRÊ
ZFKZLOLJG\EÚG]LHV]F]\WDï
WÚNVLÈĝNÚSUDZGRSRGREQLH
EÚG]LHGRVWÚSQDMXĝQRZV]D
HTML
<body>
<div id=”page”
<h1 id=”header”>Lista</h1>
<h2>$UW\NXï\VSRĝ\ZF]H</h2>
<ul>
<li id=”one” class=”hot”><em>ĂZLHĝH</em> ğJL</li>
OLLG ĵWZRĵFODVV ĵKRWĵ!RU]HV]NLSLQLRZH</li>
<li id=”three” class=”hot”>miód</li>
<li id=”four”>RFHWEDOVDPLF]Q\</li>
</ul>
</div>
<script src=”js/jquery-1.11.0.js”></script>
<script src=”js/basic-example.js”></script>
</body>
304 JQUERY
ZHUVMDM4XHU\3U]HGVWDZLRQH
WXWDMSU]\NïDG\EÚGÈG]LDïDï\
WDNĝHZQRZV]\FKZHUVMDFK
ELEOLRWHNL
%DUG]RF]ÚVWRPRĝQD]REDF]\Ê
ĝHZLWU\Q\LQWHUQHWRZHXĝ\ZDMÈ
pliku jQuery wraz z rozszeU]HQLHP.min.js2]QDF]D
WRĝHQLHSRWU]HEQH]QDNL
VSDFMLLQRZHJRZLHUV]D]RVWDï\
XVXQLÚWH]SOLNXQDSU]\NïDG
jquery-1.11.0.js przybiera
SRVWDÊjquery-1.11.0.min.js
8VXQLÚFLHQLHSRWU]HEQ\FK
]QDNöZMHVWZ\QLNLHPSURFHVX
o nazwie minimalizacja
VWÈGminZQD]ZLHSOLNX 2WU]\PXMHP\SOLNR]QDF]QLH
PQLHMV]HMZLHONRĂFLNWöU\MHVW
SRELHUDQ\SU]H]SU]HJOÈGDUNÚ
ZGXĝRNUöWV]\PF]DVLH-HGQDN
]PLQLPDOL]RZDQ\SOLNMHVW
WUXGQLHMV]\ZRGF]\FLH
-HĝHOLFKFHV]VSRMU]HÊQD
]DZDUWRĂÊSOLNXM4XHU\PRĝHV]
JRRWZRU]\ÊZGRZROQ\P
HG\WRU]HWHNVWRZ\P-HVWWRSR
SURVWXSOLNWHNVWRZ\]DZLHUDMÈF\
EDUG]RVNRPSOLNRZDQ\NRG
-DYD6FULSW
:LÚNV]RĂÊRVöEXĝ\ZDMÈF\FK
biblioteki jQuery nie próbuje
]UR]XPLHÊZMDNLVSRVöENRG
-DYD6FULSWZM4XHU\Z\NRQXMH
]DGDQLD-HĝHOLW\ONRZLHV]
MDNZ\ELHUDÊHOHPHQW\RUD]
VWRVRZDÊPHWRG\LZïDĂFLZRĂFL
WRPRĝHV]Z\NRU]\VWDÊ]DOHW\
M4XHU\EH]NRQLHF]QRĂFL]DJOÈGDQLDGRZQÚWU]DELEOLRWHNL
:SRQLĝV]\PSU]\NïDG]LHSOLN
-DYD6FULSWXĝ\ZDVNUöWX$()
GODIXQNFMLjQuery():\ELHUD
HOHPHQW\LWZRU]\WU]\RELHNW\
M4XHU\SU]HFKRZXMÈFHRGQLHVLHQLDGRW\FKHOHPHQWöZ
0HWRG\RELHNWXjQuery pokazuMÈLXNU\ZDMÈHOHPHQW\OLVW\RUD]
XVXZDMÈMHSRNOLNQLÚFLX1LH
SU]HMPXMVLÚMHĂOLMHV]F]HQLH
UR]XPLHV]NRGX
c07/js/basic-example.js
JAVASCRIPT
1
2
3
3U]HGHZV]\VWNLPGRZLHV]
VLÚMDNZ\ELHUDÊHOHPHQW\
]DSRPRFÈVHOHNWRUöZM4XHU\
DQDVWÚSQLHMDNXDNWXDOQLDÊ
WHHOHPHQW\]DSRPRFÈPHWRG
LZïDĂFLZRĂFLRELHNWXjQuery
$(’:header’).addClass(’headline’);
$(’li:lt(3)’).hide().fadeIn(1500);
$(’li’).on(’click’, function() {
$(this).remove();
});
1. :ZLHUV]XSLHUZV]\P
Z\ELHUDP\ZV]\VWNLHQDJïöZNL
RG<h1>GR<h6> LGRGDMHP\
ZDUWRĂÊheadlineGRLFK
atrybutu class
2. :ZLHUV]XGUXJLPZ\ELHUDP\WU]\SLHUZV]HHOHPHQW\
OLVW\LZ\NRQXMHP\QDQLFKGZD
]DGDQLD
HOHPHQW\]RVWDMÈXNU\WH DE\
PRĝOLZHE\ïRZ\NRQDQLH
NROHMQHJRNURNX HOHPHQW\]QLNDMÈZZLGRNX
•
•
WYNIK
3. 2VWDWQLHWU]\ZLHUV]HVNU\SWX
SRZRGXMÈXVWDZLHQLHREVHUZDWRUD]GDU]HñZSRV]F]HJöOQ\FK
HOHPHQWDFK<li>.LHG\
Xĝ\WNRZQLNNOLNQLHHOHPHQW
QDVWÈSLZ\ZRïDQLHIXQNFML
DQRQLPRZHMXVXZDMÈFHMGDQ\
HOHPHQW]HVWURQ\
3RQLĝHMSU]HGVWDZLRQRSU]\SRPQLHQLH]QDF]HQLDNRORUöZ
Xĝ\ZDQ\FKGRZVND]DQLD
priorytetu i stanu poszczególQ\FKHOHPHQWöZOLVW\
PILNE
SPOKOJNIE
NORMALNE
ZAKOŃCZONE
JQUERY 305
DLACZEGO UŻYWAĆ JQUERY?
%LEOLRWHNDM4XHU\QLHRIHUXMHQLF]HJRF]HJRQLHPöJïE\ĂX]\VNDÊ]DSRPRFÈ
NRGX-DYD6FULSW-HVWWRSOLN-DYD6FULSWDOHZ\NRU]\VW\ZDQ\PQLHMZLÚFHM
ZMHGQHMF]ZDUWHMZLWU\QGRVWÚSQ\FKZLQWHUQHFLHSRQLHZDĝXïDWZLD
WZRU]HQLHNRGX
1. PROSTE SELEKTORY
-DN]REDF]\ïHĂZUR]G]LDOHZNWöU\PZSURZDG]RQRPRGHO'20Z\EöUĝÈGDQ\FKHOHPHQWöZ
QLH]DZV]HQDOHĝ\GRSURVW\FK1DSU]\NïDG
6WDUV]HSU]HJOÈGDUNLQLHREVïXJXMÈQDMQRZV]\FK
PHWRGZ\ERUXHOHPHQWöZ
,(ZSU]HFLZLHñVWZLHGRLQQ\FKSU]HJOÈGDUHN
QLHWUDNWXMH]QDNöZRGVWÚSXPLÚG]\HOHPHQWDPLMDNRZÚ]ïöZWHNVWRZ\FK
•
•
7HJRURG]DMXNZHVWLHXWUXGQLDMÈZ\EöURGSRZLHGQLFKHOHPHQWöZQDVWURQLHZHZV]\VWNLFK
QDMZDĝQLHMV]\FKSU]HJOÈGDUNDFK
1LHPXVLP\SR]QDZDÊQRZ\FKVSRVREöZZ\ERUX
HOHPHQWöZSRQLHZDĝELEOLRWHNDM4XHU\Z\NRU]\VWXMH]QDQ\MXĝSURJUDPLVWRPMÚ]\NLQWHUIHMVX
Xĝ\WNRZQLNDZLWU\Q:::F]\OLVHOHNWRU\&66
NWöUH
VÈ]QDF]QLHV]\EV]HSRGF]DVZ\ERUXHOHPHQWöZ
PRJÈE\Ê]QDF]QLHGRNïDGQLHMV]HSRGF]DV
ZVND]\ZDQLDHOHPHQWöZGRZ\EUDQLD
F]ÚVWRZ\PDJDMÈPQLHMV]HMLORĂFLNRGXQLĝ
VWDUV]HPHWRG\PRGHOX'20
VÈMXĝZ\NRU]\VW\ZDQHSU]H]ZLÚNV]RĂÊSURJUDPLVWöZLQWHUIHMVXXĝ\WNRZQLNDZLWU\Q:::
•
•
•
•
%LEOLRWHNDM4XHU\GRGDMHQDZHWNLONDVHOHNWRUöZ
VW\OX&66DW\PVDP\PGRGDWNRZÈIXQNFMRQDOQRĂÊ
*G\SRZVWDïDELEOLRWHNDM4XHU\ZQRZRF]HVQ\FK
SU]HJOÈGDUNDFKLQWHUQHWRZ\FK]DLPSOHPHQWRZDQR
PHWRG\querySelector() i querySelectorAll()
SR]ZDODMÈFHSURJUDPLVWRPQDZ\EöUHOHPHQWöZ]D
SRPRFÈVNïDGQL&66-HGQDNZ\PLHQLRQHPHWRG\
QLHVÈREVïXJLZDQHZVWDUV]\FKSU]HJOÈGDUNDFK
306 JQUERY
2. MNIEJ KODU W NAJCZĘŚCIEJ
WYKONYWANYCH ZADANIACH
,VWQLHMÈSHZQH]DGDQLDUHJXODUQLHZ\NRQ\ZDQH
SU]H]SURJUDPLVWöZLQWHUIHMVXXĝ\WNRZQLND
ZLWU\Q:::QDSU]\NïDGLWHUDFMDSU]H]Z\EUDQH
HOHPHQW\
%LEOLRWHNDM4XHU\]DZLHUDPHWRG\SR]ZDODMÈFH
SURJUDPLVWRPQDXSURV]F]HQLHVSRVREöZ
Z\NRQ\ZDQLDW\FK]DGDñQDSU]\NïDG
LWHUDFMLSU]H]HOHPHQW\
GRGDZDQLDLXVXZDQLDHOHPHQWöZ]GU]HZD
PRGHOX'20
REVïXJL]GDU]Hñ
REVïXJLZ\ĂZLHWODQLDLXNU\ZDQLDHOHPHQWöZ
ZLGRNX
REVïXJLĝÈGDñ$MD[
•
•
•
•
•
M4XHU\XïDWZLDZ\PLHQLRQH]DGDQLDLSR]ZDODQD
XWZRU]HQLHPQLHMV]HMLORĂFLNRGXDE\MHZ\NRQDÊ
%LEOLRWHNDM4XHU\RIHUXMHUöZQLHĝPRĝOLZRĂÊ
ïÈF]HQLDPHWRG WDWHFKQLNDEÚG]LHZSURZDG]RQD
ZSRGUR]G]LDOHķ’ÈF]HQLHPHWRGĵ 3RZ\EUDQLX
SHZQ\FKHOHPHQWöZ]\VNXMHV]PRĝOLZRĂÊ
]DVWRVRZDQLDZLHOXPHWRGQDZLHOXZ\EUDQ\FK
HOHPHQWDFK
0RWWRM4XHU\EU]PLķ7ZöU]PQLHMNRGXRVLÈJQLMZLÚFHMĵ
SRQLHZDĝELEOLRWHNDWDSR]ZDODQDRVLÈJQLÚFLHW\FKVDP\FKFHOöZ
DOH]Z\NRU]\VWDQLHPPQLHMV]HMLORĂFLNRGXQLĝWU]HEDE\XWZRU]\Ê
Z]Z\Nï\P-DYD6FULSW
3. ZGODNOŚĆ MIĘDZY PRZEGLĄDARKAMI
INTERNETOWYMI
M4XHU\DXWRPDW\F]QLH]DMPXMHVLÚREVïXJÈUöĝQLF
ZVSRVREDFKZMDNLHSRV]F]HJöOQHSU]HJOÈGDUNL
Z\ELHUDMÈHOHPHQW\LREVïXJXMÈ]GDU]HQLD1LH
PXVLV]ZLÚFWZRU]\ÊĝDGQ\FKUR]ZLÈ]DñDZDU\MQ\FKZNRG]LH MDNWRSU]HGVWDZLRQRZGZöFK
SRSU]HGQLFKUR]G]LDïDFK M4XHU\Xĝ\ZDwykrywacza funkcjiDE\XVWDOLÊ
QDMOHSV]\VSRVöEZ\NRQDQLD]DGDQLD2EHMPXMH
WR]DVWRVRZDQLHZLHOXNRQVWUXNFMLZDUXQNRZ\FK
-HĝHOLSU]HJOÈGDUNDREVïXJXMHLGHDOQ\VSRVöE
Z\NRQDQLD]DGDQLDWRSRGHMĂFLHWREÚG]LHZ\NRU]\VWDQH:SU]HFLZQ\PUD]LHELEOLRWHNDVSUDZG]D
F]\REVïXJLZDQDMHVWNROHMQDQDMOHSV]DRSFMD
SR]ZDODMÈFDQDZ\NRQDQLHWHJRVDPHJR]DGDQLD
7HFKQLNDWD]RVWDïDZ\NRU]\VWDQDZRVWDWQLP
UR]G]LDOHZFHOXRNUHĂOHQLDF]\SU]HJOÈGDUND
REVïXJXMHREVHUZDWRU\]GDU]Hñ-HĝHOLREVHUZDWRU\
]GDU]HñQLHVÈREVïXJLZDQHWRRIHURZDQHMHVW
SRGHMĂFLHDOWHUQDW\ZQH GODSU]HJOÈGDUHN,QWHUQHW
([SORUHUZZHUVMLLVWDUV]\FK 7XWDMNRQVWUXNFMDZDUXQNRZDVSUDZG]DF]\
SU]HJOÈGDUNDREVïXJXMHPHWRGÚquerySelector()
-HĝHOLWDNZ\PLHQLRQDPHWRGD]RVWDQLH]DVWRVRZDQD-HĝHOLQLHVSUDZG]DP\REVïXJÚQDVWÚSQHM
QDMOHSV]HMRSFMLLZ\NRU]\VWXMHP\MÈ
N
Czy obsługiwana
jest metoda
querySelector()?
Sprawdź, czy przeglądarka internetowa
obsługuje następną
najlepszą opcję
T
JQUERY 1.9.X CZY 2.0.X?
:WUDNFLHSUDFQDGELEOLRWHNÈM4XHU\XPLHV]F]RQR
ZQLHMZLHOHNRGXSU]H]QDF]RQHJRGRREVïXJL
SU]HJOÈGDUHN,QWHUQHW([SORUHUZZHUVMDFK
LFR]ZLÚNV]\ïRZLHONRĂÊVNU\SWXLVSUDZLïR
ĝHVWDïVLÚ]QDF]QLHEDUG]LHMVNRPSOLNRZDQ\
3RUR]SRF]ÚFLXSUDFQDGZHUVMÈ]HVSöïM4XHU\
SRVWDQRZLïRXWZRU]HQLXZHUVMLNWöUDQLHEÚG]LH
REVïXJLZDÊVWDUV]\FKSU]HJOÈGDUHNFRSR]ZROLïR
QDRSUDFRZDQLHPQLHMV]HJRLV]\EFLHMG]LDïDMÈFHJR
VNU\SWX
=HVSöïM4XHU\E\ïMHGQDNĂZLDGRP\IDNWXĝHZLHOH
RVöEQDGDONRU]\VWD]HVWDUV]\FKZHUVMLSU]HJOÈGDUHNLGODWHJRZFLÈĝ]DFKRG]LSRWU]HEDLFKREVïXJL
=GHF\GRZDQRVLÚZLÚFQDMHGQRF]HVQHUR]ZLMDQLH
GZöFKZHUVMLM4XHU\
jQuery 1.9+:]DZLHUDWHVDPHIXQNFMHNWöUH
PRĝQD]QDOHěÊZZHUVML[DOH]DSHZQLD
REVïXJÚ,(ļ
jQuery 2.0+:QLHREVïXJXMHVWDUV]\FKZHUVML
SU]HJOÈGDUHNLQWHUQHWRZ\FKFRSRZRGXMHĝH
VNU\SWMHVWPQLHMV]\LG]LDïDV]\EFLHM
:NUöWNLPRNUHVLHQLHVÈVSRG]LHZDQH]E\WGXĝH
UöĝQLFHZIXQNFMRQDOQRĂFLREXZHUVMLM4XHU\
1D]ZDELEOLRWHNLM4XHU\SRZLQQD]DZLHUDÊ
QXPHUZHUVML QDSU]\NïDGjquery-1.11.0.js
lub jquery-1.11.0.min.js -HĝHOLQLH]DZLHUD
SU]HJOÈGDUNDEÚG]LHSUöERZDïDZ\NRU]\VW\ZDÊ
EXIRURZDQÈZHUVMÚSOLNXNWöUDPRĝHRND]DÊVLÚ
starsza lubQRZV]D7R]NROHLPRĝHXQLHPRĝOLZLÊ
SUDZLGïRZHG]LDïDQLHVNU\SWöZ
Doskonale! Użyj tej
funkcji, jako najlepszej
opcji
JQUERY 307
WYSZUKIWANIE ELEMENTÓW
8ĝ\ZDMÈFM4XHU\HOHPHQW\PRĝQD]Z\NOH
Z\ELHUDÊ]DSRPRFÈVHOHNWRUöZVW\OX&66
'RVWÚSQHVÈWDNĝHVHOHNWRU\GRGDWNRZH
R]QDF]RQHSRQLĝHMMDNRjQ
3U]\NïDG\]DVWRVRZDQLDW\FK
VHOHNWRUöZ]QDMG]LHV]ZFDï\P
UR]G]LDOH6NïDGQLDEÚG]LH
]QDQDRVRERPZ\NRU]\VWXMÈF\P
VHOHNWRU\Z&66
SELEKTORY PODSTAWOWE
:V]\VWNLHHOHPHQW\
:V]\VWNLHHOHPHQW\RQD]ZLHelement
(OHPHQW\NWöU\FKDWU\EXWidPDZVND]DQÈZDUWRĂÊ
(OHPHQW\NWöU\FKDWU\EXWclassPDZVND]DQÈZDUWRĂÊ
(OHPHQW\GRSDVRZXMÈFHZLÚFHMQLĝW\ONRMHGHQVHOHNWRU ]DSR]QDM
VLÚWDNĝH]RSLVHPPHWRG\.add()NWöUDFKDUDNWHU\]XMHVLÚZLÚNV]È
HIHNW\ZQRĂFLÈSRGF]DVïÈF]HQLDZ\ELHUDQ\FKHOHPHQWöZ *
element
#id
.klasa
selektor1, selektor2
HIERARCHIA
(OHPHQWNWöU\MHVWHOHPHQWHPSRWRPQ\PLQQHJR QDSU]\NïDGli a (OHPHQWEÚGÈF\EH]SRĂUHGQLPHOHPHQWHPSRWRPQ\PLQQHJR PRĝQD
Xĝ\Ê*ZPLHMVFXHOHPHQWXSRWRPQHJRDE\Z\EUDÊZV]\VWNLHHOHPHQW\
SRWRPQHZVND]DQHJRHOHPHQWXQDGU]ÚGQHJR 6HOHNWRUVÈVLDGXMÈF\FKHOHPHQWöZUöZQRU]ÚGQ\FKZ\ELHUDW\ONRWHNWöUH
]QDMGXMÈVLÚWXĝSRSRSU]HGQLPHOHPHQFLH
6HOHNWRUHOHPHQWöZUöZQRU]ÚGQ\FKZ\ELHU]HWHHOHPHQW\NWöUHVÈ
UöZQRU]ÚGQH]SRSU]HGQLP
przodek potomek
QDGU]ÚGQ\!SRWRPQ\
SRSU]HGQLQDVWÚSQ\
SRSU]HGQLaUöZQRU]ÚGQH
PODSTAWOWE FILTRY
:not(selektor)
ğUVW
:last
:even
jQ
jQ
jQ
:odd
:eq(indeks)
:gt(indeks)
:lt(indeks)
:header
:animated
:focus
jQ
jQ
jQ
jQ
jQ
jQ
JQUERY
:V]\VWNLHHOHPHQW\]Z\MÈWNLHPZVND]DQHJRVHOHNWRUD QDSU]\NïDG
div:not(’#summary’) 3LHUZV]\HOHPHQW]Z\EUDQ\FK
2VWDWQLHOHPHQW]Z\EUDQ\FK
(OHPHQW\RSDU]\VW\FKQXPHUDFKLQGHNVX]H]ELRUXZ\EUDQ\FK
(OHPHQW\RQLHSDU]\VW\FKQXPHUDFKLQGHNVX]H]ELRUXZ\EUDQ\FK
(OHPHQW\RQXPHU]HLQGHNVXUöZQ\PSRGDQHPXZSDUDPHWU]H
(OHPHQW\RQXPHU]HLQGHNVXZLÚNV]\PRGSRGDQHJRZSDUDPHWU]H
(OHPHQW\RQXPHU]HLQGHNVXPQLHMV]\PRGSRGDQHJRZSDUDPHWU]H
:V]\VWNLHHOHPHQW\RG<h1>GR<h6>
(OHPHQW\NWöUHDNWXDOQLHVÈDQLPRZDQH
(OHPHQW\NWöUHDNWXDOQLHVÈDNW\ZQH
FILTRY ZAWARTOŚCI
:contains(’tekst’)
:empty
:parent
jQ
:has(selektor)
jQ
(OHPHQW\]DZLHUDMÈFHZVND]DQ\tekstMDNRSDUDPHWU
:V]\VWNLHHOHPHQW\QLHSRVLDGDMÈFHHOHPHQWöZSRWRPQ\FK
:V]\VWNLHHOHPHQW\SRVLDGDMÈFHZÚ]ï\SRWRPQH ZSRVWDFLWHNVWX
OXEHOHPHQWX (OHPHQW\]DZLHUDMÈFHSU]\QDMPQLHMMHGHQHOHPHQWGRSDVRZDQ\
GRVHOHNWRUD QDSU]\NïDGdiv:has(p)SRZRGXMHGRSDVRZDQLHZV]\VWNLFK
HOHPHQWöZ<div>]DZLHUDMÈF\FKHOHPHQW<p> FILTRY WIDOCZNOŚCI
:hidden
:visible
jQ :V]\VWNLHHOHPHQW\XNU\WH
jQ :V]\VWNLHHOHPHQW\]DMPXMÈFHPLHMVFHZXNïDG]LHJUDğF]Q\PQDVWURQLH
1LHEÚGÈ]D]QDF]RQHZSU]\SDGNXXĝ\FLDdisplay: none;
KHLJKWZLGWKHOHPHQWQDGU]ÚGQ\MHMXNU\W\%ÚGÈ]D]QDF]RQH
ZSU]\SDGNX]DVWRVRZDQLDvisibility: hidden; opacity: 0
SRQLHZDĝZöZF]DV]DMPXMÈPLHMVFHZXNïDG]LHQDVWURQLH
FILTRY POTOMNE
:DUWRĂÊSRGDQDZW\PPLHMVFXQLHMHVWOLF]RQDRG]HUDĽQDSU]\NïDG
ul li:nth-child(2)
3LHUZV]\HOHPHQWSRWRPQ\GODDNWXDOQLHZ\EUDQHJR
2VWDWQLHOHPHQWSRWRPQ\GODDNWXDOQLHZ\EUDQHJR
.LHG\LVWQLHMHW\ONRMHGHQHOHPHQWSRWRPQ\ div p:only-child :nth-child(Z\UDĝHQLH)
ğUVWFKLOG
:last-child
:only-child
FILTRY ATRYBUTU
[DWU\EXW]
(OHPHQW\]DZLHUDMÈFHRNUHĂORQ\DWU\EXW ZUD]]GRZROQÈZDUWRĂFLÈ [DWU\EXW=ijZDUWRĂÊij]
(OHPHQW\]DZLHUDMÈFHRNUHĂORQ\DWU\EXWZUD]]HZVND]DQÈZDUWRĂFLÈ
[DWU\EXW!=ijZDUWRĂÊij] jQ (OHPHQW\]DZLHUDMÈFHRNUHĂORQ\DWU\EXWDOHQLH]HZVND]DQÈZDUWRĂFLÈ
[DWU\EXW^=ijZDUWRĂÊij]
:DUWRĂÊDWU\EXWXUR]SRF]\QDVLÚRGSRGDQHMZDUWRĂFL
[DWU\EXW=ijZDUWRĂÊij]
:DUWRĂÊDWU\EXWXNRñF]\VLÚQDSRGDQHMZDUWRĂFL
[DWU\EXW*=ijZDUWRĂÊij]
:DUWRĂÊSRZLQQDSRMDZLDÊVLÚZGRZROQ\PPLHMVFXZDUWRĂFLDWU\EXWX
[DWU\EXW|=ijZDUWRĂÊij]
5öZQDSRGDQHPXFLÈJRZLWHNVWRZHPXOXEUR]SRF]\QDVLÚRGSRGDQHJRFLÈJX
WHNVWRZHJRLP\ĂOQLND
[DWU\EXW~=ijZDUWRĂÊij]
:DUWRĂÊSRZLQQDE\ÊMHGQÈ]ZDUWRĂFLXPLHV]F]RQ\FKQDOLĂFLHLUR]G]LHORQ\FK
VSDFMDPL
[DWU\EXW][DWU\EXW]
(OHPHQW\NWöUHGRSDVRZDï\ZV]\VWNLHVHOHNWRU\
FORMULARZE SIECIOWE
:input
:text
SDVVZRUG
:radio
:checkbox
:submit
:image
:reset
:button
ğOH
:selected
:enabled
:disabled
:checked
jQ
jQ
jQ
jQ
jQ
jQ
jQ
jQ
jQ
jQ
jQ
:V]\VWNLHHOHPHQW\<input>
:V]\VWNLHSRODWHNVWRZH
:V]\VWNLHSRODWHNVWRZHGRSRGDZDQLDKDVHï
:V]\VWNLHSU]\FLVNLRSFML
:V]\VWNLHSRODZ\ERUX
:V]\VWNLHSU]\FLVNLZ\V\ïDMÈFHIRUPXODU]HVLHFLRZH
:V]\VWNLHHOHPHQW\<img>
:V]\VWNLHSU]\FLVNL]HURZDQLDIRUPXODU]\VLHFLRZ\FK
:V]\VWNLHHOHPHQW\<button>
:V]\VWNLHSRODSR]ZDODMÈFHQDZ\EöUSOLNöZ
:V]\VWNLH]D]QDF]RQHHOHPHQW\OLVWUR]ZLMDQ\FK
:V]\VWNLHZïÈF]RQHHOHPHQW\IRUPXODU]\VLHFLRZ\FK
GRP\ĂOQLHZV]\VWNLHHOHPHQW\ :V]\VWNLHZ\ïÈF]RQHHOHPHQW\IRUPXODU]\VLHFLRZ\FK
Xĝ\ZDMÈFHZïDĂFLZRĂFL&66disabled :V]\VWNLH]D]QDF]RQHSU]\FLVNLRSFMLOXESRODZ\ERUX
JQUERY 309
WYKONYWANIE OPERACJI
NA WYBRANYCH ELEMENTACH
3RZ\ĝHMSU]HGVWDZLRQRSRGVWDZ\G]LDïDQLDELEOLRWHNLM4XHU\
ZLÚNV]RĂÊUR]G]LDïXEÚG]LH
SRĂZLÚFRQDZ\MDĂQLHQLXMDN
G]LDïDMÈZ\PLHQLRQHPHWRG\
1DW\FKGZöFKVWURQDFK
Z\PLHQLRQRPHWRG\M4XHU\
LZVND]DQRQXPHU\VWURQ
QDNWöU\FK]QDMG]LHV]ZLÚFHM
LQIRUPDFMLQDLFKWHPDW
%DUG]RF]ÚVWRPRĝHV]]REDF]\ÊQD]Z\PHWRGM4XHU\
]DF]\QDMÈFHVLÚRGNURSNL7R
Xĝ\WDZNVLÈĝFHNRQZHQFMD
NWöUDSRPRĝH&LZRGUöĝQLDQLX
PHWRGM4XHU\RGZEXGRZDQ\FK
PHWRG-DYD6FULSWOXEZïDVQ\FK
RELHNWöZ
.LHG\GRNRQXMHV]Z\ERUX
tworzony obiekt jQueryPD
ZïDĂFLZRĂÊlength]DZLHUDMÈFÈ
OLF]EÚHOHPHQWöZ]QDMGXMÈF\FK
VLÚZRELHNFLH
-HĝHOLQLH]RVWDï\GRSDVRZDQH
ĝDGQHHOHPHQW\WRZ\ZRïDQLH
Z\PLHQLRQ\FKWXWDMPHWRGQLH
]DNRñF]\VLÚEïÚGHP0HWRG\
SRSURVWXQLH]ZUöFÈĝDGQ\FK
ZDUWRĂFL
,VWQLHMÈUöZQLHĝPHWRG\SU]H]QDF]RQHVSHFMDOQLHGRSUDF\
]RPöZLRQÈZUR]G]LDOH
WHFKQRORJLÈ$MD[ SR]ZDODRQD
QDRGĂZLHĝDQLHW\ONRIUDJPHQWX
VWURQ\]DPLDVWFDïHM 310
JQUERY
FILTRY ZAWARTOŚCI
3REUDQLHOXE]PLDQD]DZDUWRĂFLHOHPHQWöZDWU\EXWöZLZÚ]ïöZ
WHNVWRZ\FK
POBIERANIE I ZMIANA ZAWARTOŚCI
.html()
SRGUR]G]LDïķ8DNWXDOQLDQLHHOHPHQWöZĵ
.text()
SRGUR]G]LDïķ8DNWXDOQLDQLHHOHPHQWöZĵ
.replaceWith() SRGUR]G]LDïķ8DNWXDOQLDQLHHOHPHQWöZĵ
.remove()
SRGUR]G]LDïķ8DNWXDOQLDQLHHOHPHQWöZĵ
ELEMENTY
.before()
.after()
.prepend()
.append()
.remove()
.clone()
XQZUDS
.detach()
.empty()
.add()
ATRYBUTY
.attr()
.removeAttr()
.addClass()
.removeClass()
.css()
SRGUR]G]LDïķ:VWDZLDQLHHOHPHQWXĵ
SRGUR]G]LDïķ:VWDZLDQLHHOHPHQWXĵ
SRGUR]G]LDïķ:VWDZLDQLHHOHPHQWXĵ
SRGUR]G]LDïķ:VWDZLDQLHHOHPHQWXĵ
SRGUR]G]LDïķ:\FLQDQLHLNRSLRZDQLHHOHPHQWöZĵ
SRGUR]G]LDïķ:\FLQDQLHLNRSLRZDQLHHOHPHQWöZĵ
SRGUR]G]LDïķ:\FLQDQLHLNRSLRZDQLHHOHPHQWöZĵ
SRGUR]G]LDïķ:\FLQDQLHLNRSLRZDQLHHOHPHQWöZĵ
SRGUR]G]LDïķ:\FLQDQLHLNRSLRZDQLHHOHPHQWöZĵ
SRGUR]G]LDïķ'RGDZDQLHLğOWURZDQLH
HOHPHQWöZZGRSDVRZDQ\P]ELRU]Hĵ
SRGUR]G]LDïķ3RELHUDQLHLXVWDZLDQLHZDUWRĂFLDWU\EXWXĵ
SRGUR]G]LDïķ3RELHUDQLHLXVWDZLDQLHZDUWRĂFLDWU\EXWXĵ
SRGUR]G]LDïķ3RELHUDQLHLXVWDZLDQLHZDUWRĂFLDWU\EXWXĵ
SRGUR]G]LDïķ3RELHUDQLHLXVWDZLDQLHZDUWRĂFLDWU\EXWXĵ
SRGUR]G]LDïķ3RELHUDQLHLXVWDZLDQLHZïDĂFLZRĂFL&66ĵ
WARTOŚCI FORMULARZA SIECIOWEGO
.val()
SRGUR]G]LDïķ=GDU]HQLDLPHWRG\IRUPXODU]DVLHFLRZHJRĵ
.isNumeric()
SRGUR]G]LDïķ=GDU]HQLDLPHWRG\IRUPXODU]DVLHFLRZHJRĵ
WYSZUKIWANIE ELEMENTÓW
:\V]XNLZDQLHLZ\ELHUDQLHHOHPHQWöZGRSUDF\
DWDNĝHSRUXV]DQLHVLÚSRPRGHOX'20
OGÓLNE
ğQG
.closest()
.parent()
.parents()
.children()
.siblings()
.next()
.nextAll()
.prev()
.prevAll()
SRGUR]G]LDïķ1DZLJDFMDSRPRGHOX'20ĵ
SRGUR]G]LDïķ1DZLJDFMDSRPRGHOX'20ĵ
SRGUR]G]LDïķ1DZLJDFMDSRPRGHOX'20ĵ
SRGUR]G]LDïķ1DZLJDFMDSRPRGHOX'20ĵ
SRGUR]G]LDïķ1DZLJDFMDSRPRGHOX'20ĵ
SRGUR]G]LDïķ1DZLJDFMDSRPRGHOX'20ĵ
SRGUR]G]LDïķ1DZLJDFMDSRPRGHOX'20ĵ
SRGUR]G]LDïķ1DZLJDFMDSRPRGHOX'20ĵ
SRGUR]G]LDïķ1DZLJDFMDSRPRGHOX'20ĵ
SRGUR]G]LDïķ1DZLJDFMDSRPRGHOX'20ĵ
WYSZUKIWANIE ELEMENTÓW ciąg dalszy
FILTROWANIE I TESTOWANIE
ğOWHU
.not()
.has()
.is()
:contains()
SRGUR]G]LDïķ1DZLJDFMDSRPRGHOX'20ĵ
SRGUR]G]LDïķ1DZLJDFMDSRPRGHOX'20ĵ
SRGUR]G]LDïķ1DZLJDFMDSRPRGHOX'20ĵ
SRGUR]G]LDïķ1DZLJDFMDSRPRGHOX'20ĵ
SRGUR]G]LDïķ1DZLJDFMDSRPRGHOX'20ĵ
KOLEJNOŚĆ ELEMENTÓW
.eq()
.lt()
.gt()
SRGUR]G]LDïķ:\V]XNLZDQLHHOHPHQWöZZHGïXJNROHMQRĂFLĵ
SRGUR]G]LDïķ:\V]XNLZDQLHHOHPHQWöZZHGïXJNROHMQRĂFLĵ
SRGUR]G]LDïķ:\V]XNLZDQLHHOHPHQWöZZHGïXJNROHMQRĂFLĵ
*G\HOHPHQW\]RVWDQÈZ\EUDQH LXPLHV]F]RQHZRELHNcie jQuery PHWRG\M4XHU\Z\PLHQLRQHQDW\FKGZöFK
VWURQDFKZ\NRQXMÈQDW\FKHOHPHQWDFKSHZQH]DGDQLD
WYMIARY I POŁOŻENIE
EFEKTY I ANIMACJA
3RELHUDQLHOXEXDNWXDOQLDQLHZ\PLDUöZEÈGěSRïRĝHQLDHOHPHQWX
'RGDZDQLHHIHNWöZLDQLPDFML
GRIUDJPHQWöZVWURQ\
WYMIARY
.height()
ZLGWK
.innerHeight()
.innerWidth()
.outerHeight()
.outerWidth()
$(document).height()
GRFXPHQW ZLGWK
ZLQGRZ KHLJKW
ZLQGRZ ZLGWK
SRGUR]G]LDïķ:\PLDU\SXGHïNDĵ
SRGUR]G]LDïķ:\PLDU\SXGHïNDĵ
SRGUR]G]LDïķ:\PLDU\SXGHïNDĵ
SRGUR]G]LDïķ:\PLDU\SXGHïNDĵ
SRGUR]G]LDïķ:\PLDU\SXGHïNDĵ
SRGUR]G]LDïķ:\PLDU\SXGHïNDĵ
SRGUR]G]LDïķ:\PLDU\RNQDLVWURQ\ĵ
SRGUR]G]LDïķ:\PLDU\RNQDLVWURQ\ĵ
SRGUR]G]LDïķ:\PLDU\RNQDLVWURQ\ĵ
SRGUR]G]LDïķ:\PLDU\RNQDLVWURQ\ĵ
POŁOŻENIE
.offset()
.position()
.scrollLeft()
.scrollTop()
SRGUR]G]LDïķ3RïRĝHQLHHOHPHQWöZQDVWURQLHĵ
SRGUR]G]LDïķ3RïRĝHQLHHOHPHQWöZQDVWURQLHĵ
SRGUR]G]LDïķ:\PLDU\RNQDLVWURQ\ĵ
SRGUR]G]LDïķ:\PLDU\RNQDLVWURQ\ĵ
ZDARZENIA
PODSTAWOWE
VKRZ
SRGUR]G]LDïķ(IHNW\ĵ
.hide()
SRGUR]G]LDïķ(IHNW\ĵ
.toggle()
SRGUR]G]LDïķ(IHNW\ĵ
ROZJAŚNIANIE
.fadeIn()
.fadeOut()
.fadeTo()
.fadeToggle()
SRGUR]G]LDïķ(IHNW\ĵ
SRGUR]G]LDïķ(IHNW\ĵ
SRGUR]G]LDïķ(IHNW\ĵ
SRGUR]G]LDïķ(IHNW\ĵ
PRZESUWANIE
VOLGH'RZQ
SRGUR]G]LDïķ(IHNW\ĵ
.slideUp()
SRGUR]G]LDïķ(IHNW\ĵ
.slideToggle() SRGUR]G]LDïķ(IHNW\ĵ
WŁASNE
.delay()
.stop()
.animate()
SRGUR]G]LDïķ(IHNW\ĵ
SRGUR]G]LDïķ(IHNW\ĵ
SRGUR]G]LDïķ(IHNW\ĵ
7ZRU]HQLHREVHUZDWRUöZ]GDU]HñGODNDĝGHJRHOHPHQWXZ]ELRU]HZ\EUDQ\FK
DOKUMENT I PLIK
.ready()
SRGUR]G]LDïķ6SUDZG]HQLHF]\VWURQDMHVWJRWRZDE\PRĝQDE\ïR]QLÈSUDFRZDÊĵ
.load()
SRGUR]G]LDïķ=GDU]HQLHORDGĵ
INTERAKCJE UŻYTKOWNIKA
.on()
SRGUR]G]LDïķ0HWRG\]GDU]Hñĵ
,VWQLHMÈPHWRG\SU]H]QDF]RQHGODSRV]F]HJöOQ\FKW\SöZ]GDU]HñLGODWHJRPRĝHV]VLÚVSRWNDÊ]PHWRGDPLWDNLPLMDN.click().hover() i .submit()-HGQDNDE\PRĝQDE\ïRREVïXJLZDÊ]GDU]HQLD]RVWDï\
RQHSRU]XFRQHQDU]HF]PHWRG\.on()
JQUERY
311
DOPASOWANY ZBIÓR
I ELEMENTY WYBRANE
PRZEZ JQUERY
.LHG\Z\ELHU]HV]FRQDMPQLHMMHGHQHOHPHQWZDUWRĂFLÈ]ZURWQÈEÚG]LHRELHNW
jQuery1RVLRQUöZQLHĝQD]ZÚdopasowanego zbioru lub elementów wybranych przez jQuery.
POJEDYNCZY ELEMENT
WIELE ELEMENTÓW
-HĝHOLVHOHNWRU]ZUDFDMHGHQHOHPHQWWRRELHNW
jQuery zawiera odniesienie do po prostu jednego
ZÚ]ïDHOHPHQWX
-HĝHOLVHOHNWRU]ZUDFDZLHOHHOHPHQWöZWRRELHNW
jQuery zawiera odniesienia do poszczególnych
ZÚ]ïöZHOHPHQWöZ
$(’ul’)
$(’li’)
7HQVHOHNWRUSRELHUDHOHPHQW<ul> na stronie.
'ODWHJRWHĝRELHNWjQuery zawiera odniesienie do
MHGQHJRZÚ]ïD MHG\Q\HOHPHQW<ul>]QDMGXMÈF\
VLÚQDVWURQLH 6HOHNWRUWHQSRELHUDZV]\VWNLHHOHPHQW\<li> na
VWURQLH'ODWHJRWHĝRELHNWjQuery zawiera odnieVLHQLDGRNDĝGHJRZ\EUDQHJRZÚ]ïD SRV]F]HJöOQH
elementy <li>]QDMGXMÈFHVLÚQDVWURQLH ul
ul
li
li
li
li
.DĝG\HOHPHQWPDSU]\SLVDQ\QXPHULQGHNVX
3RQLĝHMSU]HGVWDZLRQRV\WXDFMÚJG\RELHNW
]DZLHUDW\ONRMHGHQHOHPHQW
INDEKS
0
312
JQUERY
:}=(’(/(0(178
ul
li
li
li
li
2ELHNWM4XHU\EÚG]LH]DZLHUDïF]WHU\HOHPHQW\
OLVW\3DPLÚWDMĝHQXPHU\LQGHNVöZUR]SRF]\QDMÈ
VLÚRG]HUD
INDEKS
:}=(’(/(0(178
0
li#one.hot
1
li#two.hot
2
li#three.hot
3
li#four
METODY JQUERY
PRZEZNACZONE DO POBIERANIA
I USTAWIANIA DANYCH
3HZQHPHWRG\M4XHU\VÈSU]H]QDF]RQHGRSRELHUDQLDLQIRUPDFML]HOHPHQWöZ
RUD]GRLFKXDNWXDOQLDQLD1LH]DZV]HPRJÈE\ÊVWRVRZDQHZHZV]\VWNLFK
HOHPHQWDFK
POBIERANIE INFORMACJI
UAKTUALNIANIE INFORMACJI
-HĝHOLZ\EöUM4XHU\]DZLHUDZLÚFHMQLĝW\ONRMHGHQ
HOHPHQWDPHWRGDMHVWXĝ\ZDQDZFHOXSREUDQLD
LQIRUPDFML]Z\EUDQ\FKHOHPHQWöZWRinformacje
WH]RVWDQÈSREUDQHW\ONR]SLHUZV]HJRHOHPHQWX
ZGRSDVRZDQ\P]ELRU]H
-HĝHOLM4XHU\Z\ELHU]HFRQDMPQLHMGZDHOHPHQW\
DPHWRGDMHVWXĝ\ZDQDZFHOXXDNWXDOQLDQLD
LQIRUPDFMLQDVWURQLHWRXDNWXDOQLRQHEÚGÈ
wszystkie elementyZGRSDVRZDQ\P]ELRU]H
DQLHW\ONRSLHUZV]\
:SRGDQ\PWXWDMSU]\NïDG]LHOLVW\SRQLĝV]\
VHOHNWRUVSRZRGXMHZ\EöUF]WHUHFKHOHPHQWöZ
<li>]OLVW\
$(’li’)
ul
li
li
li
li
.LHG\ZFHOXSREUDQLDLQIRUPDFML]HOHPHQWX
Xĝ\MHV]PHWRG\.html()ĽEÚG]LHRPöZLRQD
ZSRGUR]G]LDOHķ8DNWXDOQLDQLHHOHPHQWöZĵĽMHM
ZDUWRĂFLÈ]ZURWQÈEÚG]LH]DZDUWRĂÊSLHUZV]HJR
HOHPHQWXZGRSDVRZDQ\P]ELRU]H
.LHG\GRXDNWXDOQLHQLDHOHPHQWXZ\NRU]\VWDV]
PHWRGÚ.html()ĽEÚG]LHRPöZLRQDZSRGUR]G]LDOHķ8DNWXDOQLDQLHHOHPHQWöZĵĽ]DVWÈSLRQD
]DZDUWRĂÊZV]\VWNLFKHOHPHQWöZZGRSDVRZDQ\P
]ELRU]H3RQLĝV]HSROHFHQLHSRZRGXMHXDNWXDOQLHQLH]DZDUWRĂFLNDĝGHJRHOHPHQWXOLVW\
var content = $(’li’).html();
$(’li’).html(’Uaktualniony’);
3RZ\ĝV]HSROHFHQLHSRZRGXMHSREUDQLH]DZDUWRĂFL
SLHUZV]HJRHOHPHQWXOLVW\LXPLHV]F]HQLHMHM
Z]PLHQQHMRQD]ZLHcontent
3ROHFHQLHXDNWXDOQLD]DZDUWRĂÊZV]\VWNLFK
HOHPHQWöZOLVW\ZGRSDVRZDQ\P]ELRU]HVïRZHP
Uaktualniony
$E\SREUDÊLQQ\HOHPHQWPRĝQDVNRU]\VWDÊ
]PHWRGSU]H]QDF]RQ\FKGRSRUXV]DQLDVLÚSR
PRGHOX'20 SRGUR]G]LDïķ1DZLJDFMDSRPRGHOX
'20ĵ OXEğOWURZDQLD SRGUR]G]LDïķ'RGDZDQLH
LğOWURZDQLHHOHPHQWöZZGRSDVRZDQ\P]ELRU]Hĵ Z\EUDQ\FKHOHPHQWöZEÈGěWHĝXWZRU]\Ê
GRNïDGQLHMV]\VHOHNWRU SRGUR]G]LDïķ:\V]XNLZDQLH
HOHPHQWöZĵ $E\XDNWXDOQLÊW\ONRjedenHOHPHQWPRĝQDXĝ\Ê
PHWRGSU]H]QDF]RQ\FKGRSRUXV]DQLDVLÚSR
PRGHOX'20 SRGUR]G]LDïķ1DZLJDFMDSRPRGHOX
'20ĵ OXEğOWURZDQLD SRGUR]G]LDïķ'RGDZDQLH
LğOWURZDQLHHOHPHQWöZZGRSDVRZDQ\P]ELRU]Hĵ Z\EUDQ\FKHOHPHQWöZEÈGěWHĝXWZRU]\Ê
GRNïDGQLHMV]\VHOHNWRU SRGUR]G]LDïķ:\V]XNLZDQLH
HOHPHQWöZĵ $E\SREUDÊ]DZDUWRĂÊZV]\VWNLFKHOHPHQWöZQDOHĝ\]DVWRVRZDÊPHWRGÚ.each()RNWöUHMZLÚFHM
VLÚGRZLHV]ZSRGUR]G]LDOHķ3UDFD]SRV]F]HJöOQ\PLHOHPHQWDPLZGRSDVRZDQ\P]ELRU]Hĵ
JQUERY
313
OBIEKTY JQUERY
PRZECHOWUJĄCE ODNIESIENIA
DO OBIEKTÓW
.LHG\GRNRQXMHV]Z\ERUXHOHPHQWöZ]DSRĂUHGQLFWZHPM4XHU\
SU]HFKRZ\ZDQHVÈRGQLHVLHQLDGRRGSRZLDGDMÈF\FKLPZÚ]ïöZ
ZGU]HZLHPRGHOX'201LHVÈWZRU]RQHNRSLHZÚ]ïöZ
-DNMXĝZLG]LDïHĂSRGF]DVZF]\W\ZDQLDVWURQ\
+70/SU]HJOÈGDUNDWZRU]\ZSDPLÚFLPRGHOWHM
VWURQ\:\REUDěVRELHSDPLÚÊSU]HJOÈGDUNLMDNR
]ELöUSï\WHN
<>
:Ú]ï\ZPRGHOX'20]DELHUDMÈSRMHGQHMSï\WFH
var
=PLHQQH]DELHUDMÈSRMHGQHMSï\WFH
6NRPSOLNRZDQHRELHNW\-DYD6FULSWPRJÈ]DELHUDÊ
ZLHOHSï\WHNSRQLHZDĝSU]HFKRZXMÈZLÚNV]ÈLORĂÊ
GDQ\FK
$
:U]HF]\ZLVWRĂFLHOHPHQW\]QDMGXMÈFHVLÚZSDPLÚFLSU]HJOÈGDUNLQLHVÈUR]ïRĝRQHZWDNLVSRVöE
MDNSRND]DQRQDGLDJUDPLH-HGQDNGLDJUDP
SRPDJDZZ\MDĂQLHQLXNRQFHSFML
.LHG\SURJUDPLĂFLPöZLÈĝH]PLHQQDOXERELHNW
SU]HFKRZXMHRGQLHVLHQLHGRF]HJRĂR]QDF]DWR
SU]HFKRZ\ZDQLHGDQ\FKRSRïRĝHQLXLQIRUPDFML
ZSDPLÚFLSU]HJOÈGDUNL:RPDZLDQ\PSU]\NïDG]LHRELHNWM4XHU\EÚG]LHZLHG]LDïĝHHOHPHQW\
OLVW\VÈSU]HFKRZ\ZDQHZ$%L&:DUWR
SU]\SRPQLHÊSRQRZQLHĝHWRW\ONRLOXVWUDFMD
NRQFHSFML3DPLÚÊSU]HJOÈGDUNLQLHMHVWWDNSURVWD
MDNSODQV]D]SRND]DQ\PLSRïRĝHQLDPL
A
B
C
D
E
F
1
<>
<>
<>
var
var
var
2
<>
<>
<>
3
<>
<>
<>
0 A4
li
li
li
2 C4
4
314
.LHG\GRNRQXMHV]Z\ERUXZM4XHU\RELHNWM4XHU\
zawiera odniesieniaGRHOHPHQWöZZPRGHOX
'20QLHWZRU]\LFKNRSLL
JQUERY
$('li');
1 B4
var
2ELHNWM4XHU\MHVWSRGREQ\GR
WDEOLF\SRQLHZDĝSU]HFKRZXMH
OLVWÚHOHPHQWöZZWDNLHMVDPHM
NROHMQRĂFLZMDNLHMSRMDZLDMÈ
VLÚRQHZGRNXPHQFLH+70/
-HVWWRSU]HFLZLHñVWZRLQQ\FK
RELHNWöZZNWöU\FKNROHMQRĂÊ
ZïDĂFLZRĂFL]Z\NOHQLHEÚG]LH
]DFKRZDQD BUFOROWANIE W ZMIENNYCH
JQUERY WYBRANYCH
ELEMENTÓW
2ELHNWM4XHU\SU]HFKRZXMHRGQLHVLHQLDGRHOHPHQWöZ
%XIRURZDQLHRELHNWXM4XHU\SRZRGXMHSU]HFKRZ\ZDQLH
Z]PLHQQHMRGQLHVLHQLDGRWHJRRELHNWX
8WZRU]HQLHRELHNWXM4XHU\PRĝHZ\PDJDÊQLHFR
F]DVX]DVREöZSURFHVRUDDWDNĝHSDPLÚFL
,QWHUSUHWHUPXVLZ\NRQDÊSRQLĝV]H]DGDQLD
3RQLĝHMXWZRU]RQ\]RVWDMHRELHNWM4XHU\ĽSU]HFKRZXMHSRïRĝHQLHHOHPHQWöZ<li>ZGU]HZLH
PRGHOX'20
1. :\V]XNDQLHZGU]HZLHPRGHOX'20GRSDVRZDQ\FKZÚ]ïöZ
2. 8WZRU]HQLHRELHNWXM4XHU\
3. 3U]HFKRZ\ZDQLHZRELHNFLHM4XHU\RGQLHVLHñ
GRZÚ]ïöZ
$(’li’);
'ODWHJRWHĝMHĝHOLWHVDPHHOHPHQW\NRGPXVLZ\EUDÊFRQDMPQLHMGZDUD]\OHSV]\PUR]ZLÈ]DQLHP
EÚG]LHSRQRZQHXĝ\FLHRELHNWXQLĝSRZWöU]HQLH
SU]HGVWDZLRQHJRSRZ\ĝHMSURFHVX:W\PFHOXRGQLHVLHQLHGRRELHNWXM4XHU\QDOHĝ\SU]HFKRZ\ZDÊ
Z]PLHQQHM
2GQLHVLHQLHGRWHJRRELHNWXMHVWSU]HFKRZ\ZDQH
Z]PLHQQHMRQD]ZLH$listItems=ZUöÊXZDJÚ
QDMHGHQIDNWNLHG\]PLHQQD]DZLHUDRELHNWM4XHU\MHMQD]ZDF]ÚVWR]DF]\QDVLÚRG]QDNX$ FR
PDSRPöFZRGUöĝQLHQLXMHMRGLQQ\FK]PLHQQ\FK
Xĝ\ZDQ\FKZVNU\SFLH $listItems = $(’li’);
A
B
C
D
E
F
1
<>
<>
<>
var
var
var
2
<>
<>
<>
3
<>
<>
<>
0 A4
li
li
li
2 C4
4
$('li');
var
1 B4
%XIRURZDQLHHOHPHQWöZ
Z\EUDQ\FKSU]H]M4XHU\MHVW
SRGREQHGRLGHLSU]HFKRZ\ZDQLDRGQLHVLHQLDGRZÚ]ïD
PRGHOX'20SRZ\NRQDQLX
]DS\WDQLDPRGHOX'20 MDN
SU]HGVWDZLRQRZUR]G]LDOH JQUERY
315
PĘTLE
:]Z\Nï\PNRG]LH-DYD6FULSW
MHĝHOLWRVDPR]DGDQLHPD
]RVWDÊZ\NRQDQHQDZLHOX
HOHPHQWDFKWRNRQLHF]QHMHVW
]DVWRVRZDQLHSÚWOLSU]HSURZDG]DMÈFHMLWHUDFMÚSU]H]ZV]\VWNLH
Z\EUDQHHOHPHQW\
:SU]\SDGNXM4XHU\JG\VHOHNWRU]ZUDFDZLHOHHOHPHQWöZ
WRZV]\VWNLHPRĝQDXDNWXDOQLÊ
]DSRPRFÈW\ONRMHGQHMPHWRG\
1LHPDNRQLHF]QRĂFLXĝ\FLD
SÚWOL
c07/js/looping.js
:SRQLĝV]\PIUDJPHQFLH
NRGXWDVDPDZDUWRĂFL]RVWDMH
GRGDQDGRDWU\EXWXclass
ZV]\VWNLFKHOHPHQWöZZ\V]XNDQ\FK]DSRPRFÈVHOHNWRUD
/LF]ED]QDOH]LRQ\FKHOHPHQWöZ
QLHPDWXWDMĝDGQHJR]QDF]HQLD
JAVASCRIPT
$(’li em’).addClass(’seasonal’);
$(’li.hot’).addClass(’favorite’);
:RPDZLDQ\PSU]\NïDG]LH
SLHUZV]\VHOHNWRUPD]DVWRVRZDQLHW\ONRGRMHGQHJR
HOHPHQWXDQRZDZDUWRĂÊ
atrybutu classSRZRGXMH
Z\ZRïDQLHQRZHMUHJXï\&66
NWöUDGRGDMHLNRQÚNDOHQGDU]D
SROHZHMVWURQLHHOHPHQWX
=NROHLGUXJLVHOHNWRUPD]DVWRVRZDQLHGODWU]HFKHOHPHQWöZ
1RZDZDUWRĂÊGRGDQDGR
atrybutu classW\FKHOHPHQWöZ
SRZRGXMHGRGDQLHLNRQ\VHUFD
SRSUDZHMVWURQLHHOHPHQWX
0RĝOLZRĂÊXDNWXDOQLHQLD
ZV]\VWNLFKHOHPHQWöZZ]ELRU]HZ\EUDQ\FKSU]H]M4XHU\
QRVLQD]ZÚniejawnej iteracji
.LHG\LQIRUPDFMHWU]HEDSREUDÊ
]VHULLHOHPHQWöZPRĝQDXĝ\Ê
PHWRG\.each()Ľ]RVWDQLH
SU]HGVWDZLRQDZSRGUR]G]LDOH
ķ3UDFD]SRV]F]HJöOQ\PL
HOHPHQWDPLZGRSDVRZDQ\P
]ELRU]HĵĽ]DPLDVWWZRU]\Ê
SÚWOÚ
316
JQUERY
WYNIK
ŁĄCZENIE METOD
-HĝHOLFKFHV]VNRU]\VWDÊ]ZLHOX
PHWRGM4XHU\QDZ\EUDQ\FK
HOHPHQWDFKWRPRĝHV]MH
SRGDÊUR]G]LHODMÈFMHNURSNDPL
MDNSRND]DQRSRQLĝHM
:SU]HGVWDZLRQ\PSROHFHQLX
QDW\FKVDP\FKHOHPHQWDFK
VÈZ\NRQ\ZDQHWU]\PHWRG\
hide() RGSRZLHG]LDOQD]D
XNU\FLHHOHPHQWöZ delay()
SRZRGXMÈFDSDX]Ú LfadeIn()
SRND]XMÈFDHOHPHQW\ JAVASCRIPT
3URFHVXPLHV]F]HQLDZLHOX
PHWRGZW\PVDP\PVHOHNWRU]H
QRVLQD]ZÚïÈF]HQLDPHWRG-DN
PRĝHV]]REDF]\ÊHIHNWHPMHVW
NRGZ]ZLÚ]ïHMSRVWDFL
c07/js/chaining.js
$(’li[id!=”one”]’).hide().delay(500).fadeIn(1400);
WYNIK
$E\NRGE\ïïDWZLHMV]\ZRGF]\FLHZ\ZRïDQLHSRV]F]HJöOQ\FK
PHWRGPRĝQDXPLHĂFLÊ
ZRGG]LHOQ\FKZLHUV]DFK
$(’li[id!=”one”]’)
.hide()
.delay(500)
.fadeIn(1400);
.DĝG\ZLHUV]]DZLHUDMÈF\Z\ZRïDQLHPHWRG\UR]SRF]\QDVLÚ
RGNURSNLDĂUHGQLNQDNRñFX
SROHFHQLDR]QDF]D]DNRñF]HQLH
SUDF\]Z\EUDQ\PLHOHPHQWDPL
:LÚNV]RĂÊPHWRGXĝ\ZDQ\FK
GRuaktualnianiaHOHPHQWöZ
Z\EUDQ\FKZM4XHU\PRĝQD]H
VREÈïÈF]\Ê-HGQDNPHWRG\poELHUDMÈFHLQIRUPDFMH]PRGHOX
'20 OXEGDQHRSU]HJOÈGDUFH
LQWHUQHWRZHM QLHPRJÈE\Ê
ïÈF]RQH
:DUWRZW\PPLHMVFXZVSRPQLHÊRMHGQ\PMHĝHOLMHGQD
]PHWRGZïDñFXFKXQLHG]LDïD
WRSR]RVWDïHUöZQLHĝQLHEÚGÈ
G]LDïDï\
JQUERY
317
SPRAWDZENIE, CZY STRONA
JEST GOTOWA, BY MOŻNA
BYŁO Z NIĄ PRACOWAĆ
2IHURZDQDSU]H]M4XHU\PHWRGD.ready()VSUDZG]D
F]\VWURQDMHVWJRWRZDGRSUDF\]NRGHP
$(document) tworzy obiekt
M4XHU\SU]HGVWDZLDMÈF\VWURQÚ
OBIEKT JQUERY
.LHG\VWURQDMHVWJRWRZDGR
WHJRE\]QLÈSUDFRZDÊIXQNFMD
XPLHV]F]RQDZQDZLDVLHPHWRG\
.ready()EÚG]LHJRWRZDGR
Z\NRQDQLD
METODA ZDARZENIA READY
$(document).ready(function() {
0LHMVFHQDNRGVNU\SWX
});
3RGREQLHMDNZSU]\SDGNX
]Z\NïHJRNRGX-DYD6FULSW
MHĝHOLSU]HJOÈGDUNDMHV]F]HQLH
SU]\JRWRZDïDGU]HZDPRGHOX
'20WRELEOLRWHNDM4XHU\QLH
EÚG]LHPRJïDZ\ELHUDÊ]QLHJR
HOHPHQWöZ
-HĝHOLVNU\SW]RVWDQLHXPLHV]F]RQ\QDNRñFXVWURQ\ WXĝ
SU]HG]DP\NDMÈF\P]QDF]QLNLHP</body> WRHOHPHQW\
EÚGÈZF]\WDQHZGU]HZLH
PRGHOX'20
-HĝHOLNRGM4XHU\]RVWDQLH
RSDNRZDQ\SRZ\ĝV]ÈPHWRGÈ
QDGDOEÚG]LHG]LDïDïJG\
]RVWDQLHXĝ\W\ZGRZROQ\P
PLHMVFXQDVWURQLHOXEQDZHW
ZLQQ\PSOLNX
6NUöWSRZ\ĝV]HJRZ\ZRïDQLD]RVWDïSRND]DQ\QDVWURQLHSRSUDZHM6NUöWWHQMHVWVWRVRZDQ\]QDF]QLH
F]ÚĂFLHMQLĝGïXĝV]DZHUVMDZ\ZRïDQLD
JQUERY
2PDZLDQH]GDU]HQLHQDOHĝ\
Z\NRU]\VW\ZDÊJG\VNU\SW
RSLHUDVLÚQDZF]\W\ZDQ\FK
]DVREDFKQDSU]\NïDGPXVL
PLHÊLQIRUPDFMÚRZ\PLDUDFK
REUD]X
=GDU]HQLHG]LDïDZHZV]\VWNLFK
SU]HJOÈGDUNDFKDSRQDGWR
RIHUXMH]DNUHVQDSR]LRPLH
IXQNFMLGOD]QDMGXMÈF\FKVLÚ
ZQLP]PLHQQ\FK
-HĝHOL]GDU]HQLH
DOMContentLoaded jest
REVïXJLZDQHPHWRGDM4XHU\
WZRU]\REVHUZDWRUD]GDU]HñRGSRZLDGDMÈFHJRQDZ\PLHQLRQH
]GDU]HQLH-HGQDNWR]GDU]HQLH
MHVWREVïXJLZDQHMHG\QLHZQRZRF]HVQ\FKSU]HJOÈGDUNDFK
:VWDUV]\FKELEOLRWHNDM4XHU\
EÚG]LHRF]HNLZDÊQDZ\ZRïDQLH
]GDU]HQLDload
KONTRA
METODA .READY()
0HWRGDM4XHU\RQD]ZLH
.ready()VSUDZG]DF]\SU]HJOÈGDUNDLQWHUQHWRZDREVïXJXMH
]GDU]HQLHDOMContentLoaded
SRQLHZDĝMHVWRQRZ\ZRï\ZDQH
WXĝSRZF]\WDQLXPRGHOX'20
QLHPDRF]HNLZDQLDQD]DNRñF]HQLHSRELHUDQLD]DVREöZ LMHJRXĝ\FLHPRĝHVSUDZLÊ
ZUDĝHQLHĝHVWURQDZF]\WXMHVLÚ
V]\EFLHM
KONTRA
ZDARZENIE LOAD
%LEOLRWHNDM4XHU\PDPHWRGÚ
.load()-HVWRQDZ\ZRï\ZDQD
Z]GDU]HQLDFKloadDOH]RVWDïD
]DVWÈSLRQDSU]H]PHWRGÚ.on()
-DNZLG]LDïHĂZUR]G]LDOH
ZSRGUR]G]LDOHķ=GDU]HQLD
LQWHUIHMVXXĝ\WNRZQLNDĵ]GDrzenie loadMHVWZ\ZRï\ZDQH
po wczytaniu strony wraz z jej
ZV]\VWNLPL]DVREDPL REUD]\
VW\OH&66LVNU\SW\ UMIESZCZENIE SKRYPTÓW
PRZED ZAMYKAJĄCYM
ZNACZNIKIEM </BODY>
.LHG\XPLHĂFLV]VNU\SWQD
NRñFXVWURQ\ SU]HG]DP\NDMÈF\P]QDF]QLNLHP</body> NRG
+70/]RVWDQLHZF]\WDQ\GR
PRGHOX'20SU]HGXUXFKRPLHQLHPVNU\SWX
1DGDOEÚG]LHV]VSRW\NDïVLÚ
]Xĝ\FLHPPHWRG\.ready()
SRQLHZDĝZ\NRU]\VWXMÈFHMÈ
VNU\SW\EÚGÈG]LDïDÊQDZHW
ZWHG\JG\]QDF]QLN<script>
]RVWDQLHSU]HQLHVLRQ\GRLQQHM
F]ÚĂFLVWURQ\+70/ =GDU]DVLÚ
WRQDMF]ÚĂFLHMZWHG\JG\VNU\SW
VWDMHVLÚGRVWÚSQ\WDNĝHGOD
LQQ\FKXĝ\WNRZQLNöZ SKRÓT DLA METODY ZDARZENIA
READY W OBIEKCIE DOCUMENT
$(function() {
0LHMVFHQDNRGVNU\SWX
});
3RZ\ĝHMPRĝHV]]REDF]\Ê
VNU\SWSRZV]HFKQLHXĝ\ZDQ\]DPLDVWZ\ZRïDQLD
$(document).ready()
3R]\W\ZQ\PHIHNWHPWZRU]HQLD
NRGXM4XHU\ZHZQÈWU]WHM
PHWRG\MHVWWRĝHGOD]PLHQQ\FKVWDMHVLÚGRVWÚSQ\]DNUHV
QDSR]LRPLHIXQNFML
=DNUHVWHQFKURQLSU]HG
NROL]MDPLQD]Z]LQQ\PL
VNU\SWDPLZNWöU\FKPRJÈ
E\ÊZ\NRU]\VW\ZDQH]PLHQQH
RWDNLFKVDP\FKQD]ZDFK
:V]\VWNLHSROHFHQLD]QDMGXMÈFHVLÚZPHWRG]LH]RVWDQÈDXWRPDW\F]QLHZ\NRQDQHSRZF]\WDQLXVWURQ\
7ÚZHUVMÚZ\ZRïDQLDEÚG]LHP\VWRVRZDÊZSU]\NïDGDFKSU]HGVWDZLRQ\FKZSR]RVWDïHMF]ÚĂFLUR]G]LDïX
JQUERY
319
POBIERANIE ZAWARTOŚCI
ELEMENTU
0HWRG\.html() i .text()SRELHUDMÈLXDNWXDOQLDMÈ]DZDUWRĂÊHOHPHQWöZ
1DWHMVWURQLHNRQFHQWUXMHP\VLÚQDSRELHUDQLX]DZDUWRĂFLHOHPHQWX-HĝHOL
FKFHV]GRZLHG]LHÊVLÚMDNXDNWXDOQLDÊ]DZDUWRĂÊHOHPHQWX]DMU]\MGRSRGUR]G]LDïXķ8DNWXDOQLDQLHHOHPHQWöZĵ
.html()
.text()
.LHG\PHWRGDWDMHVWXĝ\ZDQDGRSRELHUDQLD
LQIRUPDFML]HOHPHQWöZZ\EUDQ\FKZM4XHU\
NRG+70/EÚG]LHSRELHUDQ\W\ONR]pierwszego
HOHPHQWXZGRSDVRZDQ\P]ELRU]HZUD]]MHJR
ZV]\VWNLPLHOHPHQWDPLSRWRPQ\PL
.LHG\PHWRGDWDMHVWZ\NRU]\VW\ZDQDGRSRELHUDQLDWHNVWX]HOHPHQWöZ]ZUöFRQ\FKSU]H]M4XHU\
]ZUDFD]DZDUWRĂÊNDĝGHJRHOHPHQWX]GRSDVRZDQHJR]ELRUXM4XHU\ZUD]]WHNVWHPZV]\VWNLFK
HOHPHQWöZSRWRPQ\FK
1DSU]\NïDGZDUWRĂFLÈ]ZURWQÈZ\ZRïDQLD
$(’ul’).html();MHVW
1DSU]\NïDGZDUWRĂFLÈ]ZURWQÈZ\ZRïDQLD
$(’ul’).text();MHVW
<li id=”one”><em>ĂZLHĝH</em> ğJL</li>
OLLG ĵWZRĵ!RU]HV]NLSLQLRZH</li>
<li id=”three”>miód</li>
<li id=”four”>RFHWEDOVDPLF]Q\</li>
ĂZLHĝHğJL
RU]HV]NLSLQLRZH
miód
RFHWEDOVDPLF]Q\
3RGF]DVJG\Z\ZRïDQLH$(’li’).html();]ZUDFD
3RGF]DVJG\Z\ZRïDQLH$(’li’).text();]ZUDFD
<em>ĂZLHĝH</em> ğJL
ĂZLHĝHğJLRU]HV]NLSLQLRZHPLöGRFHW
EDOVDPLF]Q\
=ZUöÊXZDJÚĝHZDUWRĂFLÈ]ZURWQÈMHVWW\ONR
]DZDUWRĂÊSLHUZV]HJRHOHPHQWX<li>
=DXZDĝĝH]ZUöFRQ\]RVWDïWHNVW]HZV]\VWNLFK
HOHPHQWöZ<li> ïÈF]QLH]HVSDFMDPLPLÚG]\
VïRZDPL LĝHQLHPDVSDFMLPLÚG]\SRV]F]HJöOQ\PLHOHPHQWDPLOLVW\
-HĝHOLFKFHV]SREUDÊZDUWRĂÊNDĝGHJRHOHPHQWX
PXVLV]Xĝ\ÊPHWRG\.each()NWöUDEÚG]LHZSURZDG]RQDZSRGUR]G]LDOHķ3UDFD]SRV]F]HJöOQ\PL
HOHPHQWDPLZGRSDVRZDQ\P]ELRU]Hĵ
320 JQUERY
$E\SREUDÊ]DZDUWRĂÊHOHPHQWöZ<input> lub
<textarea>QDOHĝ\]DVWRVRZDÊPHWRGÚ.val()
NWöUD]RVWDQLHZSURZDG]RQDZSRGUR]G]LDOH
ķ=GDU]HQLDLPHWRG\IRUPXODU]DVLHFLRZHJRĵ
POBIERANIE ZAWARTOŚCI
1DWHMVWURQLHSU]HGVWDZLRQRUöĝQHVSRVRE\Z\NRU]\VWDQLDPHWRG
.html() i .text()QDWHMVDPHMOLĂFLH Z]DOHĝQRĂFLRGHOHPHQWöZ
Z\EUDQ\FKSU]H]VHOHNWRU<ul> lub <li> JAVASCRIPT
8ZDJD0HWRGD.append()Ľ
]RVWDQLHRPöZLRQDZSRGUR]G]LDOH
ķ:VWDZLDQLHHOHPHQWXĵĽSR]ZDOD
QDGRGDZDQLH]DZDUWRĂFLQDVWURQLH
c07/js/get-html-fragment.js
var $listHTML = $(’ul’).html();
$(’ul’).append($listHTML);
6HOHNWRUWHQ]ZUDFDHOHPHQW<ul>0HWRGD.html() pobiera znajGXMÈF\VLÚZQLPFDï\NRG+70/ F]WHU\HOHPHQW\<li> 1DVWÚSQLH
SREUDQD]DZDUWRĂÊMHVWGRïÈF]DQDQDNRñFXZ\EUDQ\FKHOHPHQWöZ
F]\OLWXWDMĽSRLVWQLHMÈF\FKHOHPHQWDFK<li>
JAVASCRIPT
var $listText = $(’ul’).text();
$(’ul’).append(’<p>’ + $listText
c07/js/get-text-fragment.js
+ ’</p>’);
6HOHNWRUWHQ]ZUDFDHOHPHQW<ul>0HWRGD.text() pobiera tekst
]HZV]\VWNLFKHOHPHQWöZSRWRPQ\FK<ul>1DVWÚSQLHSREUDQD
]DZDUWRĂÊMHVWGRïÈF]DQDQDNRñFXZ\EUDQ\FKHOHPHQWöZF]\OL
WXWDMĽSRLVWQLHMÈF\PHOHPHQFLH<ul>
JAVASCRIPT
c07/js/get-html-node.js
var $listItemHTML = $(’li’).html();
$(’li’).append(’<i>’ + $listItemHTML + ’</i>’);
6HOHNWRUWHQ]ZUDFDHOHPHQW<li>DOHPHWRGD.html() zwraca
]DZDUWRĂÊW\ONRSLHUZV]HJR]QLFK1DVWÚSQLHSREUDQD]DZDUWRĂÊ
MHVWGRïÈF]DQDQDNRñFXZ\EUDQ\FKHOHPHQWöZF]\OLWXWDMĽSR
LVWQLHMÈF\FKHOHPHQWDFK<li>
JAVASCRIPT
c07/js/get-text-node.js
var $listItemText = $(’li’).text();
$(’li’).append(’<i>’ + $listItemText + ’</i>’);
6HOHNWRUWHQ]ZUDFDF]WHU\HOHPHQW\<li>0HWRGD.text() pobiera
WHNVW]HZV]\VWNLFKHOHPHQWöZSRWRPQ\FK<ul>1DVWÚSQLHSREUDQD
]DZDUWRĂÊMHVWGRïÈF]DQDQDNRñFXNDĝGHJRZ\EUDQHJRHOHPHQWX
<li>
JQUERY
321
UAKTUALNIANIE ELEMENTÓW
3RQLĝHMZ\PLHQLRQRF]WHU\PHWRG\SU]H]QDF]RQHGRXDNWXDOQLDQLD
]DZDUWRĂFLZV]\VWNLFKHOHPHQWöZZ\EUDQ\FKZM4XHU\
.LHG\PHWRG\.html()
i .text()VÈXĝ\ZDQHGR
GHğQLRZDQLD XDNWXDOQLDQLD ]DZDUWRĂFL]DVWÚSXMÈ]DZDUWRĂÊ
NDĝGHJRHOHPHQWX]QDMGXMÈFHJR
VLÚZGRSDVRZDQ\P]ELRU]H
ZUD]]GRZROQÈ]DZDUWRĂFLÈ
LHOHPHQWDPLSRWRPQ\PL 0HWRG\.replaceWith()
i .remove()SRZRGXMÈ]DVWÈSLHQLHLXVXQLÚFLHGRSDVRZDQ\FK
HOHPHQWöZDWDNĝHLFK]DZDUWRĂFL LZV]\VWNLFKHOHPHQWöZ
SRWRPQ\FK 0HWRG\.html().text()
i .replaceWith()PRJÈ
SRELHUDÊSDUDPHWUZSRVWDFL
FLÈJXWHNVWRZHJR&LÈJWHQ
PRĝHE\ÊSU]HFKRZ\ZDQ\
Z]PLHQQHM
PRĝH]DZLHUDÊNRG]QDF]QLNöZ
•
•
.LHG\GRGDMHV]NRG]QDF]QLNöZ
GRPRGHOX'20XSHZQLMVLÚ
RSU]HSURZDG]HQLXZVHUZHU]H
SUDZLGïRZHMQHXWUDOL]DFML
QLH]DXIDQHM]DZDUWRĂFL
3RGF]DVXĝ\FLDPHWRG.html()
i .replaceWith()Z\VWÚSXMH
QLHEH]SLHF]HñVWZRZ\NRU]\VWDQLDLFKGRSU]HSURZDG]HQLD
DWDNXW\SX;66SRGREQLHMDN
ZSU]\SDGNXSUDF\]ZïDĂFLZRĂFLÈinnerHTMLPRGHOX'20
:UR]G]LDOHRGSRGUR]G]LDïX
ķ$WDNLW\SX;66ĵGRķ;66
ĽQHXWUDOL]DFMDLNRQWUROD
]QDF]QLNöZĵ]QDMG]LHV]ZLÚFHM
LQIRUPDFMLRDWDNDFKW\SX;66
322 JQUERY
.html()
.text()
0HWRGDWDQDGDMHWÚVDPÈQRZÈ
]DZDUWRĂÊNDĝGHPXHOHPHQWRZL
]QDMGXMÈFHPXVLÚZGRSDVRZDQ\P]ELRU]H1RZD]DZDUWRĂÊ
PRĝH]DZLHUDÊNRG+70/
0HWRGDWDQDGDMHWÚVDPÈQRZÈ
]DZDUWRĂÊNDĝGHPXHOHPHQWRZL
]QDMGXMÈFHPXVLÚZGRSDVRZDQ\P]ELRU]H:V]HONLNRG
]QDF]QLNöZ]RVWDQLHZ\ĂZLHWORQ\MDNRWHNVW
.replaceWith()
.remove()
.DĝG\HOHPHQW]QDMGXMÈF\
VLÚZGRSDVRZDQ\P]ELRU]H
PHWRGDWD]DVWÚSXMHQRZÈ
]DZDUWRĂFLÈ3RQDGWR]ZUDFD
]DVWÈSLRQHHOHPHQW\
0HWRGDWDXVXZDZV]\VWNLH
HOHPHQW\ZGRSDVRZDQ\P
]ELRU]H
UŻYCIE FUNKCJI DO UAKTUALNIENIA ZAWARTOŚCI
-HĝHOLFKFHV]Z\NRU]\VWDÊoraz]PRG\ğNRZDÊ]DZDUWRĂÊDNWXDOQLH
Z\EUDQ\FKHOHPHQWöZZ\PLHQLRQHPHWRG\PRJÈSREUDÊSDUDPHWU
ZSRVWDFLIXQNFML)XQNFMÚWÚPRĝQD]DVWRVRZDÊGRXWZRU]HQLD
QRZHM]DZDUWRĂFL3RQLĝHMSU]HGVWDZLRQRSU]\NïDGZNWöU\PWHNVW
NDĝGHJRHOHPHQWXMHVWXPLHV]F]DQ\ZHZQÈWU]]QDF]QLNöZ<em>
$(’li.hot’).html(function() {
return ’<em>’ + $(this).text() + ’</em>’;
});
1
2
3
2
1. Polecenie returnZVND]XMHĝH]DZDUWRĂÊSRZLQQDE\Ê]ZUöFRQD
SU]H]IXQNFMÚ
2. =QDF]QLNL<em>VÈXPLHV]F]RQHZRNöïWHNVWX]DZDUWRĂFLGDQHJR
HOHPHQWXOLVW\
3. 6ïRZRNOXF]RZHthisRGZRïXMHVLÚGRELHĝÈFHJRHOHPHQWXOLVW\
$(this)XPLHV]F]DHOHPHQWZQRZ\PRELHNFLHM4XHU\DE\PRĝQD
E\ïRXĝ\ÊZQLPPHWRGM4XHU\
ZMIANA ZAWARTOŚCI
:SRQLĝV]\PSU]\NïDG]LH
PRĝQD]REDF]\ÊZ\NRU]\VWDQLH
WU]HFKPHWRGSU]H]QDF]RQ\FK
GRXDNWXDOQLHQLD]DZDUWRĂFL
c07/js/changing-content.js
JAVASCRIPT
1
2
3
VWURQ\3RGF]DVXDNWXDOQLDQLD
HOHPHQWXPRĝQDXĝ\ZDÊ
FLÈJXWHNVWRZHJR]PLHQQHMOXE
IXQNFML
$(function() {
ijOLFRQWDLQV ĴRU]HV]NLĵ ij WH[W ijPOHNRPLJGDïRZHij $(’li.hot’).html(function() {
return ’<em>’ + $(this).text() + ’</em>’;
});
$(’li#one’).remove();
});
1. 7HQZLHUV]NRGXSRZRGXMH
ĝHZ\EUDQH]RVWDQÈZV]\VWNLH
HOHPHQW\OLVW\]DZLHUDMÈFH
VïRZRRU]HV]NL1DVWÚSQLH]D
SRPRFÈPHWRG\.text() tekst
ZGRSDVRZDQ\FKHOHPHQWDFK
]RVWDQLH]DVWÈSLRQ\SU]H]VïRZR
POHNRPLJGDïRZH
WYNIK
2. 7HQZLHUV]NRGXSRZRGXMH
Z\EöUZV]\VWNLFKHOHPHQWöZ
OLVW\NWöU\FKDWU\EXWclass
]DZLHUDVïRZRhot0HWRGD
.html()MHVWXĝ\ZDQDGR
XDNWXDOQLHQLD]DZDUWRĂFL
NDĝGHJR]QLFK
0HWRGD.html() wykorzystuje
IXQNFMÚGRXPLHV]F]HQLD
ZHOHPHQFLH<em>]DZDUWRĂFL
NDĝGHJRHOHPHQWX 6NïDGQLÚ
SU]HGVWDZLRQRQDGROHVWURQ\
SROHZHM 3. 7HQZLHUV]NRGXSRZRGXMH
Z\EöUHOHPHQWX<li>NWöUHJR
ZDUWRĂFLÈDWU\EXWXid jest
one1DVWÚSQLH]DSRPRFÈ
PHWRG\remove()HOHPHQW
]RVWDMHXVXQLÚW\ 7DPHWRGDQLH
Z\PDJDSDUDPHWUX 3RGF]DVSRGDZDQLDQRZHM
]DZDUWRĂFLGRNïDGQLH]DVWDQöZ
VLÚMDNLH]QDNLF\WRZDQLD
SRZLQQ\]RVWDÊXĝ\WH DSRVWURI\
OXEFXG]\VïöZ -HĝHOLGRïÈF]DQ\HOHPHQW]DZLHUDDWU\EXW\
WR]DZDUWRĂÊXMPLMZDSRVWURI\
1DVWÚSQLHZ\NRU]\VWDMFXG]\VïöZZFHOXSRGDQLDZDUWRĂFL
DWU\EXWöZ
JQUERY 323
WSTAWIANIE ELEMENTU
:VWDZLDQLHQRZHJRHOHPHQWXZ\PDJDGZöFKNURNöZ
8WZRU]HQLHQRZ\FKHOHPHQWöZZRELHNFLHM4XHU\
8ĝ\FLHPHWRG\SU]H]QDF]RQHMGRZVWDZLDQLD]DZDUWRĂFLQDVWURQLH
0RĝQDWZRU]\ÊQRZHRELHNW\
SU]H]QDF]RQHGRSU]HFKRZ\
ZDQLDWHNVWXL]QDF]QLNöZ
DQDVWÚSQLHGRGDZDÊWH
RELHNW\GRGU]HZDPRGHOX
'20]DSRPRFÈMHGQHM]PHWRG
Z\PLHQLRQ\FKZNURNX
1. UTWORZENIE NOWYCH ELEMENTÓW W OBIEKCIE
JQUERY.
-HĝHOLWZRU]\V]NROHNFMÚ
]ZUDFDMÈFÈZLHOHHOHPHQWöZ
PHWRG\WHEÚGÈGRGDZDÊWÚ
VDPÈ]DZDUWRĂÊGRZV]\VWNLFK
HOHPHQWöZZGRSDVRZDQ\P
]ELRU]H
3RQLĝV]HSROHFHQLHSRZRGXMHXWZRU]HQLH]PLHQQHMRQD]ZLH
QHZ,WHPLSU]HFKRZXMHZQLHMRELHNWM4XHU\7HQRELHNW]NROHL]DZLH
UDSXVW\HOHPHQW<li>ZUD]]DWU\EXWHPclassLSHZQ\PWHNVWHP
YDUQHZ,WHP ijOLFODVV ĵQHZĵ!HOHPHQWOL!ij 3RGF]DVGRGDZDQLD]DZDUWRĂFL
GRPRGHOX'20XSHZQLM
VLÚF]\ZVHUZHU]H]RVWDïD
SU]HSURZDG]RQDRSHUDFMD]QHX
WUDOL]RZDQLDFDïHMQLH]DXIDQHM
]DZDUWRĂFL 3DWU]UR]G]LDï
RGSRGUR]G]LDïXķ$WDNLW\SX
;66ĵGRķ;66ĽQHXWUDOL]DFMD
LNRQWUROD]QDF]QLNöZĵJG]LH
RPöZLRQRDWDNLW\SX;66 .before()
.after()
<li> item </li>
.prepend()
.append()
3RQLĝV]HSROHFHQLHSRZRGXMHXWZRU]HQLH]PLHQQHMRQD]ZLH
QHZ)UDJPHQWLSU]HFKRZXMHZQLHMRELHNWM4XHU\:W\PPRPHQFLH
RELHNWM4XHU\]DZLHUDSXVW\HOHPHQW<li>
YDUQHZ)UDJPHQW ijOL!ij 2. UŻYCIE METODY PRZEZNACZONEJ DO WSTAWIANIA
ZAWARTOŚCI NA STRONIE.
*G\GRGDP\]PLHQQÈSU]H]QDF]RQÈGRSU]HFKRZ\ZDQLDQRZHM
]DZDUWRĂFL]DSRPRFÈZ\PLHQLRQ\FKSRQLĝHMPHWRGPRĝHP\GRGDÊ
QRZÈZDUWRĂÊGRGU]HZDPRGHOX'20
.before()
.after()
3RZRGXMHZVWDZLHQLH
]DZDUWRĂFLSU]HGZ\EUDQ\PL
HOHPHQWDPL
3RZRGXMHZVWDZLHQLH]DZDUWR
ĂFLSRZ\EUDQ\FKHOHPHQWDFK
.prepend()
.append()
3RZRGXMHZVWDZLHQLH]DZDU
WRĂFLZHZQÈWU]Z\EUDQ\FK
HOHPHQWöZSR]QDF]QLNX
RWZLHUDMÈF\P
3RZRGXMHZVWDZLHQLH]DZDU
WRĂFLZHZQÈWU]Z\EUDQ\FK
HOHPHQWöZSU]HG]QDF]QLNLHP
]DP\NDMÈF\P
,VWQLHMÈSRQDGWRPHWRG\.prependTo() i .appendTo(),FKG]LDïDQLH
MHVWQLHFRLQQHQLĝ.prepend() i .append()
a.prepend(b)SRZRGXMH
GRGDQLHbGRa
a.prependTo(b)SRZRGXMH
GRGDQLHaGRb
324 JQUERY
a.append(b)SRZRGXMHGRGDQLH
bGRa
a.appendTo(b)SRZRGXMH
GRGDQLHaGRb
DODAWANIE NOWEJ
ZAWARTOŚCI
:SRQLĝV]\PSU]\NïDG]LH
PRĝQD]REDF]\ÊWU]\RSHUDFMH
Z\ERUXHOHPHQWöZZM4XHU\
.DĝGD]QLFKZ\NRU]\VWXMH
LQQÈPHWRGÚGRPRG\ğNDFML
]DZDUWRĂFLOLVW\
FMVDGGLQJQHZFRQWHQWMV
JAVASCRIPT
1
2
3
Pierwsza wstawia nowy
NRPXQLNDWSU]HGOLVWÈGUXJD
XPLHV]F]D]QDN+SU]HG
HOHPHQWDPLRNODVLHhot
QDWRPLDVWWU]HFLDZVWDZLDQRZ\
HOHPHQWQDNRñFXOLVW\
$(function() {
ijOLFRQWDLQV RU]HV]NLĵ ij WH[W ijPOHNRPLJGDïRZHij $(’li.hot’).html(function() {
return ’<em>’ + $(this).text() + ’</em>’;
});
$(’li#one’).remove();
});
1. 1DVWÈSLïRZ\EUDQLHHOHPHQWX
<ul>0HWRGD.before()
]RVWDïDXĝ\WDGRZVWDZLHQLD
QRZHJRDNDSLWXSU]HGOLVWÈ
WYNIK
2. Polecenie wybiera wszystkie
HOHPHQW\<li>NWöU\FKDWU\EXW
class]DZLHUDZDUWRĂÊhot
1DVWÚSQLH]DSRPRFÈPHWRG\
.prepend()QDVWÚSXMHXPLHV]czenie znaku +SU]HGWHNVWHP
3. =RVWDMHXWZRU]RQ\QRZ\
HOHPHQW<li>NWöU\MHVW
XPLHV]F]DQ\Z]PLHQQHM
1DVWÚSQLHSROHFHQLHZ\ELHUD
RVWDWQLHOHPHQW<li> i za
SRPRFÈPHWRG\.after()
wstawia nowo przygotowany
HOHPHQW
JQUERY 325
POBIERANIE I USTAWIANIE
WARTOŚCI ATRYBUTU
=]DVWRVRZDQLHPF]WHUHFKZ\PLHQLRQ\FKSRQLĝHMPHWRGPRĝQDWZRU]\Ê
DWU\EXW\OXEX]\VNLZDÊGRQLFKGRVWÚSLXDNWXDOQLDÊLFK]DZDUWRĂÊ
0HWRGÚattr() i removeAttr()
PRĝQDZ\NRU]\VWDÊGRSUDF\
]GRZROQ\PHOHPHQWHP
-HĝHOLPHWRG\attr()Xĝ\ZDV]
GRXDNWXDOQLHQLDQLHLVWQLHMÈFHJRDWU\EXWXVSRZRGXMH
ona utworzenie wskazanego
DWU\EXWXLSU]\SLVDQLHPX
SRGDQHMZDUWRĂFL
:DUWRĂÊDWU\EXWXclassPRĝH
SU]HFKRZ\ZDÊZLÚFHMQLĝW\ONR
MHGQÈQD]ZÚNODV\ UR]G]LHORQH
VSDFMDPL 0HWRG\addClass()
i removeClass()RIHUXMÈEDUG]R
GXĝHPRĝOLZRĂFLSRQLHZDĝ
SR]ZDODMÈQDGRGDZDQLHOXE
usuwanie poszczególnych nazw
NODVZZDUWRĂFLDWU\EXWXclass
LQLHZSï\ZDMÈSU]\W\PQD
SR]RVWDïHQD]Z\NODV .attr()
.removeAttr()
0HWRGDWDPRĝHSREUDÊOXE
XVWDZLÊRNUHĂORQ\DWU\EXWLMHJR
ZDUWRĂÊ$E\SREUDÊZDUWRĂÊ
DWU\EXWXQDOHĝ\SRGDÊQD]ZÚ
DWU\EXWXZQDZLDVLH
7DPHWRGDSRZRGXMHXVXQLÚFLH
RNUHĂORQHJRDWU\EXWX LMHJR
ZDUWRĂFL :QDZLDVLHSR
SURVWXSRGDMHV]QD]ZÚDWU\EXWX
SU]H]QDF]RQHJRGRXVXQLÚFLD
]HOHPHQWX
$(’li#one’).attr(’id’);
$(’li#one’).
removeAttr(’id’);
$E\XDNWXDOQLÊZDUWRĂÊ
DWU\EXWXWU]HEDSRGDÊ]DUöZQR
QD]ZÚDWU\EXWXMDNLMHJR
ZDUWRĂÊ
$(’li#one’).
attr(’id’,’hot’);
.addClass()
.removeClass()
7DPHWRGDSRZRGXMHGRGDQLH
QRZHMZDUWRĂFLGRLVWQLHMÈFHM
ZDUWRĂFLDWU\EXWXclass1LH
SRZRGXMHQDGSLVDQLDLVWQLHMÈF\FKZDUWRĂFL
7DPHWRGDSRZRGXMHXVXQLÚFLH
ZDUWRĂFL]DWU\EXWXclass
3R]RVWDïHQD]Z\NODVZDWU\EXFLHSR]RVWDMÈEH]]PLDQ
'ZLHRVWDWQLHPHWRG\WRLQQ\GREU\SU]\NïDGNWöU\SRND]XMH
MDNELEOLRWHNDM4XHU\GRGDMHQLH]Z\NOHSU]\GDWQHIXQNFMHSRWU]HEQH
SURJUDPLVWRPDSOLNDFMLLQWHUQHWRZ\FKSUDNW\F]QLHFRG]LHQQLH
326 JQUERY
PRACA Z ATRYBUTAMI
3ROHFHQLDZSRQLĝV]\PSU]\NïDG]LHXĝ\ZDMÈPHWRGM4XHU\
ZFHOX]PLDQ\DWU\EXWöZclass
i idRNUHĂORQ\FKHOHPHQWöZ
+70/
.LHG\ZDUWRĂÊZ\PLHQLRQ\FK
DWU\EXWöZXOHJD]PLDQLHGR
HOHPHQWöZ]RVWDMÈ]DVWRVRZDQH
QRZHUHJXï\&66NWöUHPRJÈ
VSRZRGRZDÊ]PLDQÚLFK
Z\JOÈGX
c07/js/attributes.js
JAVASCRIPT
1
2
3
:\NRU]\VWDQLH]GDU]HñGR
Z\ZRïDQLD]PLDQZZDUWRĂFLDFKDWU\EXWXSRZRGXMÈF\FK
]DVWRVRZDQLHQRZ\FKUHJXï&66
to popularny sposób zapewQLHQLDLQWHUDNW\ZQRĂFLVWURQ\
LQWHUQHWRZHM
$(function() {
$(’li#three’).removeClass(’hot’);
$(’li.hot’).addClass(’favorite’);
$(’ul’).attr(’id’, ’group’);
});
1. Pierwsze polecenie wyV]XNXMHWU]HFLHOHPHQWOLVW\
RDWU\EXFLHidRZDUWRĂFL
three LXVXZDNODVÚhot
]ZDUWRĂFLDWU\EXWXclass tego
HOHPHQWX7REDUG]RZDĝQH
SRQLHZDĝPDZSï\ZQDNROHMQH
SROHFHQLH
2. Drugie polecenie wybiera
HOHPHQW\<li>NWöU\FKDWU\EXW
classPDZDUWRĂÊhot1DVWÚSQLHGRGDMHQRZÈNODVÚRQD]ZLH
favorite3RQLHZDĝNURN
VSRZRGRZDïXDNWXDOQLHQLH
WU]HFLHJRHOHPHQWXOLVW\ELHĝÈFH
SROHFHQLHZSï\ZDMHG\QLHQD
GZDSLHUZV]HHOHPHQW\OLVW\
3. 7U]HFLHSROHFHQLHZ\ELHUD
HOHPHQW<ul>GRGDMHDWU\EXWid
RZDUWRĂFLgroup 6SRZRGXMH
WRĝH]RVWDQLHZ\ZRïDQDUHJXïD
&66GRGDMÈFDGRHOHPHQWX<ul>
PDUJLQHVLREUDPRZDQLH WYNIK
JQUERY 327
POBIERANIE I USTAWIANIE
WŁAŚCIWOŚCI CSS
0HWRGD.css() pozwala na pobieranie
LXVWDZLDQLHZDUWRĂFLZïDĂFLZRĂFL&66
Aby SREUDÊZDUWRĂÊZïDĂFLZRĂFL&66QDOHĝ\ZQDZLDVLH
SRGDÊQD]ZÚZïDĂFLZRĂFL
-HĝHOLGRSDVRZDQ\]ELöU]DZLHUDFRQDMPQLHMGZDHOHPHQW\WR
]RVWDQLH]ZUöFRQDZDUWRĂÊW\ONR
]SLHUZV]HJRHOHPHQWX
Aby XVWDZLÊZDUWRĂÊZïDĂFLZRĂFL&66MHMQD]ZÚQDOHĝ\
SRGDÊZQDZLDVLHMDNRSLHUZV]\
DUJXPHQWQDVWÚSQLHXPLHĂFLÊ
SU]HFLQHNLZDUWRĂÊMDNR
GUXJLDUJXPHQW:WHQVSRVöE
QDVWÈSLXDNWXDOQLHQLHZV]\VWNLFKHOHPHQWöZ]QDMGXMÈF\FK
VLÚZGRSDVRZDQ\P]ELRU]H
']LÚNLQRWDFMLOLWHUDïXRELHNWX
LVWQLHMHPRĝOLZRĂÊSRGDQLD
ZLHOXZïDĂFLZRĂFLZWHMVDPHM
PHWRG]LH
8ZDJD:PHWRG]LHNWöUDMHVW
Z\NRU]\VW\ZDQDGRXVWDZLHQLD
SRMHG\QF]HMZïDĂFLZRĂFL
QD]ZDZïDĂFLZRĂFLLMHMZDUWRĂÊ
VÈUR]G]LHORQHSU]HFLQNLHP
SRQLHZDĝZV]\VWNLHSDUDPHWU\
ZPHWRG]LHVÈUR]G]LHODQH
SU]HFLQNDPL :QRWDFMLOLWHUDïXRELHNWX
ZïDĂFLZRĂFLLLFKZDUWRĂFLVÈ
UR]G]LHODQHGZXNURSNLHP
JQUERY
JAK POBRAĆ WŁAŚCIWOŚĆ CSS?
3RQLĝV]HSROHFHQLHSRZRGXMHSU]HFKRZ\ZDQLHZ]PLHQQHMRQD]ZLH
backgroundColorNRORUXWïDSLHUZV]HJRHOHPHQWXOLVW\.RORU
]RVWDQLH]ZUöFRQ\MDNRZDUWRĂÊ5*%
var backgroundColor = $(’li’).css(’background-color’);
JAK USTAWIĆ WŁAŚCIWOŚĆ CSS?
3RQLĝV]HSROHFHQLHSRZRGXMHXVWDZLHQLHNRORUXWïDGODZV]\VWNLFK
HOHPHQWöZOLVW\=ZUöÊXZDJÚĝHZïDĂFLZRĂÊ&66LMHMZDUWRĂÊVÈ
UR]G]LHORQHSU]HFLQNLHP]DPLDVWGZXNURSNLHP
$(’li’).css(’background-color’, ’#272727’);
3RGF]DVSUDF\]Z\PLDUDPLSRGDZDQ\PLZSLNVHODFKLVWQLHMH
PRĝOLZRĂÊ]ZLÚNV]DQLDL]PQLHMV]DQLDZDUWRĂFL]DSRPRFÈRSHUDWRrów += i -=
$(’li’).css(’padding-left’, ’+=20’);
USTAWIENIE WIELU WŁAŚCIWOŚCI
,VWQLHMHPRĝOLZRĂÊXVWDZLHQLDZLHOXZïDĂFLZRĂFL]DSRPRFÈnotacji
OLWHUDïXRELHNWX
ZïDĂFLZRĂFLLZDUWRĂFLVÈXPLHV]F]RQHZQDZLDVLHNODPURZ\P
GRRGG]LHOHQLDQD]Z\ZïDĂFLZRĂFLRGMHMZDUWRĂFLXĝ\ZDQ\MHVW
GZXNURSHN
SRV]F]HJöOQHSDU\VÈUR]G]LHORQHSU]HFLQNDPL SRRVWDWQLHMSDU]H
QLHXPLHV]F]DVLÚSU]HFLQND •
•
•
3RQLĝV]HSROHFHQLHSRZRGXMHXVWDZLHQLHNRORUXWïDLURG]LQ\F]FLRQNL
GODZV]\VWNLFKHOHPHQWöZOLVW\
$(’li’).css({
’background-color’: ’#272727’,
’font-family’: ’Courier’
});
ZMIANA REGUŁ CSS
:SRQLĝV]\PSU]\NïDG]LH
SRND]DQRMDNPRĝQD]DVWRVRZDÊPHWRGÚ.css()GRZ\ERUX
RUD]XDNWXDOQLHQLDZïDĂFLZRĂFL
&66HOHPHQWöZ
6NU\SWVSUDZG]DMDNLMHVWNRORU
WïDSLHUZV]HJRHOHPHQWXOLVW\SR
ZF]\WDQLXVWURQ\DQDVWÚSQLH
SRGOLVWÈZ\ĂZLHWODRGSRZLHGQL
NRPXQLNDW
.ROHMQ\PNURNLHPMHVWXDNWXDOQLHQLHNLONXZïDĂFLZRĂFL&66
ZHZV]\VWNLFKHOHPHQWDFK
OLVW\:W\PFHOXXĝ\ZDQDMHVW
PHWRGD.css()ZUD]]QRWDFMÈ
OLWHUDïXRELHNWX
c07/js/css.js
JAVASCRIPT
1
2
3
$(function() {
var backgroundColor = $(’li’).css(’background-color’);
$(’ul’).append(’<p>Kolor to: ’ + backgroundColor + ’</p>’);
$(’li’).css({
’background-color’: ’#c5a996’,
’border’: ’1px solid #fff’,
’color’: ’#000’,
’font-family’: ’Georgia’,
’padding-left’: ’+=75’
});
});
1. :W\PZLHUV]XNRGX
WZRU]RQDMHVW]PLHQQD
backgroundColor:\ELHUDQHVÈZV]\VWNLHHOHPHQW\
<li>DPHWRGD.css()
]ZUDFDZDUWRĂÊZïDĂFLZRĂFL
background-color pierwszego
]QLFK
WYNIK
2. .RORUWïDSLHUZV]HJR
HOHPHQWXOLVW\MHVWZ\ĂZLHWODQ\
QDVWURQLH]DSRPRFÈPHWRG\
.append()NWöUÈSR]QDïHĂ
ZSRGUR]G]LDOHķ:VWDZLDQLH
HOHPHQWXĵ7XWDM]RVWDïDXĝ\WD
ZFHOXGRGDQLD]DZDUWRĂFL]D
HOHPHQWHP<ul>
3. 6HOHNWRUZ\ELHUDZV]\VWNLH
HOHPHQW\<li>DQDVWÚSQLH
PHWRGD.css() uaktualnia
MHGQRF]HĂQLHZLHOHZïDĂFLZRĂFL
NRORUWïD]RVWDMH]PLHQLRQ\
QDEUÈ]RZ\
GRGDQH]RVWDMHELDïH
REUDPRZDQLHOLVW\
NRORUWHNVWX]RVWDMH]PLHQLRQ\QDF]DUQ\
URG]LQDF]FLRQNL]RVWDMH
]PLHQLRQDQD*HRUJLD
GRGDWNRZHGRSHïQLHQLH]RVWDMHGRGDQHSROHZHMVWURQLH
•
•
•
•
•
8ZDJD=QDF]QLHOHSV]\P
UR]ZLÈ]DQLHPMHVW]PLDQD
ZDUWRĂFLDWU\EXWXclass ZFHOX
Z\ZRïDQLDQRZ\FKUHJXï&66
ZDUNXV]XVW\OöZ ]DPLDVW
]PLDQ\ZïDĂFLZRĂFL&66
]SR]LRPXSOLNX-DYD6FULSW
JQUERY 329
PRACA Z POSZCZEGÓLNYMI
ELEMENTAMI
W DOPASOWANYM ZBIORZE
']LÚNLPHWRG]LH.each()M4XHU\SR]ZDODQDRGWZRU]HQLHIXQNFMRQDOQRĂFL
SÚWOLSU]HSURZDG]DMÈFHMLWHUDFMÚSU]H]Z\EUDQHHOHPHQW\
3R]QDïHĂMXĝNLONDPHWRGM4XHU\
SU]H]QDF]RQ\FKGRXDNWXDOQLDQLDZV]\VWNLFKHOHPHQWöZ
ZGRSDVRZDQ\P]ELRU]HEH]
NRQLHF]QRĂFLVWRVRZDQLDSÚWOL
=GDU]DMÈVLÚMHGQDNV\WXDFMH
JG\WU]HEDSU]HSURZDG]LÊ
LWHUDFMÚSU]H]Z\EUDQHHOHPHQW\1DMF]ÚĂFLHMEÚG]LHWR
• SREUDQLHLQIRUPDFML]NDĝGH•
JRHOHPHQWXZGRSDVRZDQ\P]ELRU]H
SU]HSURZDG]HQLHserii akcji na
SRV]F]HJöOQ\FKHOHPHQWDFK
0HWRGD.each()VïXĝ\GR
Z\PLHQLRQ\FKFHOöZ3DUDPHWUHPPHWRG\.each() jest
IXQNFMD0RĝHWRE\ÊIXQNFMD
DQRQLPRZD MDNWXWDMSRND]DQR OXEQD]ZDQD
.each()
$this lub $(this)
Pozwala na wykonanie
SROHFHQLD SROHFHñ QDNDĝG\P
HOHPHQFLHZGRSDVRZDQ\P
]ELRU]H]ZUöFRQ\PSU]H]
VHOHNWRU']LDïDQLHPHWRG\
SU]\SRPLQDSÚWOÚZ-DYD6FULSW
*G\PHWRGD.each() przeproZDG]DLWHUDFMÚSU]H]Z\EUDQH
HOHPHQW\GRVWÚSGRELHĝÈFHJR
HOHPHQWXPRĝQDX]\VNDÊ]D
SRPRFÈVïRZDNOXF]RZHJR
this
0HWRGDSRELHUDW\ONRMHGHQ
SDUDPHWUIXQNFMÚ]DZLHUDMÈFÈ
SROHFHQLDNWöUHPDMÈE\ÊZ\NRQDQHZNDĝG\PHOHPHQFLH
%DUG]RF]ÚVWRPRĝQDVLÚ
UöZQLHĝVSRWNDÊ]NRQVWUXNFMÈ
$(this)3RZRGXMHRQDXĝ\FLH
VïRZDNOXF]RZHJRthis w celu
utworzenia nowej kolekcji
M4XHU\]DZLHUDMÈFHMELHĝÈF\
HOHPHQW']LÚNLWHPXPHWRG\
M4XHU\PRJÈE\ÊZ\NRU]\VW\ZDQHQDHOHPHQFLHELHĝÈF\P
1
2
$(’li’).each(function() {
var ids = this.id;
3
$(this).append(’ <em class=”order”>’ + ids + ’</em>’);
});
1. =ELöUZ\EUDQ\FKHOHPHQWöZ]DZLHUDZV]\VWNLHHOHPHQW\<li>
2. 0HWRGD.each()SRZRGXMH]DVWRVRZDQLHWHJRVDPHJRNRGXGR
ZV]\VWNLFKZ\EUDQ\FKHOHPHQWöZ
3. )XQNFMDDQRQLPRZDMHVWZ\NRQ\ZDQDGODNDĝGHJRHOHPHQWX
]QDMGXMÈFHJRVLÚQDOLĂFLH
3RQLHZDĝthisRGQRVLVLÚGRZÚ]ïDELHĝÈFHJR
WRMHĝHOLFKFHV]X]\VNDÊGRVWÚSGRZïDĂFLZRĂFL
WHJRZÚ]ïDQDSU]\NïDGDWU\EXWöZid lub class
HOHPHQWXOHSV]\PUR]ZLÈ]DQLHPMHVWXĝ\FLH
]Z\NïHJRNRGX-DYD6FULSW
ids = this.id;
330 JQUERY
7R]QDF]QLHHIHNW\ZQLHMV]HQLĝSROHFHQLH
ids = $(this).attr(’id’);NWöUHR]QDF]D
zastosowanie interpretera w celu utworzenia
QRZHJRRELHNWXM4XHU\DQDVWÚSQLHZ\NRU]\VWDQLH
PHWRG\DE\X]\VNDÊGRVWÚSGRZïDĂFLZRĂFL
UŻYCIE .EACH()
3RQLĝV]\SU]\NïDGSRZRGXMH
utworzenie obiektu jQuery zaZLHUDMÈFHJRZV]\VWNLHHOHPHQW\
OLVW\QDVWURQLH
1DVWÚSQLHPHWRGD.each() jest
Z\NRU]\VW\ZDQDGRSU]HSURZDG]HQLDLWHUDFMLSU]H]HOHPHQW\
listy i wykonanie funkcji
DQRQLPRZHMGODNDĝGHJR]QLFK
)XQNFMDDQRQLPRZDSRELHUD
ZDUWRĂÊDWU\EXWXidHOHPHQWX
<li>LXPLHV]F]DMÈRERNWHNVWX
HOHPHQWX
c07/js/each.js
JAVASCRIPT
1
2
3
$(function() {
$(’li’).each(function() {
var ids = this.id;
$(this).append(’ <span class=”order”>’ + ids + ’</span>’);
});
});
1. 6HOHNWRUWZRU]\RELHNWM4XHU\
]DZLHUDMÈF\ZV]\VWNLHHOHPHQW\
<li>0HWRGD.each()
Z\ZRïXMHIXQNFMÚDQRQLPRZÈ
GODNDĝGHJRHOHPHQWXOLVW\
]QDMGXMÈFHJRVLÚZGRSDVRZDQ\P]ELRU]H
WYNIK
2. 6ïRZRNOXF]RZHthisRGZRïXMHVLÚGRZÚ]ïDELHĝÈFHJR
HOHPHQWXZSÚWOL-HVWXĝ\ZDQH
ZFHOXX]\VNDQLDGRVWÚSXGR
ZDUWRĂFLDWU\EXWXidELHĝÈFHJR
HOHPHQWXNWöU\MHVWSU]HFKRZ\ZDQ\Z]PLHQQHMRQD]ZLHids
3. .RQVWUXNFMD$(this) jest
Z\NRU]\VW\ZDQDGRXWZRU]HQLD
RELHNWXM4XHU\]DZLHUDMÈFHJR
ELHĝÈF\HOHPHQWZSÚWOL
3RVLDGDQLHHOHPHQWXZRELHNFLH
jQuery pozwala na stosowanie
PHWRGM4XHU\ZW\PHOHPHQFLH
:RPDZLDQ\PSU]\NïDG]LH
PHWRGD.append()MHVWXĝ\ZDQDZFHOXGRGDQLDQRZHJR
HOHPHQWX<span>ZELHĝÈF\P
HOHPHQFLHOLVW\
=DZDUWRĂFLÈWHJRHOHPHQWXMHVW
ZDUWRĂÊMHJRDWU\EXWXidNWöUD
]RVWDïDSREUDQDZNURNX
JQUERY 331
METODY ZDARZEŃ
0HWRGD.on()MHVWXĝ\ZDQDGRREVïXJLZV]\VWNLFK]GDU]Hñ
:WOHELEOLRWHNDM4XHU\]DMPXMHVLÚREVïXJÈZV]\VWNLFKZ\PLHQLRQ\FK
ZF]HĂQLHMQLH]JRGQRĂFLPLÚG]\SU]HJOÈGDUNDPLLQWHUQHWRZ\PL
:\NRU]\VWDQLHPHWRG\.on()
QLHUöĝQLVLÚQLF]\PRGXĝ\FLD
MDNLHMNROZLHNLQQHMPHWRG\
M4XHU\
• =DVWRVXMVHOHNWRUGRZ\ERUX
•
HOHPHQWöZ
=DVWRVXMPHWRGÚ.on()
ZFHOXZVND]DQLD]GDU]HQLD
QDNWöUHPD]DUHDJRZDÊ
NRG'RNDĝGHJRHOHPHQWX
ZGRSDVRZDQ\P]ELRU]H
]RVWDMHGRGDQ\REVHUZDWRU
]GDU]Hñ
0HWRGD.on()]RVWDïDZSURZDG]RQDZZHUVMLELEOLRWHNL
M4XHU\:F]HĂQLHMELEOLRWHND
M4XHU\Z\NRU]\VW\ZDïDRGG]LHOQHPHWRG\GODSRV]F]HJöOQ\FK
]GDU]HñQDSU]\NïDG.click()
i .focus()=LFKXĝ\FLHP
PRĝHV]VLÚVSRWNDÊZVWDUV]\P
NRG]LHDOHREHFQLHSRZLQLHQHĂ
VWRVRZDÊPHWRGÚ.on()
1
2
3
$(’li’).on(’click’, function() {
$(this).addClass(’complete’);
});
4
1. :\EUDQH]RVWDï\ZV]\VWNLHHOHPHQW\<li>
2. 0HWRGD.on()MHVWXĝ\ZDQDGRREVïXJL]GDU]HñLZ\PDJDSRGDQLD
GZöFKSDUDPHWUöZ
3. 3LHUZV]\SDUDPHWUWR]GDU]HQLHQDNWöUHPD]DUHDJRZDÊNRG
:RPDZLDQ\PSU]\NïDG]LHWR]GDU]HQLHclick
4. 'UXJLSDUDPHWUWRNRGNWöU\PD]RVWDÊZ\NRQDQ\SRZ\VWÈSLHQLX
ZVND]DQHJR]GDU]HQLDZMDNLPNROZLHNHOHPHQFLHZGRSDVRZDQ\P
]ELRU]H0RĝHWRE\ÊIXQNFMDQD]ZDQDOXEDQRQLPRZD3RZ\ĝHM
ZLG]LP\IXQNFMÚDQRQLPRZÈNWöUDGRGDMHZDUWRĂÊcompleteGR
atrybutu class
%DUG]LHM]DDZDQVRZDQHRSFMHPHWRG\.on()]QDMG]LHV]ZSRGUR]G]LDOHķ3DUDPHWU\GRGDWNRZHGODSURFHGXUREVïXJL]GDU]Hñĵ
ZDARZENIA JQUERY
3RQLĝHMZ\PLHQLRQRQDMSRSXODUQLHMV]H]GDU]HQLDREVïXJLZDQHSU]H]
PHWRGÚ.on()%LEOLRWHNDM4XHU\RIHUXMHWDNĝHSHZQHGRGDWNL
XïDWZLDMÈFHSUDFÚSURJUDPLVWRP3U]\NïDGHPPRĝHE\Ê]GDU]HQLH
readyZ\ZRï\ZDQHJG\VWURQDMHVWJRWRZDGRSUDF\]QLÈ'RGDWNL
]RVWDï\R]QDF]RQHJZLD]GNÈ * ,QWHUIHMVXĝ\WNRZQLNDĽfocusblurchange
.ODZLDWXUDĽinputNH\GRZQkeyupkeypress
0\V]ĽclickdblclickmouseupPRXVHGRZQmouseover
mousemovemouseouthover*
)RUPXODU]VLHFLRZ\Ľsubmitselectchange
'RNXPHQWĽready*loadunload*
3U]HJOÈGDUNDLQWHUQHWRZDĽerrorUHVL]Hscroll
332 JQUERY
ZDARZENIA
:SRQLĝV]\PSU]\NïDG]LH
XPLHV]F]HQLHP\V]\QDG
HOHPHQWHPOLVW\SRZRGXMH
ĝHZDUWRĂÊDWU\EXWXid zostaje
Z\ĂZLHWORQDRERNHOHPHQWX
7RVDPRG]LHMHVLÚZWHG\JG\
Xĝ\WNRZQLNNOLNQLHHOHPHQWOLVW\
SRQLHZDĝ]GDU]HQLHmouseover
QLHG]LDïDZXU]ÈG]HQLDFK
Z\SRVDĝRQ\FKZHNUDQ\
GRW\NRZH =GDU]HQLHmouseoutSRZRGXMH
XVXQLÚFLHW\FKGRGDWNRZ\FK
LQIRUPDFML]HVWURQ\DE\
XQLHPRĝOLZLDÊGRGDZDQLH
]DZDUWRĂFLZQLHVNRñF]RQRĂÊ
c07/js/events.js
JAVASCRIPT
1
$(function() {
var ids = ’’;
var $listItems = $(’li’);
2
$listItems.on(’mouseover click’, function() {
ids = this.id;
$listItems.children(’span’).remove();
$(this).append(’ <span class=”priority”>’ + ids + ’</span>’);
});
3
$listItems.on(’mouseout’, function() {
$(this).children(’span’).remove();
});
});
1. 6HOHNWRUZ\V]XNXMH
ZV]\VWNLHHOHPHQW\OLVW\QD
VWURQLH3RQLHZDĝRWU]\PDQ\
RELHNWM4XHU\EÚG]LHXĝ\ZDQ\
ZLÚFHMQLĝW\ONRMHGHQUD]WR
SU]HFKRZXMHP\JRZ]PLHQQHM
o nazwie $listItems
WYNIK
2. 0HWRGD.on()SRZRGXMH
XWZRU]HQLHREVHUZDWRUD]GDU]HñRF]HNXMÈFHJRDĝXĝ\WNRZQLNXPLHĂFLNXUVRUP\V]\QDG
HOHPHQWHPOLVW\OXEJRNOLNQLH
:öZF]DVMHVWZ\ZRï\ZDQD
IXQNFMDDQRQLPRZD
=ZUöÊXZDJÚĝHZWHMVDPHM
parze znaków cytowania
SRGDQRGZD]GDU]HQLDUR]G]LHORQHVSDFMÈ
']LDïDQLHIXQNFMLDQRQLPRZHMSU]HGVWDZLDVLÚ
QDVWÚSXMÈFR
SREUDQLHZDUWRĂFLDWU\EXWXidGDQHJRHOHPHQWX
XVXQLÚFLHHOHPHQWöZ<span>]HZV]\VWNLFK
HOHPHQWöZOLVW\
GRGDQLHZDUWRĂFLDWU\EXWXidGRHOHPHQWXOLVW\
ZQRZ\PHOHPHQFLH<span>
•
•
•
3. 0HWRGD.mouseout()SRZRGXMHZ\ZRïDQLH
RSHUDFMLXVXQLÚFLDZV]\VWNLFKHOHPHQWöZSRWRPQ\FKHOHPHQWX<span>DE\XQLNQÈÊGRGDZDQLD
QRZ\FKZDUWRĂFLZQLHVNRñF]RQRĂÊ
JQUERY 333
OBIEKT EVENT
.DĝGDIXQNFMDREVïXJL]GDU]HñRWU]\PXMHRELHNWevent
=DZLHUDRQPHWRG\LZïDĂFLZRĂFLSRZLÈ]DQH]H]GDU]HQLHP
NWöUHZ\VWÈSLïR
1
3RGREQLHMDNZSU]\SDGNX
obiektu eventZ-DYD6FULSW
obiekt jQuery eventSRVLDGD
ZïDĂFLZRĂFLLPHWRG\GRVWDUF]DMÈFHLQIRUPDFMHR]GDU]HQLX
NWöUHZ\VWÈSLïR
-HĝHOLVSRMU]\V]QDIXQNFMÚ
Z\ZRï\ZDQÈSRZ\VWÈSLHQLX
]GDU]HQLDRELHNWevent jest wyPLHQLRQ\ZQDZLDVLH3RGREQLH
MDNNDĝG\LQQ\SDUDPHWUQD]ZD
WDMHVWSöěQLHMZ\NRU]\VW\ZDQD
ZIXQNFMLZFHOXRGZRïDQLDVLÚ
GRRELHNWXevent
:SU]\NïDG]LHSRSUDZHMVWURQLH
Xĝ\WDMHVWOLWHUDe jako skrót
GODRELHNWXevent-HGQDNMDN
ZVSRPQLDQRZSRSU]HGQLP
UR]G]LDOHZDUWRSDPLÚWDÊ
ĝHWHQVNUöWMHVWEDUG]R
F]ÚVWRZ\NRU]\VW\ZDQ\WDNĝH
ZRGQLHVLHQLXGRRELHNWXerror
334 JQUERY
$(’li’).on(’click’ function(e) {
eventType = e.type;
});
2 3
1. 1DGDQLHRELHNWRZLeventQD]Z\SDUDPHWUX
2. 8ĝ\FLHWHMQD]Z\ZIXQNFMLZFHOXRGZRïDQLDVLÚGRRELHNWX
event
3. 8]\VNDQLHGRVWÚSXGRPHWRGLZïDĂFLZRĂFLRELHNWX]DSRPRFÈ
QRWDFML]NURSNÈ RSHUDWRUHOHPHQWXVNïDGRZHJR :’$¥&,:2¥m
23,6
type
7\S]GDU]HQLD QDSU]\NïDGclickmouseover ZKLFK
.OLNQLÚW\SU]\FLVNOXEQDFLĂQLÚW\NODZLV]
data
/LWHUDïRELHNWX]DZLHUDMÈF\LQIRUPDFMHGRGDWNRZH
SU]HND]\ZDQHIXQNFMLJG\Z\VWÈSLïR]GDU]HQLH
SU]\NïDGSRND]DQRQDVWURQLHSRSUDZHM target
(OHPHQWPRGHOX'20NWöU\]DLQLFMRZDï
]GDU]HQLH
pageX
3RïRĝHQLHP\V]\RGOHZHMNUDZÚG]LYLHZSRUWX
pageY
3RïRĝHQLHP\V]\RGJöUQHMNUDZÚG]LYLHZSRUWX
timeStamp
/LF]EDPLOLVHNXQGNWöUHXSï\QÚï\RGVW\F]QLD
U WDN]ZDQ\F]DVV\VWHPX8QL[ GRFKZLOL
Z\VWÈSLHQLD]GDU]HQLD1LHG]LDïDZSU]HJOÈGDUFH
)LUHIR[
0(72'$
23,6
.preventDefault()
8QLHPRĝOLZLD]DFKRZDQLHGRP\ĂOQH QD
SU]\NïDGZ\VïDQLHIRUPXODU]DVLHFLRZHJR .stopPropagation()
=DWU]\PXMHSURSDJRZDQLH]GDU]HñGRHOHPHQWöZ
QDGU]ÚGQ\FK
UŻYCIE OBIEKTU EVENT
:SRQLĝV]\PSU]\NïDG]LHJG\
Xĝ\WNRZQLNNOLNQLHHOHPHQWOLVW\
GDWDZ\VWÈSLHQLD]GDU]HQLDRUD]
MHJRURG]DM]RVWDMÈZ\ĂZLHWORQH
SRSUDZHMVWURQLHGDQHJR
HOHPHQWX
$E\X]\VNDÊWHQHIHNW
Z\NRU]\VWDQRGZLHZïDĂFLZRĂFL
obiektu eventtimeStamp
i type3LHUZV]DSRGDMH
GDWÚZ\VWÈSLHQLD]GDU]HQLD
QDWRPLDVWGUXJDĽMHJRURG]DM
c07/js/event-object.js
JAVASCRIPT
1
2
3
4
$E\XQLHPRĝOLZLÊ]DĂPLHFDQLH
HOHPHQWXOLVW\ZLHORPDZSLVDPL
GDW\NOLNQLÚFLHHOHPHQWXOLVW\
SRZRGXMHXVXQLÚFLH]QLHM
ZV]\VWNLFKHOHPHQWöZ<span>
$(function() {
$(’li’).on(’click’ function(e) {
$(’li span’).remove();
YDUGDWH QHZ'DWH date.setTime(e.timeStamp);
var clicked = date.toDateString();
$(this).append(’<span class=”date”>’ + clicked + ’ ’ + e.type + ’</span>’);
});
});
1. :V]HONLHHOHPHQW\<span>
LVWQLHMÈFHZHZQÈWU]HOHPHQWöZ
<li>EÚGÈXVXQLÚWH
WYNIK
2. 7ZRU]RQ\MHVWQRZ\RELHNW
DateĽSU]HFKRZXMHRQGDWÚ
Z\VWÈSLHQLD]GDU]HQLD
3. 'DWDZ\VWÈSLHQLD]GDU]HQLD
MHVWNRQZHUWRZDQDQDSRVWDÊ
FLÈJXWHNVWRZHJRDE\PRJïD
E\ÊRGF]\WDQD
4. 'DWDNOLNQLÚFLDHOHPHQWXOLVW\
RUD]URG]DM]GDU]HQLD]RVWDQÈ
Z\ĂZLHWORQHSRSUDZHMVWURQLH
HOHPHQWX
=ZUöÊXZDJÚQDWRĝHZïDĂFLZRĂÊtimeStampQLHG]LDïD
ZSU]HJOÈGDUFH)LUHIR[
JQUERY 335
PARAMETRY DODATKOWE DLA
PROCEDUR OBSŁUGI ZDARZEŃ
0HWRGD.on()PDGZLHRSFMRQDOQHZïDĂFLZRĂFLSR]ZDODMÈFHQDğOWURZDQLH
SRF]ÈWNRZRZ\EUDQHJRZM4XHU\]ELRUXHOHPHQWöZDE\]DUHDJRZDÊW\ONR
ZSRG]ELRU]HHOHPHQWöZRUD]QDSU]HND]\ZDQLH]DSRPRFÈQRWDFMLOLWHUDïX
RELHNWXLQIRUPDFMLGRGDWNRZ\FKGRSURFHGXU\REVïXJL]GDU]Hñ
3RQLĝHMPRĝHV]]REDF]\ÊGZLH
ZVSRPQLDQHZïDĂFLZRĂFL
GRGDWNRZHNWöUHPRJÈE\Ê
Xĝ\ZDQHZPHWRG]LH.on()
1DZLDVNZDGUDWRZ\ZQD]ZLH
PHWRG\R]QDF]DĝHSDUDPHWU
MHVWRSFMRQDOQ\
3RPLQLÚFLHSDUDPHWUXSRGDQHJR
ZQDZLDVLHNZDGUDWRZ\PQLH
XQLHPRĝOLZLDG]LDïDQLDPHWRG\
1. -HVWWR]GDU]HQLH OXEVÈ
WR]GDU]HQLD QDNWöUHEÚG]LH
UHDJRZDïNRG-HĝHOLNRGPD
UHDJRZDÊQDZLHOH]GDU]Hñ
WRPRĝQDSRGDÊUR]G]LHORQÈ
VSDFMDPLOLVWÚQD]Z]GDU]Hñ
QDSU]\NïDG’focus click’
R]QDF]DUHDNFMÚQD]GDU]HQLD
focus i click
2. -HĝHOLNRGPDUHDJRZDÊ
QD]GDU]HQLHZ\VWÚSXMÈFH
tylko w podzbiorzeHOHPHQWöZ
SRF]ÈWNRZRZ\EUDQ\FKSU]H]
M4XHU\WRPRĝQDSRGDÊGUXJL
VHOHNWRUğOWUXMÈF\HOHPHQW\
3. )XQNFMLZ\ZRï\ZDQHM
SRZ\VWÈSLHQLX]GDU]HQLD
PRĝQDSU]HND]DÊLQIRUPDFMH
GRGDWNRZH,QIRUPDFMHWHVÈ
SU]HND]\ZDQHZUD]]RELHNWHP
event e .on(zdarzenia[, selektor][, dane], function(e));
1
4. 7RMHVWIXQNFMDNWöUDSRZLQQDE\ÊZ\NRQDQDJG\ZVND]DQH]GDU]HQLHZ\VWÈSLZMHGQ\P
]HOHPHQWöZZGRSDVRZDQ\P
]ELRU]H
336 JQUERY
2
3
5. )XQNFMDMHVWDXWRPDW\F]QLH
przekazywana obiektowi event
MDNRSDUDPHWUFRPRJïHĂ
]REDF]\ÊQDGZöFKSRSU]HGQLFKVWURQDFK 3DPLÚWDMĽMHĂOL
Xĝ\ZDV]WHMIXQNFMLPXVLV]
SRGDÊMHMQD]ZÚZQDZLDVLH 4
5
:VWDUV]\FKVNU\SWDFKM4XHU\
PRĝQDVSRWNDÊVLÚ]Z\NRU]\VWDQLHPPHWRG\.delegate()
ZFHOXGHOHJRZDQLD]GDU]Hñ
-HGQDNRGZHUVMLELEOLRWHNL
M4XHU\SUHIHURZDQ\PSRGHMĂFLHPZGHOHJRZDQLX]GDU]Hñ
PHWRGDMHVW.on()
DELEGACJA ZDARZEŃ
:SRQLĝV]\PSU]\NïDG]LH
SURFHGXUDREVïXJL]GDU]Hñ
EÚG]LHXUXFKRPLRQDJG\
Xĝ\WNRZQLNNOLNQLHHOHPHQWOLVW\
EÈGěXPLHĂFLQDGQLPNXUVRU
P\V]\]Z\MÈWNLHP ostatniego
HOHPHQWXOLVW\
:\ĂZLHWORQH]RVWDQÈ]DZDUWRĂÊ
HOHPHQWXZ\NRU]\VWDQHJRSU]H]
Xĝ\WNRZQLNDNRPXQLNDWVWDQX
]DSRPRFÈZïDĂFLZRĂFLdata RUD]URG]DM]GDU]HQLD
,QIRUPDFMHSU]HND]\ZDQHZH
ZïDĂFLZRĂFLdataVÈWXWDMRSDUWHQDQRWDFMLOLWHUDïXRELHNWX
FRSR]ZDODQDREVïXJÚZLHOX
ZïDĂFLZRĂFL c07/js/event-delegation.js
JAVASCRIPT
$(function() {
var listItem, itemStatus, eventType;
1
2
3
4
$(’ul’).on(
’click mouseover’,
’:not(#four)’,
{status: ’important’},
function(e) {
listItem = ’Element: ’ + e.target.textContent + ’<br />’;
itemStatus = ’Stan: ’ + e.data.status + ’<br />’;
HYHQW7\SH ij=GDU]HQLHijHW\SH
$(’#notes’).html(listItem + itemStatus + eventType);
}
);
});
WYNIK
1. 3URFHGXUDREVïXJL]GDU]HñEÚG]LHZ\ZRï\ZDQD
GOD]GDU]Hñclick i mouseover
2. 3DUDPHWUselector RGğOWURZXMHHOHPHQW
którego atrybut idPDZDUWRĂÊfour
3. 'RGDWNRZHGDQHNWöUHEÚGÈZ\NRU]\VW\ZDQH
SU]H]SURFHGXUÚREVïXJLVÈSU]HND]\ZDQHMDNR
OLWHUDïRELHNWX
:RPDZLDQ\PSU]\NïDG]LHLVWQLHMHGRGDWNRZ\
HOHPHQW+70/SU]H]QDF]RQ\GRSU]HFKRZ\ZDQLD
HOHPHQWöZZ\ĂZLHWODQ\FKSRGOLVWÈ
4. 3URFHGXUDREVïXJL]GDU]HñXĝ\ZDRELHNWX
eventGRZ\ĂZLHWOHQLD]DZDUWRĂFLHOHPHQWX
Z\NRU]\VW\ZDQHJRSU]H]Xĝ\WNRZQLNDGDQ\FK
SU]HND]DQ\FKIXQNFMLRUD]URG]DMX]GDU]HQLD
:\PLHQLRQHLQIRUPDFMHVÈZ\ĂZLHWODQHSRGOLVWÈ
ZHOHPHQFLHRELDï\PNRORU]HWïD
JQUERY 337
EFEKTY
.LHG\Xĝ\ZDV]M4XHU\PRĝHV]UR]EXGRZDÊVWURQÚLQWHUQHWRZÈRUöĝQHHIHNW\
1DWHMVWURQLHZ\PLHQLRQRQLHNWöUHHIHNW\M4XHU\SR]ZDODMÈFH
QDZ\ĂZLHWODQLHOXEXNU\ZDQLH
HOHPHQWöZLLFK]DZDUWRĂFL
,VWQLHMHPRĝOLZRĂÊDQLPDFML
SRMDZLDQLDVLÚL]QLNDQLD
DWDNĝHSU]HPLHV]F]DQLDVLÚ
HOHPHQWöZ
.LHG\HOHPHQWE\ïSRSU]HGQLR
XNU\W\MHJRSRMDZLHQLHVLÚOXE
ķZMHFKDQLHĵZZLGRNXPRĝH
VSRZRGRZDÊĝHLQQHHOHPHQW\
QDVWURQLHSU]HVXQÈVLÚDE\
]URELÊGODQLHJRPLHMVFH
=NROHLNLHG\HOHPHQWMHVW
XNU\ZDQ\]QLNDOXEķZ\MHĝGĝDĵ
]ZLGRNXLQQHHOHPHQW\QD
VWURQLHPRJÈSU]HVXQÈÊVLÚQD
PLHMVFH]DMPRZDQHZF]HĂQLHM
SU]H]QLHJR
0HWRG\NWöUHSRVLDGDMÈVïRZR
toggleZQD]ZLHVSUDZG]DMÈ
ELHĝÈF\VWDQHOHPHQWX ZLGRF]Q\OXEXNU\W\ DQDVWÚSQLH
SRZRGXMÈSU]HMĂFLHGRSU]HFLZQHJRVWDQX
,QWHUHVXMÈFDMHVWPRĝOLZRĂÊ
WZRU]HQLDDQLPDFML]DSRPRFÈ
&66&]ÚVWRVÈRQHV]\EV]H
QLĝLFKRGSRZLHGQLNLZM4XHU\
DOHG]LDïDMÈW\ONRZQDMQRZV]\FKZHUVMDFKSU]HJOÈGDUHN
JQUERY
PODSTAWOWE EFEKTY
0(72'$
23,6
VKRZ
:\ĂZLHWODZ\EUDQHHOHPHQW\
.hide()
8NU\ZDZ\EUDQHHOHPHQW\
.toggle()
3U]HïÈF]DPLÚG]\Z\ĂZLHWOHQLHPLXNU\FLHPZ\EUDQ\FK
HOHPHQWöZ
EFEKTY POJAWIANIA SIĘ
0(72'$
23,6
.fadeIn()
3RZROLUR]MDĂQLDZ\EUDQHHOHPHQW\NWöUHQDNRñFX
VWDMÈVLÚFDïNRZLFLHZLGRF]QH
.fadeOut()
3RZROLSU]\FLHPQLDZ\EUDQHHOHPHQW\NWöUHQDNRñFX
VWDMÈVLÚFDïNRZLFLHSU]H]URF]\VWH
.fadeTo()
=PLHQLDSU]H]URF]\VWRĂÊZ\EUDQ\FKHOHPHQWöZ
.fadeToggle()
8NU\ZDOXEZ\ĂZLHWODZ\EUDQHHOHPHQW\SU]H]]PLDQÚ
LFKSU]H]URF]\VWRĂFL SU]HFLZLHñVWZRLFKDNWXDOQHJR
VWDQX EFEKTY „WJEŻDŻANIA”
0(72'$
23,6
.slideUp()
:\ĂZLHWODZ\EUDQHHOHPHQW\]HIHNWHPZĂOL]JX
VOLGH'RZQ
8NU\ZDZ\EUDQHHOHPHQW\]HIHNWHPZĂOL]JX
.slideToggle()
:\ĂZLHWODOXEXNU\ZDZ\EUDQHHOHPHQW\]HIHNWHP
ZĂOL]JX ZNLHUXQNXSU]HFLZQ\PGRLFKDNWXDOQHJR
VWDQX WŁASNE EFEKTY
0(72'$
23,6
.delay()
2SöěQLDZ\NRQDQLHNROHMQ\FKHOHPHQWöZZNROHMFH
.stop()
=DWU]\PXMHDQLPDFMÚMHĂOLMHVWDNWXDOQLHRGWZDU]DQD
.animate()
7ZRU]\ZïDVQHDQLPDFMH SRGUR]G]LDïķ$QLPDFMD
ZïDĂFLZRĂFL&ĵ PODSTAWOWE EFEKTY
:SRQLĝV]\PSU]\NïDG]LH
OLVWDHOHPHQWöZSRMDZLDVLÚ
ZZLGRNXSRGF]DVZF]\W\ZDQLD
VWURQ\.OLNQLÚFLHHOHPHQWX
SRZRGXMHMHJR]QLNQLÚFLH
:U]HF]\ZLVWRĂFLHOHPHQW\
VÈZF]\W\ZDQHZ]Z\Nï\
VSRVöEZUD]]SR]RVWDïÈF]ÚĂFLÈ
VWURQ\DQDVWÚSQLHQDW\FKPLDVW
XNU\ZDQH]DSRPRFÈNRGX
-DYD6FULSW
c07/js/effects.js
JAVASCRIPT
1
2
3
3RXNU\FLXSRZROLSRMDZLDMÈ
VLÚZZLGRNX:WHQVSRVöE
SR]RVWDQÈZLGRF]QHQDZHW
MHĂOLZSU]HJOÈGDUFHZ\ïÈF]RQR
REVïXJÚ-DYD6FULSW
$(function() {
ijKij KLGH VOLGH'RZQ var $li = $(’li’);
$li.hide().each(function(index) {
$(this).delay(700 * index).fadeIn(700);
});
$li.on(’click’, function() {
$(this).fadeOut(700);
});
});
1. :SLHUZV]\PSROHFHQLX
VHOHNWRUZ\ELHUDHOHPHQW<h2>
LXNU\ZDJRDE\QDVWÚSQLH
PöJïE\ÊDQLPRZDQ\(IHNW
Z\EUDQ\GRZ\ĂZLHWOHQLD
QDJïöZNDMHVWX]\VNLZDQ\]D
SRPRFÈPHWRG\VOLGH'RZQ =ZUöÊXZDJÚQDVSRVöE
ïÈF]HQLDPHWRGĽQLHWU]HED
SRQRZQLHZ\ELHUDÊHOHPHQWöZ
GODNDĝGHJR]DGDQLD
WYNIK
2. :GUXJLHMF]ÚĂFLNRGX
SROHFHQLDSRZRGXMÈSRMDZLDQLH
VLÚQDVWURQLHHOHPHQWöZOLVW\
MHGHQSRGUXJLP3RQLHZDĝ
HOHPHQW\PDMÈVLÚSRMDZLÊ
QDVWURQLHZF]HĂQLHMPXV]È
E\ÊXNU\WH1DVWÚSQLHPHWRGD
.each() jest wykorzystywana
GRLWHUDFMLSU]H]SRV]F]HJöOQH
HOHPHQW\<li>0RĝHV]]REDF]\ÊWXWDMZ\ZRïDQLHIXQNFML
DQRQLPRZHM
:HZQÈWU]IXQNFMLDQRQLPRZHM
ZïDĂFLZRĂÊindexG]LDïDZFKDUDNWHU]HOLF]QLNDZVND]XMÈFHJR
DNWXDOQ\HOHPHQW<li>
0HWRGD.delay()SRZRGXMH
SDX]ÚPLÚG]\Z\ĂZLHWODQLHP
NROHMQ\FKHOHPHQWöZOLVW\
2SöěQLHQLHMHVWREOLF]DQH
SU]H]SRPQRĝHQLHZDUWRĂFL
indexSU]H]OLF]EÚPV
ZSU]HFLZQ\PUD]LHZV]\VWNLH
HOHPHQW\OLVW\SRNDĝÈVLÚ
MHGQRF]HĂQLH 1DVWÚSQLH
PHWRGDfadeIn() pokazuje
GDQ\HOHPHQWQDVWURQLH
3. :RVWDWQLHMF]ÚĂFLNRGX
WZRU]RQ\MHVWREVHUZDWRU]GDU]HñRF]HNXMÈF\QDNOLNQLÚFLH
HOHPHQWXSU]H]Xĝ\WNRZQLND
3RNOLNQLÚFLXHOHPHQWSRZROL
]QLND]OLVW\ HIHNWWUZDRNRïR
PV JQUERY 339
ANIMACJA WŁAŚCIWOŚCI CSS
0HWRGD.animate()SR]ZDODQDWZRU]HQLHZïDVQ\FKHIHNWöZ
LDQLPDFMLSU]H]]PLDQÚZïDĂFLZRĂFL&66
,VWQLHMHPRĝOLZRĂÊDQLPDFMLGRZROQHMZïDĂFLZRĂFL&66NWöUHM
ZDUWRĂÊPRĝHE\ÊZ\UDĝRQD
ZSRVWDFLOLF]E\QDSU]\NïDG
heightZLGWK i IRQWVL]H
1LHPRĝQDDQLPRZDÊW\FK
ZïDĂFLZRĂFLNWöU\FKZDUWRĂFLÈ
EÚG]LHFLÈJWHNVWRZ\QD
SU]\NïDGfont-family lub
text-transform
:ïDĂFLZRĂFL&66VÈSRGDZDQHZQRWDFMLFDPHO&DVH
DZLÚFSLHUZV]HVïRZRMHVW
]DSLV\ZDQHPDï\PLOLWHUDPL
QDWRPLDVWZNDĝG\PNROHMQ\P
SLHUZV]DOLWHUDMHVWGXĝD
QDSU]\NïDGZïDĂFLZRĂÊ
border-top-left-radius
SU]\ELHU]HSRVWDÊ
borderTopLeftRadius
:ïDĂFLZRĂFL&66VÈSRGDZDQH
]DSRPRFÈQRWDFMLOLWHUDïX
RELHNWX MDNPRĝHV]]REDF]\Ê
QDVWURQLHSRSUDZHM 0HWRGD
PRĝHUöZQLHĝSREUDÊWU]\
RSFMRQDOQHSDUDPHWU\MDN
SU]HGVWDZLRQRSRQLĝHM
.animate({
6W\OHSU]H]QDF]RQHGR]PLDQ\
}[, speed][, easing][, complete]);
1
1. 3DUDPHWUspeed wskazuje
GïXJRĂÊDQLPDFMLZ\UDĝRQÈ
ZPLOLVHNXQGDFK 0RĝQD
UöZQLHĝXĝ\ÊVïöZNOXF]RZ\FK
VORZ i fast 2
2. 3DUDPHWUeasingPRĝH
SU]\MÈÊGZLHZDUWRĂFLlinear
V]\ENRĂÊDQLPDFMLSR]RVWDMH
VWDïD LVZLQJ V]\ENRĂÊ
DQLPDFML]ZLÚNV]DVLÚZĂURGNX
SU]HMĂFLDQDWRPLDVWQDSRF]ÈWNXLNRñFXMHVWZROQLHMV]D 3
3. 3DUDPHWUcomplete jest
Xĝ\ZDQ\ZFHOXZ\ZRïDQLD
IXQNFMLNWöUDSRZLQQDE\Ê
XUXFKRPLRQDSR]DNRñF]HQLX
DQLPDFML7RWDN]ZDQDfunkcja
Z\ZRïDQLD]ZURWQHJR
PRZYKŁADY STOSOWANYCH W JQUERY ODPOWIEDNIKÓW NAZW WŁAŚCIWOŚCI CSS
bottogm , left , right , top , backgroundPositionX , backgroundPositionY , height , ZLGWK,
maxHeight , minHeight , maxWidth , minWidth , margin , marginBottom , marginLeft ,
marginRight , marginTop , outlineWidth , padding , paddingBottom , paddingLeft ,
paddingRight , paddingTop , IRQW6L]H, letterSpacing , ZRUG6SDFLQJ, lineHeight ,
textIndent , borderRadius , borderWidth , borderBottomWidth , borderLeftWidth ,
borderRightWidth , borderTopWidth , borderSpacing .
340 JQUERY
UŻYCIE ANIMACJI
:SRQLĝV]\PSU]\NïDG]LH
PHWRGD.animate()MHVW
Xĝ\ZDQDZFHOXVWRSQLRZHM
]PLDQ\ZDUWRĂFLGZöFK
ZïDĂFLZRĂFL&662ELHPDMÈ
ZDUWRĂFLZ\UDĝRQHOLF]ERZR
opacity i padding-left
.LHG\Xĝ\WNRZQLNNOLNQLH
HOHPHQWOLVW\HOHPHQWSRZROL
]QLNQLHDWHNVW]RVWDQLHSU]HVXQLÚW\ZSUDZÈVWURQÚ (IHNW
WUZDPV 3R]DNRñF]HQLX
DQLPDFMLQDVWÚSXMHXUXFKRPLHQLHIXQNFMLZ\ZRïDQLD]ZURWQHJRNWöUDXVXZDHOHPHQW
c07/js/animate.js
JAVASCRIPT
1
2
3
4
,VWQLHMHPRĝOLZRĂÊ]ZLÚNV]HQLD
OXE]PQLHMV]HQLDZDUWRĂFL
OLF]ERZHMRSRGDQÈZDUWRĂÊ
:RPDZLDQ\PSU]\NïDG]LH
Z\UDĝHQLH+=80VïXĝ\GR]ZLÚNV]HQLDZDUWRĂFLZïDĂFLZRĂFL
paddingRSLNVHOL :FHOX
MHM]PQLHMV]HQLDRSLNVHOL
QDOHĝ\Xĝ\Ê-=80 $(function() {
$(’li’).on(’click’, function() {
$(this).animate({
opacity: 0.0,
paddingLeft: ’+=80’
}, 500, function() {
$(this).remove();
});
});
});
1. :\EUDQHVÈZV]\VWNLH
HOHPHQW\OLVW\*G\Xĝ\WNRZQLN
NOLNQLHMHGHQ]QLFKQDVWÚSXMH
XUXFKRPLHQLHIXQNFMLDQRQLPRZHM:HZQÈWU]IXQNFML
$(this)WZRU]\QRZ\RELHNW
M4XHU\SU]HFKRZXMÈF\HOHPHQW
NOLNQLÚW\SU]H]Xĝ\WNRZQLND
1DVWÚSQLHPHWRGD.animate()
]RVWDMHZ\ZRïDQDZQRZR
XWZRU]RQ\PRELHNFLHM4XHU\
WYNIK
2. :HZQÈWU]PHWRG\
.animate()]PLDQLHXOHJDMÈ
ZïDĂFLZRĂFLopacity
i paddingLeft:DUWRĂÊ
ZïDĂFLZRĂFLpaddingLeft
MHVW]ZLÚNV]DQDRSLNVHOL
FRVWZDU]DZUDĝHQLHĝHWHNVW
SU]HVXZDVLÚZSUDZÈVWURQÚ
SRGF]DVMHJR]DQLNDQLD
3. 0HWRGD.animate()PDGZD
GRGDWNRZHSDUDPHWU\3LHUZV]\
RNUHĂODGïXJRĂÊDQLPDFMLZ\UDĝRQÈZPLOLVHNXQGDFK WXWDMWR
PV 1DWRPLDVWGUXJLWR
IXQNFMDDQRQLPRZDZVND]XMÈFD
WRFRSRZLQQRVLÚ]GDU]\ÊSR
]DNRñF]HQLXDQLPDFML
4. 3R]DNRñF]HQLXDQLPDFML
IXQNFMDZ\ZRïDQLD]ZURWQHJR
SRZRGXMHXVXQLÚFLHHOHPHQWX
OLVW\]HVWURQ\Xĝ\ZDMÈFGRWHJR
PHWRG\.remove()
-HĝHOLFKFHV]SU]HSURZDG]LÊ
DQLPDFMÚNRORUöZ]DPLDVW
PHWRG\.animate()Z\NRU]\VWDM
GRWHJRFHOXZW\F]NÚM4XHU\
https://github.com/jquery/
jquery-color/
JQUERY
341
NAWIGACJA PO MODELU DOM
*G\Z\ELHU]HP\HOHPHQW\ZM4XHU\Z\PLHQLRQHWXWDMPHWRG\PRĝQD
Z\NRU]\VWDÊZFHOXX]\VNDQLDGRVWÚSXGRZÚ]ïöZLQQ\FKHOHPHQWöZ
SRZLÈ]DQ\FK]SRF]ÈWNRZRZ\EUDQ\PL
.DĝGDPHWRGDZ\V]XNXMH
HOHPHQW\NWöUHPDMÈUöĝQH
UHODFMH]DNWXDOQLHZ\EUDQ\PL
QDSU]\NïDGVÈHOHPHQWDPL
QDGU]ÚGQ\PLOXESRWRPQ\PL
DNWXDOQLHZ\EUDQ\FK 0HWRG\ğQG i .closest()
Z\PDJDMÈSRGDQLDDUJXPHQWX
ZSRVWDFLVHOHNWRUDVW\OX&66
:SU]\SDGNXSR]RVWDï\FK
PHWRGVHOHNWRUVW\OX&66MHVW
RSFMRQDOQ\-HĝHOLVHOHNWRU
]RVWDQLHSRGDQ\GRSDVRZDQH
PXV]ÈE\ÊPHWRGDLVHOHNWRU
DE\HOHPHQWPöJï]RVWDÊ
GRGDQ\GRZ\EUDQ\FK
1DSU]\NïDGMHĂOLQDSRF]ÈWNX
Z\EUDQ\MHVWW\ONRMHGHQ
HOHPHQWOLVW\WR]DSRPRFÈ
PHWRG\.siblings()GR]ELRUX
PRĝQDGRïÈF]\ÊSR]RVWDïH
HOHPHQW\OLVW\
-HĝHOLZPHWRG]LHEÚG]LH
SRGDQ\VHOHNWRUQDSU]\NïDG
.siblings(’.important’)
WRZ\V]XNDQH]RVWDQÈW\ONRWH
HOHPHQW\UöZQRU]ÚGQHNWöU\FK
atrybut classPDZDUWRĂÊ
important
342 JQUERY
METODY WYMAGAJĄCE SELEKTORA
0(72'$
23,6
ğQG
:V]\VWNLHHOHPHQW\Z]ELRU]HDNWXDOQLHZ\EUDQ\FK
ZNWöU\FKGRSDVRZDQRVHOHNWRU
.closest()
1DMEOLĝV]\HOHPHQWQDGU]ÚGQ\ QLHW\ONREH]SRĂUHGQL GRSDVRZDQ\GRVHOHNWRUD
METODY NIEWYMAGAJĄCE SELEKTORA
0(72'$
23,6
.parent()
%H]SRĂUHGQLHOHPHQWQDGU]ÚGQ\DNWXDOQLHZ\EUDQHJR
.parents()
:V]\VWNLHHOHPHQW\QDGU]ÚGQHDNWXDOQLHZ\EUDQHJR
.children()
:V]\VWNLHHOHPHQW\SRWRPQHDNWXDOQLHZ\EUDQHJR
.siblings()
:V]\VWNLHHOHPHQW\UöZQRU]ÚGQHDNWXDOQLHZ\EUDQHJR
.next()
1DVWÚSQ\HOHPHQWUöZQRU]ÚGQ\DNWXDOQLHZ\EUDQHJR
.nextAll()
:V]\VWNLHQDVWÚSQHHOHPHQW\UöZQRU]ÚGQHDNWXDOQLH
Z\EUDQHJR
.prev()
3RSU]HGQLHOHPHQWUöZQRU]ÚGQ\DNWXDOQLHZ\EUDQHJR
.prevAll()
:V]\VWNLHSRSU]HGQLHHOHPHQW\UöZQRU]ÚGQHDNWXDOQLH
Z\EUDQHJR
-HĝHOLGRSDVRZDQ\]ELöUSRF]ÈWNRZR]DZLHUDZLHOHHOHPHQWöZ
WRZ\PLHQLRQHPHWRG\EÚGÈG]LDïDï\ZHZV]\VWNLFKZ\EUDQ\FK
HOHPHQWDFK FRPRĝHVNXWNRZDÊGRĂÊG]LZQ\PLNROHNFMDPLHOHPHQWöZ =DQLPSU]\VWÈSLV]GRQDZLJDFMLSRPRGHOX'20PRĝHV]
]DZÚ]LÊ]ELöUZ\EUDQ\FKHOHPHQWöZ
:WOHELEOLRWHNDM4XHU\REVïXJXMHQLHVSöMQRĂFLPLÚG]\SU]HJOÈGDUNDPLZ]DNUHVLHQDZLJDFMLSRPRGHOX'20 QDSU]\NïDGZÚ]ï\]QDNöZ
RGVWÚSXGRGDZDQHZQLHNWöU\FKSU]HJOÈGDUNDFK NAWIGACJA
.LHG\VWURQDMHVWZF]\W\ZDQD
OLVWDSR]RVWDMHXNU\WDDGR
QDJïöZND]RVWDMHGRGDQHïÈF]H
LQIRUPXMÈFHXĝ\WNRZQLNDRPRĝOLZRĂFLMHMZ\ĂZLHWOHQLD
’ÈF]HMHVWGRGDZDQHZQDJïöZNX-HĝHOLXĝ\WNRZQLNNOLNQLH
JG]LHNROZLHNZHOHPHQFLH<h2>
WRQDVWURQLHSRMDZLVLÚHOHPHQW
<ul>
3RQDGWRZV]\VWNLHHOHPHQW\
<li>SRVLDGDMÈFHDWU\EXW
classRZDUWRĂFLhotRWU]\PDMÈ
ZDUWRĂÊGRGDWNRZÈcomplete
c07/js/traversing.js
JAVASCRIPT
$(function() {
var $h2 = $(’h2’);
$(’ul’).hide();
KDSSHQG ijD!SRNDĝD!ij 1
2
3
4
5
6
$h2.on(’click’, function() {
$h2.next()
.fadeIn(500)
.children(’.hot’)
.addClass(’complete’);
KğQG ijDij IDGH2XW });
});
1. =GDU]HQLHclickZHOHPHQcie <h2>VSRZRGXMHZ\ZRïDQLH
IXQNFMLDQRQLPRZHM
2. 0HWRGD.next()MHVWXĝ\ZDQDZFHOXZ\ERUXQDVWÚSQHJR
HOHPHQWXUöZQRU]ÚGQHJRSR
<h2>F]\OLZRPDZLDQ\P
SU]\NïDG]LHHOHPHQWX<ul>
WYNIK
3. (OHPHQW<ul>SRMDZLDVLÚ
ZZLGRNX
4. 0HWRGD.children()
Z\ELHUDZV]\VWNLHHOHPHQW\
SRWRPQHHOHPHQWX<ul>
a selektor wskazuje wybór tylko
W\FKNWöU\FKZDUWRĂÊDWU\EXWX
class wynosi hot
5. 0HWRGD.addClass() jest
QDVWÚSQLHXĝ\ZDQDZFHOX
GRGDQLDZVND]DQ\PHOHPHQWRP
<li> klasy complete=REDF]\ïHĂWHUD]MDNïÈF]\ÊPHWRG\
LSRUXV]DÊVLÚPLÚG]\ZÚ]ïDPL
6. :RVWDWQLPNURNXPHWRGD
ğQG PRĝHE\ÊZ\NRU]\VWDQD
GRZ\ERUXHOHPHQWX<a>EÚGÈFHJRHOHPHQWHPSRWRPQ\P
<h2>LMHJRXNU\FLDSRQLHZDĝ
ZW\PPRPHQFLHOLVWDMHVW
Z\ĂZLHWORQDXĝ\WNRZQLNRZL
JQUERY 343
DODAWANIE
I FILTROWANIE ELEMENTÓW
W DOPASOWANYM ZBIORZE
3RZ\EUDQLXHOHPHQWöZZM4XHU\GR]ELRUXPRĝQDGRGDÊ
NROHMQHHOHPHQW\OXEğOWURZDÊLVWQLHMÈFHDE\W\PVDP\P
SUDFRZDÊMHG\QLH]SRG]ELRUHPHOHPHQWöZ
0HWRGD.add() pozwala na
GRGDQLHNROHMQ\FKHOHPHQWöZ
GRZF]HĂQLHMZ\EUDQ\FK
:GUXJLHMWDEHOLSRSUDZHM
VWURQLHZ\PLHQLRQRPHWRG\
SR]ZDODMÈFHQDWZRU]HQLHSRG]ELRUXQDSRGVWDZLHSLHUZRWQLH
Z\EUDQ\FKHOHPHQWöZ
0HWRG\SRELHUDMÈSDUDPHWU
w postaci kolejnego selektora
L]ZUDFDMÈSU]HğOWURZDQ\
GRSDVRZDQ\]ELöU
(OHPHQW\WDEHOLUR]SRF]\QDMÈFH
VLÚRGGZXNURSNDPRJÈE\Ê
Xĝ\ZDQHZV]ÚG]LHWDPJG]LHVÈ
VWRVRZDQHVHOHNWRU\VW\OX&66
6HOHNWRU\:not() i :has()
SRELHUDMÈSDUDPHWUZSRVWDFL
LQQHJRVHOHNWRUDVW\OX&663RQDGWRLVWQLHMHVHOHNWRURQD]ZLH
:contains()NWöU\SR]ZDOD
QDZ\V]XNDQLHHOHPHQWöZ
]DZLHUDMÈF\FKRNUHĂORQ\WHNVW
0HWRGD.is() pozwala na
Xĝ\FLHLQQHJRVHOHNWRUDZFHOX
VSUDZG]HQLDF]\DNWXDOQLH
Z\EUDQHHOHPHQW\VÈGRSDVRZDQHGRZDUXQNX-HĝHOL
WDNZDUWRĂFLÈ]ZURWQÈEÚG]LH
true7DPHWRGDVSUDZG]DVLÚ
ZNRQVWUXNFMDFKZDUXQNRZ\FK
344 JQUERY
DODAWANIE ELEMENTÓW DO WCZEŚNIEJ WYBRANYCH
0(72'$
23,6
.add()
3RZRGXMHGRGDQLHZVND]DQHJRHOHPHQWXGRZF]HĂQLHM
Z\EUDQ\FK
FILTROWANIE ZA POMOCĄ DRUGIEGO SELEKTORA
0(72'$6(/(.725
23,6
ğOWHU
:\V]XNXMHZGRSDVRZDQLXHOHPHQW\NWöUHVÈ
GRSDVRZDQHGRGUXJLHJRVHOHNWRUD
ğQG
:GRSDVRZDQ\P]ELRU]HZ\V]XNXMHHOHPHQW\
SRWRPQHGRSDVRZDQHGRVHOHNWRUD
.not() / :not()
:\V]XNXMHHOHPHQW\NWöUHQLHVÈGRSDVRZDQH
GRVHOHNWRUD
.has() / :has()
:GRSDVRZDQ\P]ELRU]HZ\V]XNXMHHOHPHQW\
NWöUHPDMÈHOHPHQW\SRWRPQHGRSDVRZDQH
GRVHOHNWRUD
:contains()
:\ELHUDZV]\VWNLHHOHPHQW\]DZLHUDMÈFH
RNUHĂORQ\WHNVW ZLHONRĂÊOLWHUSDUDPHWUX
PD]QDF]HQLH 'ZDSRQLĝV]HVHOHNWRU\VÈRGSRZLHGQLNDPL
$(’li’).not(’.hot’).addClass(’cool’);
$(’li:not(.hot)’).addClass(’cool’);
:SU]HJOÈGDUNDFKREVïXJXMÈF\FKPHWRG\querySelector()
i querySelectorAll()Xĝ\FLH:not()MHVWV]\EV]HQLĝ.not()
QDWRPLDVW:has()MHVWV]\EV]HQLĝ.has()
SPRAWDZANIE ZAWARTOŚCI
0(72'$
23,6
.is()
6SUDZG]DF]\DNWXDOQLHZ\EUDQHHOHPHQW\VÈGRSDVRZDQH
GRZDUXQNX ZDUWRĂFLÈ]ZURWQÈPHWRG\MHVWZDUWRĂÊ
ERRORZVND UŻYCIE FILTRÓW
:SRQLĝV]\PSU]\NïDG]LHZ\ELHUDQHVÈZV]\VWNLHHOHPHQW\
OLVW\1DVWÚSQLH]DSRPRFÈ
UöĝQ\FKğOWUöZZ\ELHUDQHVÈ
SRG]ELRU\SU]H]QDF]RQHGR
GDOV]HMSUDF\
:SU]\NïDG]LHZ\NRU]\VWDQR
RELHPHWRG\ğOWURZDQLDMDN
UöZQLHĝSVHXGRVHOHNWRUVW\OX
&66F]\OL:not()
FMVğOWHUVMV
JAVASCRIPT
1
2
3
*G\ğOWUZ\ELHU]HSRG]ELöU
HOHPHQWöZLQQHPHWRG\M4XHU\
VÈXĝ\ZDQHGRXDNWXDOQLHQLD
Z\EUDQ\FKHOHPHQWöZ
var $listItems = $(’li’);
OLVW,WHPVğOWHU ijKRWODVWij UHPRYH&ODVV ijKRWij $(’li:not(.hot)’).addClass(’cool’);
$listItems.has(’em’).addClass(’complete’);
4
$listItems.each(function() {
var $this = $(this);
if ($this.is(’.hot’)) {
WKLVSUHSHQG ij3ULRU\WHWRZHij }
});
5
$(’li:contains("miód”)’).append(’ (lokalny)’);
1. 0HWRGDğOWHU wyszukuje
RVWDWQLHOHPHQWOLVW\NWöUHJR
ZDUWRĂFLÈDWU\EXWXclass jest
hot1DVWÚSQLHXVXZDZDUWRĂÊ
]WHJRDWU\EXWX
WYNIK
2. 6HOHNWRU:not()MHVWXĝ\ZDQ\
ZHZQÈWU]VHOHNWRUDM4XHU\GR
Z\V]XNLZDQLDHOHPHQWöZ<li>
EH]ZDUWRĂFLhot w atrybucie
classDQDVWÚSQLHGRGDMH
ZDUWRĂÊcool
3. 0HWRGD.has() wyszukuje
HOHPHQW<li>]DZLHUDMÈF\
HOHPHQW<em>DQDVWÚSQLH
GRGDMHZDUWRĂÊcompleteGR
atrybutu class
4. 0HWRGD.each()
SU]HSURZDG]DLWHUDFMÚSU]H]
HOHPHQW\OLVW\(OHPHQWELHĝÈF\
jest buforowany w obiekcie
M4XHU\0HWRGD.is()
VSUDZG]DF]\HOHPHQW<li>
PDDWU\EXWclassRZDUWRĂFL
hot-HĝHOLWDNWRQDSRF]ÈWNX
HOHPHQWXXPLHV]F]DQ\MHVWWHNVW
3ULRU\WHWRZH
5. 6HOHNWRU:contains
VSUDZG]DF]\HOHPHQW<li>
zawiera tekst miódLGRïÈF]D
tekst (lokalny)QDNRñFXWHJR
HOHPHQWX
JQUERY 345
WYSZUKIWANIE ELEMENTÓW
WEDŁUG KOLEJNOŚCI
.DĝG\HOHPHQW]ZUDFDQ\SU]H]VHOHNWRUM4XHU\PDSU]\SLVDQ\QXPHULQGHNVX
NWöU\PRĝHE\ÊZ\NRU]\VWDQ\GRğOWURZDQLDZ\EUDQ\FKHOHPHQWöZ
2ELHNWjQueryMHVWF]DVDPL
RNUHĂODQ\PLDQHPRELHNWX
w stylu tablicySRQLHZDĝ
ZV]\VWNLPHOHPHQWRPSU]\SLVXMHOLF]E\NWöUHQDVWÚSQLH
VÈ]ZUDFDQHSU]H]VHOHNWRU
:VSRPQLDQDOLF]EDMHVW
QXPHUHPLQGHNVXFRR]QDF]D
ĝHQXPHURZDQLH]DF]\QDVLÚ
RG]HUD
:\EUDQHHOHPHQW\PRĝQD
ğOWURZDÊQDSRGVWDZLHZDUWRĂFLLQGHNVXZ\NRU]\VWXMÈF
Z\PLHQLRQHWXWDMPHWRG\OXE
GRGDWNRZHVHOHNWRU\VW\OX&66
RIHURZDQHSU]H]M4XHU\
0HWRG\VÈVWRVRZDQHZHOHPHQWDFKZ\EUDQ\FKZM4XHU\
QDWRPLDVWVHOHNWRU\MDNRF]ÚĂÊ
VHOHNWRUöZVW\OX&66
3RSUDZHMVWURQLHPRĝHV]
]REDF]\ÊVHOHNWRUZ\ELHUDMÈF\
ZV]\VWNLHHOHPHQW\<li>
]OLVW\Xĝ\ZDQHMZW\P
UR]G]LDOH:WDEHOLZ\PLHQLRQR
SRV]F]HJöOQHHOHPHQW\OLVW\
RUD]RGSRZLDGDMÈFHLPQXPHU\
LQGHNVX3U]\NïDGQDNROHMQHM
stronie pokazuje wykorzystanie
W\FKQXPHUöZGRZ\ERUX
HOHPHQWöZOLVW\LXDNWXDOQLDQLD
LFKDWU\EXWöZclass
346 JQUERY
WYSZUKIWANIE ELEMENTÓW
WEDŁUG NUMERU INDEKSU
0(72'$6(/(.725
23,6
.eq()
(OHPHQWGRSDVRZDQ\GRQXPHUXLQGHNVX
:lt()
(OHPHQWRQXPHU]HLQGHNVXPQLHMV]\PQLĝ
SRGDQ\
:gt()
(OHPHQWRQXPHU]HLQGHNVXZLÚNV]\PQLĝ
SRGDQ\
$(’li’)
INDEKS +70/
0
<li id=”one” class=”hot”><em>ĂZLHĝH</em> ğJL</li>
1
OLLG ĵWZRĵFODVV ĵKRWĵ!RU]HV]NLSLQLRZH</li>
2
<li id=”three” class=”hot”>miód</li>
3
<li id=”four”>RFHWEDOVDPLF]Q\</li>
UŻYCIE WARTOŚCI INDEKSU
7HQSU]\NïDGSRND]XMHMDN
M4XHU\QDGDMHQXPHU\LQGHNVX
SRV]F]HJöOQ\PHOHPHQWRP
]QDMGXMÈF\PVLÚZGRSDVRZDQ\P]ELRU]H
6HOHNWRU\:lt() i :gt()DWDNĝH
PHWRGD.eq()VÈXĝ\ZDQH
GRZ\V]XNDQLDHOHPHQWöZ
QDSRGVWDZLHLFKQXPHUöZ
LQGHNVX
c07/js/index-numbers.js
JAVASCRIPT
1
2
3
:NDĝG\PGRSDVRZDQ\P
HOHPHQFLH]PLHQLDQDMHVW
ZDUWRĂÊDWU\EXWXclass
$(function() {
$(’li:lt(2)’).removeClass(’hot’);
$(’li’).eq(0).addClass(’complete’);
$(’li:gt(2)’).addClass(’cool’);
});
1. 6HOHNWRU:lt()MHVWXĝ\ZDQ\
ZVHOHNWRU]HGRZ\ERUXHOHPHQWöZOLVW\RQXPHU]HLQGHNVX
PQLHMV]\PQLĝ21DVWÚSQLH
]LFKDWU\EXWXclass zostaje
XVXQLÚWDZDUWRĂÊhot
2. 0HWRGD.eq() wybiera
SLHUZV]\HOHPHQWOLVW\ Z\NRU]\VWDQ\]RVWDïQXPHU0SRQLHZDĝ
QXPHU\LQGHNVXUR]SRF]\QDMÈ
VLÚRG]HUD 1DVWÚSQLHGR
atrybutu class]RVWDMHGRGDQD
ZDUWRĂÊcomplete
3. 6HOHNWRU:gt()MHVWXĝ\ZDQ\
ZVHOHNWRU]HM4XHU\GRZ\ERUX
HOHPHQWöZOLVW\RQXPHU]H
LQGHNVXZLÚNV]\PQLĝ2
1DVWÚSQLHGRDWU\EXWXclass
]RVWDMHGRGDQDZDUWRĂÊcool
WYNIK
JQUERY 347
WYBÓR Z ELEMENTÓW
jQuery oferuje selektory zaprojektowane specjalnie do pracy
z formularzami sieciowymi.
-HGQDNQLH]DZV]H]DSHZQLDMÈ
one najszybszy sposób wybierania elementów.
-HĝHOLNRU]\VWDV]]MHGQHJR
z takich selektorów, jQuery
przeanalizuje wszystkie
elementy w dokumencie w celu
znalezienia dopasowania
Xĝ\ZDMÈFNRGXZSOLNXM4XHU\
NWöU\QLHG]LDïDWDNV]\ENRMDN
selektory CSS).
'ODWHJRWHĝQDOHĝ\]DZÚ]LÊ
IUDJPHQWGRNXPHQWXDQDOL]Rwany przez skrypt. Odbywa
VLÚWRSU]H]XPLHV]F]HQLH
QD]Z\HOHPHQWXOXEXĝ\FLH
LQQHJRVHOHNWRUDM4XHU\SU]HG
zastosowaniem selektorów
wymienionych na tej stronie.
'RVWÚSGRHOHPHQWXZIRUPXODU]\VLHFLRZ\FKPRĝHRGE\ZDÊ
VLÚWDNĝH]DSRPRFÈW\FK
VDP\FKVHOHNWRUöZNWöUHVïXĝÈ
GRZ\ERUXGRZROQHJRHOHPHQWX
ZM4XHU\&]ÚVWREÚG]LHWR
najszybsza opcja.
:DUWRZVSRPQLHÊMHV]F]H
RMHGQ\P3RQLHZDĝM4XHU\
REVïXJXMHQLHVSöMQRĂFLGRW\F]Èce sposobu traktowania znaków
RGVWÚSXSU]H]SU]HJOÈGDUNL
SRUXV]DQLHVLÚSRHOHPHQWDFK
EÚG]LHïDWZLHMV]H]DSRĂUHGnictwem biblioteki jQuery
QLĝ]Xĝ\FLHP]Z\NïHJRNRGX
JavaScript.
348 JQUERY
SELEKTORY DLA ELEMENTÓW
FORMULARZA SIECIOWEGO
SELEKTOR OPIS
:button
Elementy <button> i <input>, których atrybut type ma
ZDUWRĂÊbutton.
:checkbox
Elementy <input>, których atrybut typePDZDUWRĂÊ
checkbox=ZUöÊXZDJÚQDIDNWĝHOHSV]ÈZ\GDMQRĂÊPRĝQD
X]\VNDÊ]DSRPRFÈ$(’[type=”checkbox”]’).
:checked
Zaznaczone elementy w polach wyboru oraz przyciskach
opcji (patrz :selected dla pól select).
:disabled
:V]\VWNLHHOHPHQW\NWöUH]RVWDï\Z\ïÈF]RQH
:enabled
:V]\VWNLHHOHPHQW\NWöUH]RVWDï\ZïÈF]RQH
:focus
(OHPHQWNWöU\MHVWDNWXDOQLHDNW\ZQ\=ZUöÊXZDJÚQD
IDNWĝHOHSV]ÈZ\GDMQRĂÊPRĝQDX]\VNDÊ]DSRPRFÈ
$(document.activeElement).
ğOH
:V]\VWNLHHOHPHQW\NWöUHSR]ZDODMÈQDZ\EöUSOLNX
:image
Wszystkie elementy <input>, których atrybut type ma
ZDUWRĂÊimage=ZUöÊXZDJÚQDIDNWĝHOHSV]ÈZ\GDMQRĂÊ
PRĝQDX]\VNDÊ]DSRPRFÈ[type=”image”].
:input
Wszystkie elementy <button>, <input>, <select>
i <textarea>=ZUöÊXZDJÚQDIDNWĝHOHSV]ÈZ\GDMQRĂÊ
PRĝQDX]\VNDÊSU]H]Z\EöUHOHPHQWöZDQDVWÚSQLHXĝ\FLH
metody ğOWHU ĴLQSXWĵ .
:password
Wszystkie elementy <input>, których atrybut type ma warWRĂÊpassword=ZUöÊXZDJÚQDIDNWĝHOHSV]ÈZ\GDMQRĂÊ
PRĝQDX]\VNDÊ]DSRPRFÈ$(’input:password’).
:radio
Wszystkie elementy <input>, których atrybut type ma
ZDUWRĂÊradio$E\Z\EUDÊJUXSÚSU]\FLVNöZRSFMLPRĝQD
Xĝ\Ê$(’input[name=”gender”]:radio’).
:reset
Wszystkie elementy <input>, których atrybut type ma
ZDUWRĂÊreset.
:selected
:V]\VWNLHHOHPHQW\NWöUH]RVWDï\Z\EUDQH=ZUöÊ
XZDJÚQDIDNWĝHOHSV]ÈZ\GDMQRĂÊPRĝQDX]\VNDÊ]D
SRPRFÈVHOHNWRUD&66ZPHWRG]LHğOWHU QDSU]\NïDG
ğOWHU ĴVHOHFWHGĵ .
:submit
Elementy <button> i <input>, których atrybut type ma
ZDUWRĂÊsubmit=ZUöÊXZDJÚQDIDNWĝHOHSV]ÈZ\GDMQRĂÊ
PRĝQDX]\VNDÊ]DSRPRFÈ[type=”submit”].
:text
Wybiera elementy <input>, których atrybut type ma
ZDUWRĂÊtext lub których atrybut typeQLH]RVWDïXĝ\W\
3UDZGRSRGREQLHOHSV]ÈZ\GDMQRĂÊPRĝQDX]\VNDÊ]D
SRPRFÈ(’input:text’).
ZDARZENIA I METODY
FORMULARZA SIECIOWEGO
POBIERANIE WARTOŚCI ELEMENTÓW
0(72'$
23,6
.val()
0HWRGDXĝ\ZDQDSU]HGHZV]\VWNLP]HOHPHQWDPL
<input><select> i <textarea>0RĝHSREUDÊZDUWRĂÊ
SLHUZV]HJRHOHPHQWXZGRSDVRZDQ\P]ELRU]HOXE
XDNWXDOQLÊZDUWRĂÊZV]\VWNLFK
INNE METODY
0(72'$
23,6
ğOWHU
8ĝ\ZDQDGRğOWURZDQLDHOHPHQWöZZ\EUDQ\FKZM4XHU\
)LOWURZDQLHRGE\ZDVLÚ]DSRPRFÈGUXJLHJRVHOHNWRUD
GRW\F]\WR]ZïDV]F]DğOWUöZFKDUDNWHU\VW\F]Q\FKGOD
IRUPXODU]\VLHFLRZ\FK .is()
%DUG]RF]ÚVWRZ\NRU]\VW\ZDQDZSRïÈF]HQLX]ğOWUDPL
GRVSUDZG]HQLDF]\SROHIRUPXODU]DVLHFLRZHJR]RVWDïR
Z\EUDQHOXE]D]QDF]RQH
$.isNumeric()
6SUDZG]DF]\ZDUWRĂÊSU]HGVWDZLDOLF]EÚ:DUWRĂFLÈ
]ZURWQÈMHVWZDUWRĂÊERRORZVND'ODZ\PLHQLRQ\FK
SRQLĝHMSU]\SDGNöZ]ZUDFDQDMHVWZDUWRĂÊtrue
$.isNumeric(1)
$.isNumeric(-3)
$.isNumeric(“2”) $.isNumeric(4.4)
LV1XPHULF LV1XPHULF [))
ZDARZENIA
0(72'$
23,6
.on()
0HWRGDXĝ\ZDQDGRREVïXJLZV]\VWNLFK]GDU]Hñ
='$5=(1,(
23,6
blur
:\VWÚSXMHJG\HOHPHQWVWDMHVLÚQLHDNW\ZQ\
change
:\VWÚSXMHJG\ZDUWRĂÊHOHPHQWX<input>XOHJD]PLDQLH
focus
:\VWÚSXMHJG\HOHPHQWVWDMHVLÚDNW\ZQ\
select
:\VWÚSXMHJG\RSFMDHOHPHQWX<select>XOHJQLH]PLDQLH
submit
:\VWÚSXMHJG\IRUPXODU]VLHFLRZ\]RVWDQLHZ\VïDQ\
3U]\GDWQÈPHWRGÈSRGF]DVZ\V\ïDQLDIRUPXODU]DVLHFLRZHJRMHVW
UöZQLHĝPHWRGDVHULDOL]H NWöUÈSR]QDV]ZUR]G]LDOH
ZSRGUR]G]LDïDFKķ:\V\ïDQLHIRUPXODU]\VLHFLRZ\FK]Z\NRU]\VWDQLHPWHFKQRORJLL$MD[ĵLķ:\V\ïDQLHIRUPXODU]\VLHFLRZ\FKĵ
0HWRGD.val()SRELHUDZDUWRĂÊ
SLHUZV]HJRHOHPHQWX<input>
<select> i <textarea>ZGRSDVRZDQ\P]ELRU]HM4XHU\0RĝH
E\ÊUöZQLHĝZ\NRU]\VWDQDGR
XVWDZLHQLDZDUWRĂFLGODZV]\VWNLFKGRSDVRZDQ\FKHOHPHQWöZ
0HWRG\ğOWHU i .is()VÈ
SRZV]HFKQLHVWRVRZDQHZUD]
]HOHPHQWDPLIRUPXODU]DVLHFLRZHJR3R]QDïHĂMHZSRGUR]G]LDOH
ķ'RGDZDQLHLğOWURZDQLHHOHPHQWöZZGRSDVRZDQ\P]ELRU]Hĵ
$.isNumeric()WRPHWRGD
JOREDOQD1LHMHVWXĝ\ZDQD
ZHOHPHQWDFKZ\EUDQ\FK
ZM4XHU\=DPLDVWWHJRZDUWRĂÊ
NWöUÈFKFHV]VSUDZG]LÊ
SU]HND]XMHV]PHWRG]LHMDNRMHM
DUJXPHQW
:V]\VWNLHPHWRG\Z\PLHQLRQH
SROHZHMVWURQLHRGSRZLDGDMÈ
]GDU]HQLRP-DYD6FULSWNWöUH
PRJÈE\ÊZ\NRU]\VW\ZDQHGR
Z\ZRï\ZDQLDIXQNFML3RGREQLH
MDNZSU]\SDGNXLQQHJRNRGX
M4XHU\ZWOHZ\PLHQLRQH
PHWRG\]DMPXMÈVLÚREVïXJÈ
QLHVSöMQRĂFLZ\VWÚSXMÈF\FK
PLÚG]\SU]HJOÈGDUNDPL
%LEOLRWHNDM4XHU\XïDWZLDSUDFÚ
]JUXSÈHOHPHQWöZ QDSU]\NïDG
SU]\FLVNDPLRSFMLSRODPL
Z\ERUXLRSFMDPLQDOLĂFLHUR]ZLMDQHM SRQLHZDĝSRZ\EUDQLX
HOHPHQWöZPRĝQDZ\NRU]\VWDÊ
ZQLFKSRV]F]HJöOQHPHWRG\EH]
NRQLHF]QRĂFLVWRVRZDQLDSÚWOL
1DNROHMQHMVWURQLH]QDMGXMH
VLÚSU]\NïDGXĝ\FLDIRUPXODU]D
VLHFLRZHJR:LÚFHMSU]\NïDGöZ
SU]HGVWDZLRQRZUR]G]LDOH
JQUERY 349
PRACA Z FORMULARZEM
SIECIOWYM
:SRQLĝV]\PSU]\NïDG]LHSRGOLVWÈ]RVWDïXPLHV]F]RQ\SU]\FLVN
LIRUPXODU]VLHFLRZ\.LHG\
Xĝ\WNRZQLNNOLNQLHSU]\FLVNGRGDZDQLDQRZHJRHOHPHQWXOLVW\
IRUPXODU]]RVWDQLHZ\ĂZLHWORQ\
ZZLGRNX
)RUPXODU]VLHFLRZ\SR]ZDODQD
GRGDQLHQRZHJRHOHPHQWXGR
OLVW\6NïDGDVLÚ]SRMHG\QF]HJR
pola tekstowego oraz przycisku
Z\V\ïDMÈFHJR]DZDUWRĂÊIRUPXODU]D .LHG\IRUPXODU]MHVW
Z\ĂZLHWORQ\ZZLGRNXSU]\FLVN
SRZRGXMÈF\GRGDQLHQRZHJR
HOHPHQWXSR]RVWDMHXNU\W\ .LHG\Xĝ\WNRZQLNNOLNQLH
SU]\FLVNZ\V\ïDMÈF\]DZDUWRĂÊ
IRUPXODU]DQRZ\HOHPHQW
]RVWDQLHGRGDQ\QDNRñFXOLVW\
5öZQRF]HĂQLHIRUPXODU]EÚG]LH
XNU\W\DSRQRZQLHSRMDZLVLÚ
SU]\FLVNGRGDZDQLDQRZHJR
HOHPHQWX c07/form.html
HTML
0LHMVFHQDOLVWÚ!...</ul>
GLYLG ĵQHZ,WHP%XWWRQĵ!EXWWRQKUHI ĵĵLG ĵVKRZ)RUPĵ!1RZ\HOHPHQW</button></div>
IRUPLG ĵQHZ,WHP)RUPĵ!
<input type=”text” id=”itemDescription” placeholder=”Dodaj opis...” />
<input type=”submit” id=”addButton” value=”Dodaj” />
</form>
WYNIK
350 JQUERY
1. 8WZRU]RQH]RVWDMÈQRZH
obiekty jQuery przeznaczone
GRSU]HFKRZ\ZDQLDSU]\FLVNX
GRGDZDQLDQRZHJRHOHPHQWX
IRUPXODU]DVLHFLRZHJRRUD]
SU]\FLVNXZ\V\ïDMÈFHJR
IRUPXODU]:V]\VWNLHZ\PLHQLRQHRELHNW\VÈEXIRURZDQH
Z]PLHQQ\FK
2. 3RGF]DVZF]\W\ZDQLDVWURQ\
&66XNU\ZDSU]\FLVNGRGDZDQLDQRZHJRHOHPHQWXOLVW\
LZ\ĂZLHWODIRUPXODU] DZLÚF
PHWRG\M4XHU\Z\ĂZLHWODMÈ
Z\PLHQLRQ\SU]\FLVNLXNU\ZDMÈ
IRUPXODU]
3. -HĝHOLXĝ\WNRZQLNNOLNQLH
SU]\FLVNGRGDZDQLDQRZHJRHOHPHQWXOLVW\ HOHPHQW<button>
którego atrybut idPDZDUWRĂÊ
VKRZ)RUP Z\PLHQLRQ\SU]\FLVN
]RVWDQLHXNU\W\DZ\ĂZLHWORQ\
EÚG]LHIRUPXODU]
$(function() {
4. 3RZ\VïDQLXIRUPXODU]D
VLHFLRZHJRQDVWÚSXMHZ\ZRïDQLHIXQNFMLDQRQLPRZHMNWöUD
RWU]\PXMHRELHNWevent
1
YDUQHZ,WHP%XWWRQ ijQHZ,WHP%XWWRQij YDUQHZ,WHP)RUP ijQHZ,WHP)RUPij var $textInput = $(’input:text’);
5. 0HWRGD.preventDefault()
PRĝHXQLHPRĝOLZLÊZ\VïDQLH
IRUPXODU]DVLHFLRZHJR
2
QHZ,WHP%XWWRQVKRZ QHZ,WHP)RUPKLGH 3
ijVKRZ)RUPij RQ ijFOLFNijIXQFWLRQ
QHZ,WHP%XWWRQKLGH QHZ,WHP)RUPVKRZ });
6. 6HOHNWRU:text pobiera
HOHPHQW<input>NWöUHJR
atrybut typePDZDUWRĂÊtext
0HWRGD.val()SRELHUDZDUWRĂÊ
ZSURZDG]RQÈSU]H]Xĝ\WNRZQLNDZSROXIRUPXODU]D:DUWRĂÊ
WDMHVWQDVWÚSQLHXPLHV]F]DQD
Z]PLHQQHMRQD]ZLHQHZ7H[W
c07/js/form.js
JAVASCRIPT
4
5
6
7
8
^
QHZ,WHP)RUPRQ ijVXEPLWijIXQFWLRQ H ^
e.preventDefault();
YDUQHZ7H[W ijLQSXWWH[Wij YDO ijOLODVWij DIWHU ijOL!ijQHZ7H[WijOL!ij QHZ,WHP)RUPKLGH QHZ,WHP%XWWRQVKRZ $textInput.val(’’);
});
});
7. =DSRPRFÈPHWRG\.after()
QRZ\HOHPHQW]RVWDMHXPLHV]F]RQ\QDNRñFXOLVW\
8. )RUPXODU]VLHFLRZ\]RVWDMH
XNU\W\SU]\FLVNGRGDZDQLD
QRZHJRHOHPHQWXMHVWSRQRZQLH
Z\ĂZLHWORQ\D]DZDUWRĂÊSROD
WHNVWRZHJR]RVWDMHXVXQLÚWD
DE\Xĝ\WNRZQLNPöJïGRGDÊ
NROHMQ\HOHPHQWMHĂOLFKFH JQUERY
351
WYCINANIE I KOPIOWANIE
ELEMENTÓW
Gdy zostanie dokonany wybór elementów w jQuery,
Z\PLHQLRQHWXWDMPHWRG\PRĝQDZ\NRU]\VWDÊ
GRXVXQLÚFLDHOHPHQWöZOXEXWZRU]HQLDLFKNRSLL
Metoda .remove() usuwa
]GU]HZDPRGHOX'20GRSDVRwane elementy oraz wszystkie
LFKHOHPHQW\SRWRPQH
Metoda .detach()UöZQLHĝ
usuwa z drzewa modelu
'20GRSDVRZDQHHOHPHQW\
RUD]ZV]\VWNLHLFKHOHPHQW\
SRWRPQHMHGQDN]DFKRZXMH
ZV]\VWNLHSURFHGXU\REVïXJL
]GDU]Hñ LLQQHGDQHSRZLÈ]DQH
]M4XHU\ DE\PRJï\E\Ê
]SRZURWHPXPLHV]F]RQH
QDVWURQLH
Metody .empty() i .unwrap()
XVXZDMÈHOHPHQW\SRZLÈ]DQH
]DNWXDOQLHZ\EUDQ\PL
Metoda .clone()SRZRGXMH
XWZRU]HQLHNRSLLGRSDVRZDQHJR
]ELRUXHOHPHQWöZ LLFKHOHPHQWöZSRWRPQ\FK -HĝHOL]DVWRVXMHV]WÚPHWRGÚGRHOHPHQWöZ
+70/SRVLDGDMÈF\FKDWU\EXW\
idWRZDUWRĂÊDWU\EXWöZid
EÚG]LHZ\PDJDïDXDNWXDOQLHQLD
SRQLHZDĝZSU]HFLZQ\PUD]LH
QLHEÚGÈGïXĝHMXQLNDOQH-HĝHOL
FKFHV]SU]HND]DÊMDNÈNROZLHN
SURFHGXUÚREVïXJLSRZLQLHQHĂ
SRGDÊZDUWRĂÊtrueZQDZLDVLH
352 JQUERY
WYCINANIE
METODA
OPIS
.remove()
8VXZD]GU]HZDPRGHOX'20GRSDVRZDQHHOHPHQW\
ïÈF]QLH]ZV]\VWNLPLHOHPHQWDPLSRWRPQ\PLLZÚ]ïDPL
WHNVWRZ\PL .detach()
']LDïDSRGREQLHMDN.remove()DOHZSDPLÚFL]DFKRZXMH
NRSLÚHOHPHQWöZ
.empty()
8VXZDZV]\VWNLHZÚ]ï\SRWRPQH]ZV]\VWNLFKHOHPHQWöZ
]QDMGXMÈF\FKVLÚZGRSDVRZDQ\P]ELRU]H
.unwrap()
8VXZDHOHPHQW\QDGU]ÚGQHGRSDVRZDQHJR]ELRUX
SR]RVWDZLDMÈFSU]\W\PHOHPHQW\GRSDVRZDQH
KOPIOWANIE
METODA
OPIS
.clone()
7ZRU]\NRSLÚGRSDVRZDQHJR]ELRUX ïÈF]QLH]ZV]\VWNLPL
HOHPHQWDPLSRWRPQ\PLLZÚ]ïDPLWHNVWRZ\PL WKLEJANIE
6SRVöEGRGDZDQLDHOHPHQWöZGRGU]HZDPRGHOX'20SU]HGVWDZLRQRZSRGUR]G]LDOHķ:VWDZLDQLHHOHPHQWXĵ
WYTNIJ, KOPIUJ, WKLEJ
:SRQLĝV]\PSU]\NïDG]LH
PRĝHV]]REDF]\ÊMDNIUDJPHQW\
GU]HZDPRGHOX'20VÈXVXZDQHSRZLHODQHLXPLHV]F]DQH
ZLQQ\PPLHMVFXQDVWURQLH
.RG+70/WXĝ]DOLVWÈ
]DZLHUDGRGDWNRZ\HOHPHQW
<p>ZNWöU\PXPLHV]F]RQR
F\WDW(OHPHQWWHQ]RVWDQLH
SU]HQLHVLRQ\LXPLHV]F]RQ\SRG
QDJïöZNLHP
JAVASCRIPT
1
2
3
4
5
6
3RQDGWRSLHUZV]\HOHPHQWOLVW\
]RVWDïRGïÈF]RQ\LSU]HQLHVLRQ\
QDNRQLHFOLVW\
c07/js/cut-copy-paste.js
$(function() {
var $p = $(’p’);
var $clonedQuote = $p.clone();
$p.remove();
$clonedQuote.insertAfter(’h2’);
var $moveItem = $(’#one’).detach();
$moveItem.appendTo(’ul’);
});
WYNIK
1. (OHPHQWZ\EUDQ\ZM4XHU\WRHOHPHQW<p>
]QDMGXMÈF\VLÚQDNRñFXVWURQ\-HVWEXIRURZDQ\
Z]PLHQQHMRQD]ZLH$p
2. =DSRPRFÈPHWRG\.clone()HOHPHQWWHQ
]RVWDMHVNRSLRZDQ\ ZUD]]]DZDUWRĂFLÈLHOHPHQWDPLSRWRPQ\PL .RSLDMHVWSU]HFKRZ\ZDQD
Z]PLHQQHMRQD]ZLH$clonedQuote
3. $NDSLW]RVWDMHXVXQLÚW\
4. .ORQRZDQDZHUVMDF\WDWX]RVWDMHZVWDZLRQDWXĝ
SRHOHPHQFLH<h2>QDSRF]ÈWNXVWURQ\
5. 3LHUZV]\HOHPHQWOLVW\]RVWDMHRGïÈF]RQ\RG
GU]HZDPRGHOX'20LXPLHV]F]RQ\Z]PLHQQHM
o nazwie $moveItem R]QDF]DWRSUDNW\F]QLHMHJR
XVXQLÚFLH]GU]HZDPRGHOX'20 6. 1DVWÚSQLHZVSRPQLDQ\HOHPHQWOLVW\]RVWDMH
GRïÈF]RQ\QDMHMNRñFX
JQUERY 353
WYMIARY PUDEŁKA
0HWRG\Z\PLHQLRQHSRQLĝHMSR]ZDODMÈQDXVWDOHQLHOXEXDNWXDOQLHQLHV]HURNRĂFLLZ\VRNRĂFLZV]\VWNLFKSXGHïHNQDVWURQLH
&66WUDNWXMHNDĝG\HOHPHQW
QDVWURQLHLQWHUQHWRZHMMDNE\
]QDMGRZDïVLÚZHZïDVQ\P
SXGHïNX7DNLHSXGHïNRPRĝH
PLHÊGRSHïQLHQLHNUDZÚGě
LPDUJLQHV-HĝHOLXVWDZLDV]
V]HURNRĂÊOXEZ\VRNRĂÊ
SXGHïNDZ&66ZDUWRĂÊWDQLH
REHMPXMHGRSHïQLHQLDNUDZÚG]L
LPDUJLQHVXĽ]DZLHUDMÈVLÚ
RQHZZ\PLDUDFKSXGHïND
:\PLHQLRQHWXWDMPHWRG\
SR]ZDODMÈQDSRELHUDQLHV]HURNRĂFLLZ\VRNRĂFLSLHUZV]HJR
HOHPHQWXZGRSDVRZDQ\P
]ELRU]H3LHUZV]HGZDSR]ZDODMÈWDNĝHQDXDNWXDOQLHQLH
Z\PLDUöZZV]\VWNLFKSXGHïHN
ZGRSDVRZDQ\P]ELRU]H
3R]RVWDïHPHWRG\XPRĝOLZLDMÈ
SU]HSURZDG]HQLHUöĝQ\FK
SRPLDUöZZ]DOHĝQRĂFLRG
WHJRFRPD]RVWDÊXZ]JOÚGQLRQHGRSHïQLHQLHNUDZÚGěF]\
PDUJLQHV=ZUöÊXZDJÚQDIDNW
ĝHPHWRG\.outerHeight()
i .outerWidth()SRELHUDMÈ
SDUDPHWUtrueMHĂOLPDUJLQHV
PD]RVWDÊXZ]JOÚGQLRQ\
POBIERANIE LUB USTAWIANIE WYMIARÓW PUDEŁKA
0(72'$
23,6
.height()
:\VRNRĂÊSXGHïND QLHREHMPXMHPDUJLQHVXNUDZÚG]L
LGRSHïQLHQLD
ZLGWK
6]HURNRĂÊSXGHïND QLHREHMPXMHPDUJLQHVXNUDZÚG]L
LGRSHïQLHQLD (1)
TYLKO POBIERANIE WYMIARÓW PUDEŁKA
0(72'$
23,6
.innerHeight()
:\VRNRĂÊSXGHïNDSOXVGRSHïQLHQLH
.innerWidth()
6]HURNRĂÊSXGHïNDSOXVGRSHïQLHQLH(2)
.outerHeight()
:\VRNRĂÊSXGHïNDSOXVGRSHïQLHQLH
LNUDZÚGě
.outerWidth()
6]HURNRĂÊSXGHïNDSOXVGRSHïQLHQLH
LNUDZÚGě(3)
.outerHeight(true)
:\VRNRĂÊSXGHïNDSOXVGRSHïQLHQLH
NUDZÚGěLPDUJLQHV
.outerWidth(true)
6]HURNRĂÊSXGHïNDSOXVGRSHïQLHQLH
NUDZÚGěLPDUJLQHV(4)
*G\VÈSRELHUDQHZ\PLDU\
ZDUWRĂFL]ZURWQHPHWRGVÈ
Z\UDĝRQHZSLNVHODFK
DOPEŁNIENIE
354 JQUERY
1
ZLGWK
2
.innerWidth()
3
.outerWidth()
4
.outerWidth(true)
KRAWĘDŹ
MARGINES
ZMIANA WYMIARÓW
:SRQLĝV]\PSU]\NïDG]LH
SRND]DQR]DVWRVRZDQLHPHWRG
.height() i ZLGWK GRSREUDQLDLXDNWXDOQLHQLDLQIRUPDFML
RZ\PLDUDFKSXGHïND
c07/js/dimensions.js
JAVASCRIPT
1
2
3
4
1DVWURQLHZ\ĂZLHWODQ\MHVW
NRPXQLNDWSRGDMÈF\Z\VRNRĂÊ
NRQWHQHUD1DVWÚSQLH]PLHQLDQD
MHVWV]HURNRĂÊHOHPHQWöZOLVW\
]Xĝ\FLHPZDUWRĂFLZ\UDĝRQ\FK
ZSURFHQWDFKLSLNVHODFK
$(function() {
var listHeight = $(’#page’).height();
ijXOij DSSHQG ijS!:\VRNRĂÊijOLVW+HLJKWijS[S!ij ijOLij ZLGWK ijij ijOLRQHij ZLGWK ijOLWZRij ZLGWK ijij });
1. 8WZRU]RQD]RVWDMH]PLHQQD
o nazwie listHeight prze]QDF]RQDGRSU]HFKRZ\ZDQLD
Z\VRNRĂFLNRQWHQHUDVWURQ\
:DUWRĂÊMHVWSRELHUDQD]D
SRPRFÈPHWRG\.height()
WYNIK
2. :\VRNRĂÊVWURQ\MHVW
Z\ĂZLHWODQDSRGOLVWÈ'RWHJR
FHOXXĝ\WRPHWRG\.append()
DVDPDZDUWRĂÊPRĝH]DOHĝHÊ
RGSU]HJOÈGDUNL
3. 6HOHNWRUZ\ELHUDZV]\VWNLH
HOHPHQW\<li>DQDVWÚSQLH
]DSRPRFÈPHWRG\ZLGWK
XVWDZLDLPV]HURNRĂÊZ\QRV]ÈFÈDNWXDOQHM
4. 7HGZDSROHFHQLDSRZRGXMÈXVWDZLHQLHV]HURNRĂFL
SLHUZV]HJRHOHPHQWXOLVW\QD
SLNVHOLQDWRPLDVWGUXJLHJR
QDV]HURNRĂFLVWURQ\
SRGF]DVMHMZF]\W\ZDQLD
:\QLNLSRPLDUöZSU]HSURZDG]DQ\FKZSURFHQWDFKOXE
MHGQRVWNDFKHPSRZLQQ\E\Ê
SRGDZDQHZSRVWDFLFLÈJXWHNVWRZHJRZUD]]SU]\URVWNLHP%
lub em3LNVHOHQLHZ\PDJDMÈ
SU]\URVWNDLQLHVÈXMPRZDQH
Z]QDNLF\WRZDQLD
JQUERY 355
WYMIARY OKNA I STRONY
0HWRG\.height() i ZLGWK PRJÈE\ÊXĝ\ZDQHGRXVWDOHQLDZ\PLDUöZ
]DUöZQRRNQDSU]HJOÈGDUNLMDNLGRNXPHQWX+70/,VWQLHMÈUöZQLHĝPHWRG\
SR]ZDODMÈFHQDSREUDQLHOXEXVWDZLHQLHSRïRĝHQLDSDVNöZSU]HZLMDQLD
:SRGUR]G]LDOHķ:\PLDU\SXGHïNDĵ]REDF]\ïHĂĝHZ\VRNRĂÊ
OXEV]HURNRĂÊSXGHïNDPRĝQD
SREUDÊLXVWDZLÊ]DSRPRFÈ
PHWRG.height() i ZLGWK 7HPHWRG\PRĝQDZ\NRU]\VWDÊ
WDNĝHZGRSDVRZDQ\P]ELRU]H
M4XHU\]DZLHUDMÈF\PRELHNW\
ZLQGRZ lub document
0(72'$
23,6
.height()
:\VRNRĂÊZ\EUDQHJRHOHPHQWXZM4XHU\
ZLGWK
6]HURNRĂÊZ\EUDQHJRHOHPHQWXZM4XHU\
.scrollLeft()
3RELHUDSR]LRPHSRïRĝHQLHSDVNDSU]HZLMDQLDGOD
SLHUZV]HJRHOHPHQWXZGRSDVRZDQ\P]ELRU]HOXE
XVWDZLDSR]LRPHSRïRĝHQLHSDVNDSU]HZLMDQLDGOD
GRSDVRZDQ\FKZÚ]ïöZ
.scrollTop()
3RELHUDSLRQRZHSRïRĝHQLHSDVNDSU]HZLMDQLDGOD
SLHUZV]HJRHOHPHQWXZGRSDVRZDQ\P]ELRU]HOXE
XVWDZLDSLRQRZHSRïRĝHQLHSDVNDSU]HZLMDQLDGOD
GRSDVRZDQ\FKZÚ]ïöZ
3U]HJOÈGDUNDPRĝHZ\ĂZLHWOLÊ
SDVNLSU]HZLMDQLDMHĝHOL
Z\VRNRĂÊOXEV]HURNRĂÊ
]DZDUWRĂFLSXGHïNDMHVW
ZLÚNV]DQLĝSU]H]QDF]RQHGOD
QLHJRPLHMVFH
ELHĝÈFDVWURQDSU]HGVWDZLDQD
przez obiekt document jest
ZLÚNV]DQLĝZ\PLDU\ZLGRF]QHJRREV]DUX W]Zviewportu RNQDSU]HJOÈGDUNL
•
•
0HWRG\.scrollLeft()
i .scrollTop()SR]ZDODMÈQD
SREUDQLHLXVWDZLHQLHSRïRĝHQLD
SDVNöZSU]HZLMDQLD
2
3RGF]DVSRELHUDQLDZ\PLDUöZ
ZDUWRĂFL]ZURWQHPHWRGVÈ
Z\UDĝRQHZSLNVHODFK
1
ZLQGRZ KHLJKW $(document).height();
356 JQUERY
-HĝHOLGHNODUDFMD
'2&7<3(QLH]RVWDQLH
SRGDQDQDVWURQLH
+70/PHWRGDWD
F]ÚVWR]ZUDFDQLHSUDZLGïRZÈZDUWRĂÊ
POŁOŻENIE ELEMENTÓW
NA STRONIE
0HWRG\.offset() i .position()PRJÈE\Ê
Xĝ\ZDQHZFHOXRNUHĂOHQLDSRïRĝHQLDHOHPHQWöZQDVWURQLH
0(72'$
23,6
.offset()
3RELHUDOXEXVWDZLDZVSöïU]ÚGQHHOHPHQWXZ]JOÚGHP
lewego górnego rogu obiektu document(1)
.position()
3RELHUDOXEXVWDZLDZVSöïU]ÚGQHHOHPHQWXZ]JOÚGHP
GRZROQHJRHOHPHQWXQDGU]ÚGQHJRNWöU\]RVWDïZ\MÚW\
SRSU]H]SU]HVXQLÚFLHSXGHïND&66 ]HVWDQGDUGRZHJR
SU]HSï\ZXHOHPHQWöZ-HĝHOLĝDGHQHOHPHQWQDGU]ÚGQ\
QLH]QDMGXMHVLÚSR]DVWDQGDUGRZ\PSU]HSï\ZHPWRZDUWRĂÊ]ZURWQDPHWRG\MHVWWDNDVDPDMDN.offset()(2)
'ZLHPHWRG\Z\PLHQLRQH
SROHZHMVWURQLHSRPDJDMÈ
ZXVWDOHQLXSRïRĝHQLDHOHPHQWX
QDVWURQLH
Z]JOÚGHPHOHPHQWX
QDGU]ÚGQHJRNWöU\]RVWDï
Z\MÚW\VSR]DVWDQGDUGRZHJR
SU]HSï\ZX
•
•
2ELHPHWRG\]ZUDFDMÈRELHNW
SRVLDGDMÈF\GZLHSRQLĝV]H
ZïDĂFLZRĂFL
topĽSRïRĝHQLHRGJöU\
GRNXPHQWXOXEHOHPHQWX
.offset()
leftĽSRïRĝHQLHRGOHZHM
GRNXPHQWXOXEHOHPHQWX
1
2
.position()
:FHOXSREUDQLDZDUWRĂFLSU]HVXQLÚFLDOXESRïRĝHQLDRELHNW]ZUöFRQ\SU]H]Z\PLHQLRQHPHWRG\QDOHĝ\XPLHĂFLÊZ]PLHQQHM1DVWÚSQLH
]DSRPRFÈZïDĂFLZRĂFLleft i rightPRĝQDSREUDÊSRïRĝHQLH
3RGREQLHMDNZSU]\SDGNX
LQQ\FKPHWRGM4XHU\NLHG\
RPDZLDQHWXWDMPHWRG\
VÈXĝ\ZDQHGRSRELHUDQLD
LQIRUPDFMLWR]ZUDFDMÈZVSöïU]ÚGQHSLHUZV]HJRHOHPHQWX
ZGRSDVRZDQ\P]ELRU]H
-HĝHOLVÈZ\NRU]\VW\ZDQHGR
XVWDZLHQLDSRïRĝHQLDHOHPHQWöZWRXDNWXDOQLDMÈSRïRĝHQLH
ZV]\VWNLFKHOHPHQWöZZGRSDVRZDQ\P]ELRU]H XPLHV]F]DMÈ
MHZW\PVDP\PSXQNFLH var offset = $(’div’).offset();
YDUWH[W ij/HZRijRIIVHWOHIWij3UDZRijRIIVHWULJKW
JQUERY 357
OKREŚLENIE POŁOŻENIA
ELEMENTÓW NA STRONIE
:RPDZLDQ\PWXWDMSU]\NïDG]LHNLHG\Xĝ\WNRZQLNSU]HZLMD
VWURQÚZGöïSXGHïNRMHVW
SU]HZLMDQHZSXGHïNXMDNE\
VWRSNDPLDïDSLNVHOL
7ÚF]ÚĂÊVWURQ\PRĝHP\
RNUHĂOLÊPLDQHPVWUHI\NRñFRZHMD7ZRLP]DGDQLHPMHVW
XVWDOHQLHZ\VRNRĂFLQDNWöUHM
]DF]\QDVLÚendZone
=DNDĝG\PUD]HPJG\Xĝ\WNRZQLNSU]HZLMD]DZDUWRĂÊWU]HED
VSUDZG]LÊSRïRĝHQLHSDVND
SU]HZLMDQLDZ]JOÚGHPSRF]ÈWNX
VWURQ\
-HĝHOLSDVHNSU]HZLMDQLD
]QDMG]LHVLÚSRQLĝHMSRF]ÈWNX
VWUHI\NRñFRZHMSXGHïNREÚG]LH
DQLPRZDQHQDVWURQLH-HĂOL
QLHĽSXGHïNRSR]RVWDMHXNU\WH
1DNRñFXVWURQ\ZNRG]LH
+70/RPDZLDQHJRSU]\NïDGX
]QDMGXMHVLÚGRGDWNRZ\HOHPHQW
<div>]DZLHUDMÈF\UHNODPÚ
:LHOHHOHPHQWöZ]RVWDïR
GRGDQ\FKGROLVW\DE\XWZRU]\Ê
GïXJÈVWURQÚSR]ZDODMÈFÈQDMHM
SU]HZLMDQLH
JQUERY
c07/position.html
HTML
...<li>NRPRVDU\ĝRZD</li>
</ul>
<p id=”footer”>© ListKing</p>
<div id=”slideAd”>
.XS/LVW.LQJ3UR]DMHG\QH]ï
</div>
</div>
<script src=”js/jquery-1.9.1.min.js”></script>
<script src=”js/position.js”></script>
WYNIK
1. %XIRURZDQLHRNQDLUHNODP\
2. 2EOLF]HQLHZ\VRNRĂFLVWUHI\
NRñFRZHMLSU]HFKRZ\ZDQLHWHM
ZDUWRĂFLZ]PLHQQHMRQD]ZLH
endZone
3. =GDU]HQLHscrollSRZRGXMH
Z\ZRïDQLHIXQNFMLDQRQLPRZHM
]DNDĝG\PUD]HPJG\Xĝ\WNRZQLNSU]HZLMD]DZDUWRĂÊZJöUÚ
OXEZGöï
4. .RQVWUXNFMDZDUXQNRZD
VSUDZG]DF]\SRïRĝHQLHELHĝÈFHMHVWGDOHMRGSRF]ÈWNXVWURQ\
QLĝSRF]ÈWHNVWUHI\NRñFRZHM
5. -HĝHOLZDUWRĂFLÈ]ZURWQÈ
konstrukcji warunkowej jest
trueSXGHïNRSU]HVXZDVLÚRG
SUDZHMNUDZÚG]LVWURQ\(IHNW
WUZDPLOLVHNXQG
6. -HĝHOLZDUWRĂFLÈ]ZURWQÈ
konstrukcji warunkowej jest
falseOXESXGHïNR]QDMGXMH
VLÚZĂURGNXDQLPDFMLWRMHVW
]DWU]\P\ZDQH]DSRPRFÈ
PHWRG\.stop()1DVWÚSQLH]]D
SUDZHMNUDZÚG]LVWURQ\Z\VXZD
VLÚUHNODPD(IHNWWHQWUZD
UöZQLHĝPLOLVHNXQG
c07/js/position.js
JAVASCRIPT
2
$(function() {
YDUZLQGRZ ZLQGRZ var $slideAd = $(’#slideAd’);
YDUHQG=RQH ijIRRWHUij RIIVHW
3
ZLQGRZRQ ijVFUROOijIXQFWLRQ
4
5
LI HQG=RQH ZLQGRZVFUROO7RS ^
$slideAd.animate({ ’right’: ’0px’ }, 250);
} else {
$slideAd.stop(true).animate({ ’right’: ’-360px’ }, 250);
}
1
6
WRSZLQGRZKHLJKW ^
});
});
OBLICZENIE STREFY
KOŃCOWEJ
2WRSU]HELHJSURFHVXREOLF]HQLD
Z\VRNRĂFLQDNWöUHMSRZLQQR
SRMDZLÊVLÚSXGHïNR
a)3REUDQLHZ\UDĝRQHMZSLNVHODFKRGOHJïRĂFLRGSRF]ÈWNX
VWURQ\GRSRF]ÈWNXVWRSNL V]DU\
SDVHN b)2GMÚFLHZ\VRNRĂFLYLHZSRUWX
RGREOLF]RQHMZDUWRĂFL
c)2GMÚFLHNROHMQ\FKSLNVHOL
SU]H]QDF]RQ\FKQDREV]DUQD
NWöU\PSXGHïNRSRMDZLVLÚ
ZZLGRNX NRORUUöĝRZ\QD
U\VXQNX 2GOHJïRĂÊQDMDNÈXĝ\WNRZQLN
SU]HZLQÈïVWURQÚZGöïPRĝQD
REOLF]\Ê]DSRPRFÈSROHFHQLD
ZLQGRZ VFUROO7RS -HĝHOLRGOHJïRĂÊMHVWZLÚNV]DRG
WHMQDNWöUHMSRZLQQDSRND]DÊ
VLÚVWUHIDNRñFRZDWRSXGHïNR
VWDMHVLÚZLGRF]QH
-HĝHOLQLHZWHG\SXGHïNRMHVW
Z\S\FKDQHSR]DVWURQÚ
A
B
C
JQUERY 359
SPOSOBY DOŁĄCZANIA
JQUERY NA STRONIE
3OLNM4XHU\PRĝQDSU]HFKRZ\ZDÊZUD]
]SR]RVWDïÈF]ÚĂFLÈZLWU\Q\LQWHUQHWRZHMOXEWHĝ
Xĝ\ÊZHUVMLXGRVWÚSQLDQHMSU]H]LQQHğUP\
-HGQDNZWDNLPSU]\SDGNXQDGDOQDOHĝ\GRïÈF]DÊ
ZHUVMÚDZDU\MQÈ
*G\SRZVWDZDïDWDNVLÈĝND
SRGVWDZRZHVHUZHU\&'1
RIHURZDQHGODM4XHU\WRM4XHU\
&'1 RSDUWHQD0D[&'1 VHUZHU\*RRJOHL0LFURVRIW
ŹRÓDŁO
&RQWHQW'HOLYHU\1HWZRUN
&'1 WRVHULDVHUZHUöZUR]SURV]RQ\FKQDFDï\PĂZLHFLH
=RVWDï\]DSURMHNWRZDQHZFHOX
EDUG]RV]\ENLHJRKRVWLQJX
SOLNöZVWDW\F]Q\FK WDNLFK
MDN+70/&66-DYD6FULSW
REUD]öZPX]\NLLZLGHR 360 JQUERY
&'1SUöEXMHZ\V]XNDÊ
VHUZHU]QDMGXMÈF\VLÚQDMEOLĝHM
Xĝ\WNRZQLNDDQDVWÚSQLH
SU]HND]XMHGDQH]WHJRVHUZHUD
DE\QLHPXVLDï\SRNRQ\ZDÊ]E\W
GXĝHMRGOHJïRĂFL:SU]\SDGNX
M4XHU\SRGF]DVRGZLHG]DQLD
LQQHMZLWU\Q\Xĝ\WNRZQLF\PRJÈ
PLHÊMXĝSREUDQ\L]EXIRURZDQ\
SOLN]&'1
CDN
UŻYTKOWNIK
-HĝHOLGRïÈF]DV]ELEOLRWHNÚ
M4XHU\QDVWURQLHPRĝHV]
VSUöERZDÊZF]\WDÊMÈ]MHGQHJR
]GRVWÚSQ\FKVHUZHUöZ&'1
1DVWÚSQLHVSUDZG]DV]F]\
]RVWDïDZF]\WDQD-HĝHOL
QLHPRĝHV]GRïÈF]\ÊZHUVMÚ
SU]HFKRZ\ZDQÈZHZïDVQ\FK
VHUZHUDFK MHVWWRWDN]ZDQH
UR]ZLÈ]DQLHDZDU\MQH WCZYTANIE JQUERY Z CDN
.LHG\QDVWURQLHLQWHUQHWRZHM
biblioteka jQuery jest wczytyZDQD]&'1F]ÚVWRPRĝQDVLÚ
VSRWNDÊ]HVNïDGQLÈSRGREQÈ
GRSU]HGVWDZLRQHMSRQLĝHM
5R]SRF]\QDVLÚRG]QDF]QLND
<script>RGSRZLHG]LDOQHJR
za wczytanie pliku jQuery
]VHUZHUD&'1=ZUöÊXZDJÚ
ĝHDGUHV85/VNU\SWXUR]SRF]\QDVLÚRGGZöFKXNRĂQLNöZ
DQLHRGhttp:
1D]\ZDVLÚWRDGUHVHP85/
Z]JOÚGQHJRSURWRNRïX-HĝHOL
ELHĝÈFDVWURQDMHVWZF]\WDQD
przez httpsWRQLHZ\ĂZLHWOLVLÚ
NRPXQLNDWREïÚG]LHLQIRUPXMÈF\Xĝ\WNRZQLNDRQLHEH]SLHF]Q\FKHOHPHQWDFK]QDMGXMÈF\FK
VLÚQDVWURQLH8ZDJD to nie
G]LDïDORNDOQLH]SURWRNRïHP
ğOH
%DUG]RF]ÚVWRREHFQ\MHVWMHV]F]HGUXJL]QDF]QLN<script>
]DZLHUDMÈF\RSHUDWRUORJLF]Q\
NWöU\VSUDZG]DF]\ELEOLRWHND
M4XHU\]RVWDïDZF]\WDQD-HĝHOL
QLH]RVWDïDZF]\WDQDSU]HJOÈGDUNDVSUöEXMHZF]\WDÊVNU\SW
M4XHU\]WHJRVDPHJRVHUZHUD
ZNWöU\P]QDMGXMHVLÚSR]RVWDïD
F]ÚĂÊZLWU\Q\
c07/js/position.js
HTML
<script src=”//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js”>
</script>
<script>
ZLQGRZM4XHU\__GRFXPHQWZULWH ijVFULSWVUF ĵMVMTXHU\MVĵ!?VFULSW!ij
</script>
2SHUDWRUORJLF]Q\V]XNDRELHNWX
jQueryXGRVWÚSQLDQHJRSU]H]
VNU\SWM4XHU\-HĝHOLZ\PLHQLRQ\RELHNWLVWQLHMHZDUWRĂFLÈ
]ZURWQÈEÚG]LHtruthy i opeUDWRUORJLF]Q\V]\ENR]DNRñF]\
G]LDïDQLH SDWU]UR]G]LDï
SRGUR]G]LDïķ:DUWRĂFLWUXWK\
LIDOV\ĵ -HĝHOLELEOLRWHNDM4XHU\QLH
]RVWDïDZF]\WDQDPHWRGD
GRFXPHQWZULWH VSRZRGXMH
GRGDQLHQRZHJR]QDF]QLND
<script>QDVWURQLH1RZ\
znacznik wczyta plik biblioteki
M4XHU\]WHJRVDPHJRVHUZHUD
ZNWöU\P]QDMGXMHVLÚSR]RVWDïD
F]ÚĂÊZLWU\Q\
=DVWRVRZDQLHUR]ZLÈ]DQLD
DZDU\MQHJRMHVWZDĝQH
SRQLHZDĝVHUZHU&'1PRĝHE\Ê
QLHGRVWÚSQ\SOLNPöJï]RVWDÊ
SU]HQLHVLRQ\DSRQDGWRSHZQH
NUDMHEORNXMÈZ\EUDQHQD]Z\
GRPHQ QDSU]\NïDG*RRJOH JQUERY 361
GDZIE UMIESZCZAĆ SKRYPTY?
3RïRĝHQLHHOHPHQWöZ<script>PRĝHPLHÊZSï\ZQDWRMDNXĝ\WNRZQLN
SRVWU]HJDV]\ENRĂÊZF]\W\ZDQLDVWURQ\LQWHUQHWRZHM
SZYBKOŚĆ
:SLHUZV]\PRNUHVLHIXQNFMRQRZDQLDLQWHUQHWX
SURJUDPLĂFLXPLHV]F]DOL]QDF]QLNL<script>
ZHOHPHQFLH<head>ZLWU\Q\SRGREQLHMDNDUNXV]H
VW\OöZ-HGQDNWDNLHUR]ZLÈ]DQLHPRĝHZ\ZRïDÊ
ZUDĝHQLHĝHVWURQ\ZF]\WXMÈVLÚZROQR
6WURQDLQWHUQHWRZDPRĝHXĝ\ZDÊSOLNöZSRFKRG]ÈF\FK]ZLHOXUöĝQ\FKPLHMVF QDSU]\NïDG
REUD]\LSOLNL&66PRJÈE\ÊZF]\W\ZDQH]MHGQHJRVHUZHUD&'1ELEOLRWHNDM4XHU\]VHUZHUD&'1
M4XHU\OXE*RRJOHDF]FLRQNL]MHV]F]HLQQHJR =UHJXï\SU]HJOÈGDUNDLQWHUQHWRZDMHGQRF]HĂQLH
SRELHUDPDNV\PDOQLHGZDSOLNL]UöĝQ\FK
VHUZHUöZ-HGQDNSRUR]SRF]ÚFLXSRELHUDQLD
SOLNX-DYD6FULSWQDVWÚSXMH]DWU]\PDQLHSRELHUDQLD
LQQ\FKSOLNöZLZVWU]\PDQLHJHQHURZDQLDVWURQ\
DĝGRFKZLOL]DNRñF]HQLDZF]\W\ZDQLDVNU\SWX
-DYD6FULSWLMHJRSU]HWZRU]HQLD
'ODWHJRWHĝMHĝHOLXPLHĂFLV]VNU\SWQDNRñFXVWURQ\WXĝSU]HG]DP\NDMÈF\P]QDF]QLNLHP</body>
QLHEÚG]LHWRPLDïRZSï\ZXQDJHQHURZDQLH
SR]RVWDïHMF]ÚĂFLVWURQ\
.LHG\W\ONRMHVWWRPRĝOLZH
VWDUDMVLÚSRV]XNLZDÊDOWHUQDW\Z
GODVNU\SWöZ1DSU]\NïDG
NRU]\VWDM]&66GRDQLPDFML
LDWU\EXWX+70/RQD]ZLH
autofocus]DPLDVWXĝ\ZDÊ
]GDU]HQLDloadGRDNW\ZRZDQLD
HOHPHQWX
362 JQUERY
KOD HTML WCZYTANY W DRZEWIE
MODELU DOM
.LHG\VNU\SWX]\VNXMHGRVWÚSGRGRNXPHQWX
+70/QDVWURQLHLQWHUQHWRZHMGRUR]SRF]ÚFLD
G]LDïDQLDWHJRVNU\SWXZ\PDJDQHMHVWDE\+70/
E\ïZF]\WDQ\ZGU]HZLHPRGHOX'20 &]ÚVWRMHVW
WRRNUHĂODQHPLDQHPZF]\WDQLDPRGHOX'20 =GDU]HQLHloadPRĝQDZ\NRU]\VWDÊGRZ\ZRïDQLD
IXQNFMLFRLQIRUPXMHRZF]\WDQLX+70/-HGQDN
]GDU]HQLHWRMHVWZ\ZRï\ZDQHW\ONRSRZF]\WDQLX
VWURQ\LMHMZV]\VWNLFK]DVREöZ:SUDZG]LH
PRĝQDXĝ\Ê]GDU]HQLD+70/DOMContentLoaded
DOHRQRQLHG]LDïDZVWDUV]\FKSU]HJOÈGDUNDFK
WCZYTANY
JESZCZE
NIE WCZYTANY
ul
li
li
li
li
-HĝHOLVNU\SWVSUöEXMHX]\VNDÊGRVWÚSGR
HOHPHQWX]DQLP]RVWDQLHRQZF]\WDQ\QDVWÈSL
Z\JHQHURZDQLHEïÚGX:SRZ\ĝV]\PGLDJUDPLH
VNU\SWPRĝHX]\VNDÊGRVWÚSGRGZöFKSLHUZV]\FK
HOHPHQWöZ<li>DOHQLHGRWU]HFLHJRLF]ZDUWHJR
-HĝHOLZF]\W\ZDQLHVWURQ\
SU]HELHJDZROQRLFKFHV]
XPLHĂFLÊMHG\QLHQLHZLHONÈ
LORĂÊNRGXSU]HGZF]\WDQLHP
SR]RVWDïHMF]ÚĂFLVWURQ\WR
znacznik <script>PRĝHV]
XPLHĂFLÊZHOHPHQFLH<body>
*G\SRZVWDZDïDWDNVLÈĝND
WHFKQLNDWDE\ïDSRZV]HFKQLH
wykorzystywana przez Google
w celu przyspieszenia wczytyZDQLDVWURQ\FKRÊNRGMHVWSU]\
W\PWUXGQLHMV]\ZNRQVHUZDFML
<!DOCTYPE html>
<html>
<head>
WLWOH!3U]\NïDGRZDVWURQDWLWOH!
<link rel=”stylesheet” href=”sample.css” />
<script src=”js/sample.js”></script>
<head>
<body>
K!3U]\NïDGRZDVWURQDK!
GLYLG ĵSDJHĵ!0LHMVFHQD]DZDUWRĂÊVWURQ\GLY!
</body>
</html>
W ELEMENCIE <head>
7HJRSRïRĝHQLDQDMOHSLHMXQLNDÊ
SRQLHZDĝ
1.0RĝQDRGQLHĂÊZUDĝHQLHĝHVWURQ\
VÈZROQRZF]\W\ZDQH
2.=DZDUWRĂÊPRGHOX'20QLHMHVW
ZF]\WDQDZPRPHQFLHZ\NRQ\ZDQLD
VNU\SWX.RQLHF]QHMHVWZLÚFZVWU]\PDQLHVLÚ]XUXFKDPLDQLHPIXQNFML
DĝGRZ\ZRïDQLD]GDU]HQLDWDNLHJR
jak load lub DOMContentLoaded
-HĝHOLPXVLV]Xĝ\Ê]QDF]QLND
<script>ZHOHPHQFLH<head>
WRXPLHĂÊJRWXĝSU]HG]DP\NDMÈF\P
]QDF]QLNLHP</head>
<!DOCTYPE html>
<html>
<head>
WLWOH!3U]\NïDGRZDVWURQDWLWOH!
<link rel=”stylesheet” href=”sample.css” />
<head>
<body>
K!3U]\NïDGRZDVWURQDK!
<script src=”js/sample.js”></script>
GLYLG ĵSDJHĵ!0LHMVFHQD]DZDUWRĂÊVWURQ\GLY!
</body>
</html>
<!DOCTYPE html>
<html>
<head>
WLWOH!3U]\NïDGRZDVWURQDWLWOH!
<link rel=”stylesheet” href=”sample.css” />
<head>
<body>
K!3U]\NïDGRZDVWURQDK!
GLYLG ĵSDJHĵ!0LHMVFHQD]DZDUWRĂÊVWURQ\GLY!
<script src=”js/sample.js”></script>
</body>
</html>
W ELEMENCIE <body>
3RGREQLHMDNZSU]\SDGNXVNU\SWöZ
ZHOHPHQFLH<head>XPLHV]F]HQLH
VNU\SWXSRĂURGNXHOHPHQWX<body>
VSRZRGXMHVSRZROQLHQLHZF]\W\ZDQLD
SR]RVWDïHMF]ÚĂFLVWURQ\
-HĝHOLXĝ\ZDV]Z\ZRïDQLD
GRFXPHQWZULWH HOHPHQW
<script>SRZLQLHQ]QDMGRZDÊ
VLÚZPLHMVFXZNWöU\PPDVLÚ
SRMDZLÊ]DZDUWRĂÊ7RMHVWMHGHQ
]ZLHOXGREU\FKSRZRGöZGOD
NWöU\FKQDOHĝ\XQLNDÊVWRVRZDQLD
GRFXPHQWZULWH PRZED ZAMYKAJĄCYM
ZNACZNIKIEM </body>
7RMHVWLGHDOQHPLHMVFHQDZF]\WDQLH
VNU\SWXSRQLHZDĝ
1.6NU\SWQLHEORNXMHZF]\W\ZDQLD
SR]RVWDï\FKNRPSRQHQWöZVWURQ\
2.=DQLPGRMG]LHGRXUXFKRPLHQLD
VNU\SWXPRGHO'20MHVWMXĝ
ZF]\WDQ\
JQUERY 363
DOKUMENTACJA JQUERY
'RNïDGQÈOLVWÚIXQNFMLRIHURZDQ\FKSU]H]M4XHU\
]QDMG]LHV]ZZLWU\QLHhttp://api.jquery.com/
1LHPDPRĝOLZRĂFLSU]HGVWDZLHQLDFDïHM
IXQNFMRQDOQRĂFLM4XHU\ZMHGQ\PUR]G]LDOH
QDZHWWDNGïXJLPMDNWHQ3R]QDïHĂWXWDMZLHOH
QDMSRSXODUQLHMV]\FKIXQNFMLLSRZLQLHQHĂPLHÊMXĝ
Z\VWDUF]DMÈFÈZLHG]ÚRM4XHU\DE\]UR]XPLHÊ
VSRVöEG]LDïDQLDELEOLRWHNLLSRWUDğÊZ\NRU]\VWDÊ
MÈZHZïDVQ\FKVNU\SWDFK
:SR]RVWDï\FKUR]G]LDïDFKNVLÈĝNL]REDF]\V]
NROHMQHSU]\NïDG\RSDUWHQDWHMELEOLRWHFH
KORZYSTANIE Z DOKUMENTACJI
*G\Z\ĂZLHWODV]ZLWU\QÚ]GRNXPHQWDFMÈSR
OHZHMVWURQLHPDV]UöĝQHW\S\IXQNFMRQDOQRĂFL
]NWöU\PLPRĝHV]VLÚ]DSR]QDÊ
-HĂOLNOLNQLHV]GRZROQÈPHWRGÚZNROXPQLH
JïöZQHMZ\ĂZLHWOLVLÚOLVWDSDUDPHWUöZSU]\MPRZDQ\FKSU]H]WÚPHWRGÚ3DUDPHWU\RSFMRQDOQHVÈ
SRGDZDQHZQDZLDVDFKNZDGUDWRZ\FK
:GRNXPHQWDFML]QDMG]LHV]WDNĝHPHWRG\
SU]HVWDU]DïH8ĝ\FLHWHJRURG]DMXPHWRGMHVW
RGUDG]DQHSRQLHZDĝSUDZGRSRGREQLH]RVWDQÈ
XVXQLÚWHZSU]\V]ï\FKZHUVMDFKM4XHU\ RLOHQLH
]RVWDï\MXĝXVXQLÚWH 364 JQUERY
=GRE\WDGRWÈGZLHG]DSRZLQQD&LZ\VWDUF]\Ê
GRUR]SRF]ÚFLDSUDF\]REV]HUQÈLGRNïDGQÈ
GRNXPHQWDFMÈM4XHU\NWöUÈ]QDMG]LHV]ZZLWU\QLH
http://api.jquery.com/
:LWU\QDGRNXPHQWDFML]DZLHUDLQIRUPDFMHQD
WHPDWZV]\VWNLFKGRVWÚSQ\FKPHWRGLZïDĂFLZRĂFLZW\PUöZQLHĝQRZ\FKIXQNFMLGRGDQ\FK
ZQDMQRZV]\FKZ\GDQLDFKELEOLRWHNL3RQDGWR
ZGRNXPHQWDFML]QDMG]LHV]LQIRUPDFMHRIXQNFMDFKNWöU\FKREVïXJDEÚG]LHSRU]XFRQD
ROZSZERZENIE JQUERY
ZA POMOCĄ WTYCZEK
:W\F]NLWRSRSURVWXVNU\SW\UR]V]HU]DMÈFHIXQNFMRQDOQRĂÊELEOLRWHNLM4XHU\
'RVWÚSQHVÈVHWNLZW\F]HNJRWRZ\FKGRXĝ\FLD
:W\F]NLRIHUXMÈIXQNFMRQDOQRĂÊQLHGRVWÚSQÈ
ZELEOLRWHFHM4XHU\=UHJXï\VÈSU]H]QDF]RQHGR
Z\NRQ\ZDQLDRNUHĂORQ\FK]DGDñQDSU]\NïDG
WZRU]HQLDSRND]XVODMGöZRGWZDU]DQLDZLGHR
SU]\JRWRZ\ZDQLDDQLPDFMLWUDQVIRUPDFMLGDQ\FK
XVSUDZQLDQLDIRUPXODU]\VLHFLRZ\FKLZ\ĂZLHWODQLDQRZ\FKGDQ\FKSRFKRG]ÈF\FK]H]GDOQHJR
VHUZHUD
:W\F]NLVÈWZRU]RQHZWDNLVSRVöEDE\QRZH
PHWRG\UR]V]HU]Dï\RELHNWjQueryLW\PVDP\P
PRJï\E\ÊVWRVRZDQHZGRSDVRZDQ\P]ELRU]H
-HĝHOLZLHV]MDNZ\NRQDÊSRQLĝV]HRSHUDFMH
ZM4XHU\
2GZLHGěZLWU\QÚhttp://plugins.jquery.com/
DE\]REDF]\ÊLOHMHVWGRVWÚSQ\FKZW\F]HNLMDNL
MHVWLFK]DNUHV:V]\VWNLHPRĝQDEH]SïDWQLH
SRELHUDÊLZ\NRU]\VW\ZDÊZHZïDVQ\FKZLWU\QDFKLQWHUQHWRZ\FK,VWQLHMÈWDNĝHZLWU\Q\
RIHUXMÈFHSïDWQHZW\F]NLM4XHU\ QDSU]\NïDG
http://codecanyon.net/ WRRJURPQÈF]ÚĂÊIXQNFMRQDOQRĂFLZW\F]HNPRĝHV]
Z\NRU]\VWDÊEH]NRQLHF]QRĂFLVDPRG]LHOQHJR
WZRU]HQLDNRGX:UR]G]LDOH]QDMG]LHV]
SU]\NïDGXWZRU]HQLDSURVWHMZW\F]NLM4XHU\
• Z\ELHUDÊHOHPHQW\
• Z\ZRï\ZDÊPHWRG\LXĝ\ZDÊSDUDPHWUöZ
JAK WYBRAĆ WTYCZKĘ?
3RGF]DVZ\ERUXZW\F]NLZDUWRVSUDZG]LÊF]\
QDGDOMHVWUR]ZLMDQDRUD]F]\LQQLXĝ\WNRZQLF\
QDSRWNDOLMDNLHNROZLHN]ZLÈ]DQH]QLÈSUREOHP\
3RPRFQHPRĝHE\Ê]DSR]QDQLHVLÚ]QDVWÚSXMÈF\PLLQIRUPDFMDPL
• .LHG\RVWDWQLRXDNWXDOQLRQRZW\F]NÚ"
• ,OHRVöEREVHUZXMHGDQÈZW\F]NÚ"
• &RPRĝQD]QDOHěÊZUDSRUWDFKEïÚGöZ"
-HĝHOL]QDMG]LHV]EïÈGZVNU\SFLHL]DGDMHV]
S\WDQLHWRSDPLÚWDMĝHDXWRU]\ZW\F]HNF]ÚVWR
PDMÈVZRMÈSUDFÚL]DMPXMÈVLÚQLPLZF]DVLH
ZROQ\PDE\SRPöFLQQ\PLPLHÊZNïDGZUR]ZöM
VSRïHF]QRĂFL
JQUERY 365
BIBLIOTEKI JAVASCRIPT
M4XHU\WRSU]\NïDGWHJRFRSURJUDPLĂFLQD]\ZDMÈELEOLRWHNÈ-DYD6FULSW
7RSRSURVWXSOLN-DYD6FULSWGRïÈF]DQ\QDVWURQLH
3RMHJRZF]\WDQLXPDV]GRVWÚSGR]GHğQLRZDQ\FKZELEOLRWHFHIXQNFML
RELHNWöZPHWRGLZïDĂFLZRĂFL
.RQFHSFMDELEOLRWHNLSROHJDQD
W\PĝHSR]ZDODSRĝ\F]DÊNRG
]MHGQHJRSOLNXDQDVWÚSQLH
Xĝ\ZDÊMHJRIXQNFMLRELHNWöZ
PHWRGLZïDĂFLZRĂFLZLQQ\P
VNU\SFLH
3RGRïÈF]HQLXVNU\SWXQD
VWURQLHMHJRIXQNFMRQDOQRĂÊ
MHVWJRWRZDGRXĝ\FLD6SRVöE
wykorzystania biblioteki
]QDMG]LHV]ZSRĂZLÚFRQHMMHM
GRNXPHQWDFML
M4XHU\WRQDMF]ÚĂFLHMXĝ\ZDQD
ELEOLRWHNDZLQWHUQHFLH.LHG\
MÈSR]QDV]PRĝHV]VSUöERZDÊ
VNRU]\VWDÊWDNĝH]LQQ\FK
Z\PLHQLRQ\FKSRQLĝHMELEOLRWHN
=DOHWÈSRSXODUQ\FKELEOLRWHN
MHVWWRĝHVÈGRNïDGQLH
SU]HWHVWRZDQH1DGQLHNWöU\PL
SUDFXMÈFDïH]HVSRï\SURJUDPLVWöZ]DMPXMÈF\FKVLÚW\P
ZZROQ\PF]DVLH
-HGQÈ]SRGVWDZRZ\FKZDG
ELEOLRWHNMHVWWRĝHQDMF]ÚĂFLHM
]DZLHUDMÈWDNĝHQLHSRWU]HEQÈ
&LIXQNFMRQDOQRĂÊ2]QDF]D
WRNRQLHF]QRĂÊSREUDQLD
QLHSRWU]HEQHJRNRGX FRPRĝH
VSRZROQLÊG]LDïDQLHZLWU\Q\ 5R]ZLÈ]DQLHPMHVWVNRSLRZDQLH
i wykorzystanie tylko interesuMÈFHJR&LÚIUDJPHQWXELEOLRWHNL
OXEZUÚF]VDPRG]LHOQHSU]\JRWRZDQLHVNU\SWXZ\NRQXMÈFHJR
WR]DGDQLH
MODEL DOM I ZDARZENIA
INTERFEJS UŻYTKOWNIKA
GRAFIKA I WYKRESY
=HSWRMV
YUI
'RMRMV
0RR7RROVMV
jQuery UI
M4XHU\0RELOH
7ZLWWHU%RRWVWUDS
YUI
&KDUWMV
'MV
3URFHVVLQJMV
5DSKDHOMV
SZABLONY
APLIKACJE SIECIOWE
0XVWDFKHMV
+DQGOHEDUVMV
M4XHU\0RELOH
$QJXODUMV
%DFNERQHMV
(PEHUMV
ZAPEWNIENIE
ZGODNOŚCI
366 JQUERY
0RGHUQL]UMV
<HS1RSHMV
5HTXLUHMV
UNIKANIE KONFLIKTÓW
Z INNYMI BIBLIOTEKAMI
:F]HĂQLHMZUR]G]LDOHGRZLHG]LDïHĂVLÚĝH$()MHVWVNUöWHPGODjQuery()
=QDN$MHVWXĝ\ZDQ\WDNĝHSU]H]LQQHELEOLRWHNLQDSU]\NïDGSURWRW\SHMV
0RR7RROVL<8,$E\XQLNQÈÊNRQĠLNWöZPLÚG]\VNU\SWDPLQDOHĝ\VWRVRZDÊ
Z\PLHQLRQHSRQLĝHMWHFKQLNL
DOŁĄCZENIE JQUERY PO INNYCH
BIBLIOTEKACH
DOŁĄCZENIE JQUERY PRZED INNYMI
BIBLIOTEKAMI
3RQLĝHMSLHUZV]HñVWZREÚG]LHPLDïRXĝ\FLH]QDNX
$SU]H]M4XHU\
3RQLĝHMSLHUZV]HñVWZREÚG]LHPLDïRXĝ\FLH]QDNX
$SU]H]LQQHVNU\SW\
<script src=”inna-biblioteka.js”></script>
<script src=”jquery.js”></script>
<script src=”jquery.js”></script>
<script src=”inna-biblioteka.js”></script>
1DSRF]ÈWNXVNU\SWXPRĝQD]DVWRVRZDÊPHWRGÚ
QR&RQĠLFW LQDND]DÊ]ZROQLHQLHVNUöWX$DE\
PöJïE\ÊZ\NRU]\VW\ZDQ\SU]H]LQQHVNU\SW\
1DVWÚSQLHQDOHĝ\Xĝ\ZDÊSHïQHMQD]Z\IXQNFML
]DPLDVWMHMVNUöWX
=QDN$PDWXWDM]QDF]HQLH]GHğQLRZDQHZLQQHM
ELEOLRWHFH3RQDGWRQLHWU]HEDVWRVRZDÊPHWRG\
QR&RQĠLFW SRQLHZDĝQLHEÚG]LHPLDïD
ĝDGQHJRHIHNWX-HGQDNQDGDOPRĝQDXĝ\ZDÊ
SHïQHMQD]Z\jQuery
M4XHU\QR&RQĠLFW jQuery(function() {
jQuery(’div’).hide();
});
jQuery(document).ready(function() {
jQuery(’div’).hide();
});
6NU\SWPRĝQDRSDNRZDÊZ,,)(LW\PVDP\P
]DFKRZDÊPRĝOLZRĂÊ]DVWRVRZDQLD$
,VWQLHMHPRĝOLZRĂÊSU]HND]DQLD$MDNRDUJXPHQWX
IXQNFMLDQRQLPRZHMZ\ZRï\ZDQHMSU]H]PHWRGÚ
.ready()QDSU]\NïDGZQDVWÚSXMÈF\VSRVöE
M4XHU\QR&RQĠLFW (function($) {
$(’div’).hide();
})(jQuery);
jQuery(document).ready(function($) {
$(’div’).hide();
});
(ZHQWXDOQLHPRĝQDZVND]DÊZïDVQ\DOLDVQD
SU]\NïDG$j
3RQLĝHMSU]HGVWDZLRQRRGSRZLHGQLNSRZ\ĝV]HJR
NRGX
YDUM M4XHU\QR&RQĠLFW $j(document).ready(function() {
$j(’div’).hide();
});
jQuery(function($){
$(’div’).hide();
});
JQUERY 367
JQUERY
PRZYKŁAD
JQUERY
:W\PSU]\NïDG]LHZ\NRU]\VWDQRZLHOHWHFKQLN
SU]HGVWDZLRQ\FKZUR]G]LDOH%XGXMHP\WXOLVWÚ
GRNWöUHMXĝ\WNRZQLNPRĝHGRGDZDÊQRZHHOHPHQW\DWDNĝHXVXZDÊ]QLHMLVWQLHMÈFH
• 8ĝ\WNRZQLNPDPRĝOLZRĂÊGRGDZDQLDQRZ\FKHOHPHQWöZOLVW\
• 8ĝ\WNRZQLNPRĝHNOLNQÈÊHOHPHQWLW\PVDP\PZVND]DÊZ\NRQD•
QLHGDQHJR]DGDQLD 3RNOLNQLÚFLXHOHPHQW]RVWDQLHSU]HQLHVLRQ\
QDNRQLHFOLVW\LR]QDF]RQ\MDNRZ\NRQDQ\ 3RQRZQHNOLNQLÚFLHHOHPHQWXZVND]XMÈFHJRZ\NRQDQH]DGDQLH
VSRZRGXMHXVXQLÚFLHHOHPHQWX]OLVW\
1DJïöZHNOLVW\]DZLHUDXDNWXDOQLRQÈOLF]EÚHOHPHQWöZ]QDMGXMÈF\FK
VLÚQDOLĂFLH
-DNPRĝHV]]REDF]\ÊZSU]\NïDG]LHNRGRSDUW\QDM4XHU\MHVW
]QDF]QLH]ZLÚěOHMV]\QLĝJG\E\SRZVWDïMHG\QLHZ-DYD6FULSW
3RQDGWRELEOLRWHNDM4XHU\]DMPXMHVLÚZV]HONLPLQLHVSöMQRĂFLDPL
Z\VWÚSXMÈF\PLPLÚG]\SU]HJOÈGDUNDPLLQWHUQHWRZ\PLLQLHSRWU]HEQH
MHVWĝDGQHGRGDWNRZHUR]ZLÈ]DQLHDZDU\MQH
3RQLHZDĝGROLVW\PRJÈE\ÊGRGDZDQHQRZHHOHPHQW\]GDU]HQLDVÈ
REVïXJLZDQH]DSRPRFÈGHOHJDFML]GDU]Hñ*G\Xĝ\WNRZQLNNOLNQLH
GRZROQHPLHMVFHHOHPHQWX<ul>PHWRGD.on()SU]\VWÚSXMHGR
REVïXJL]GDU]HQLD:HZQÈWU]SURFHGXU\REVïXJL]GDU]Hñ]QDMGXMH
VLÚNRQVWUXNFMDZDUXQNRZDVSUDZG]DMÈFDF]\]DGDQLHZGDQ\P
HOHPHQFLHOLVW\
• QLH]RVWDïRMHV]F]HZ\NRQDQHĽZWDNLPSU]\SDGNXNOLNQLÚFLH
•
SRZRGXMHR]QDF]HQLH]DGDQLDMDNRZ\NRQDQHJRSU]HVXQLÚFLHJR
QDNRQLHFOLVW\LXDNWXDOQLHQLHOLF]QLND
]RVWDïRZ\NRQDQHĽZWDNLPSU]\SDGNXGUXJLHNOLNQLÚFLH
HOHPHQWXSRZRGXMHMHJRXNU\FLHLRVWDWHF]QHXVXQLÚFLH]OLVW\
8ĝ\FLHNRQVWUXNFMLZDUXQNRZHMLZïDVQ\FKIXQNFML GRREVïXJLOLF]QLND SRND]XMHMDNWHFKQLNLM4XHU\VÈZ\NRU]\VW\ZDQHZSRïÈF]HQLX
]WUDG\F\MQ\PMÚ]\NLHP-DYD6FULSWNWöU\SR]QDMHV]ZWHMNVLÈĝFH
3RMDZLDQLHVLÚLXVXZDQLHHOHPHQWöZMHVWDQLPRZDQHDDQLPDFMH
WHSRND]XMÈMDNPRĝQDïÈF]\ÊPHWRG\ZFHOXWZRU]HQLDVNRPSOLNRZDQ\FKLQWHUDNFMLNWöUHPDMÈ]DFKRG]LÊZW\FKVDP\FKZ\EUDQ\FK
HOHPHQWDFK
JQUERY 369
PRZYKŁAD
JQUERY
c07/js/example.js
JAVASCRIPT
$(function() {
.RQğJXUDFMD
YDUOLVWQHZ,WHP)RUPQHZ,WHP%XWWRQ
var item = ’’;
7D]PLHQQDHOHPHQWX]DZLHUDSXVW\FLÈJWHNVWRZ\
$list = $(’ul’);
%XIRURZDQLHQLHXSRU]ÈGNRZDQHMOLVW\
QHZ,WHP)RUP ijQHZ,WHP)RUPij %XIRURZDQLHIRUPXODU]DGRGDZDQLDQRZHJRHOHPHQWX
QHZ,WHP%XWWRQ ijQHZ,WHP%XWWRQij %XIRURZDQLHSU]\FLVNXSRND]XMÈFHJRIRUPXODU]
$(’li’).hide().each(function(index) {
8NU\FLHHOHPHQWöZOLVW\
$(this).delay(450 * index).fadeIn(1600);
$QDVWÚSQLHLFKSRND]DQLH
});
// Licznik elementów.
function updateCount() {
'HNODUDFMDIXQNFML
var items = $(’li[class!=complete]’).length; /LF]EDHOHPHQWöZ]QDMGXMÈF\FK
VLÚQDOLĂFLH */
$(’#counter’).text(items);
8PLHV]F]HQLHOLF]E\ZQDJïöZNX
}
updateCount();
:\ZRïDQLHIXQNFML
.RQğJXUDFMDIRUPXODU]DGRGDZDQLDQRZHJRHOHPHQWX
QHZ,WHP%XWWRQVKRZ 3RND]DQLHSU]\FLVNX
QHZ,WHP)RUPKLGH 8NU\FLHIRUPXODU]D
ijVKRZ)RUPij RQ ijFOLFNijIXQFWLRQ ^3RNOLNQLÚFLXQRZHJRHOHPHQWX
QHZ,WHP%XWWRQKLGH 8NU\FLHSU]\FLVNX
QHZ,WHP)RUPVKRZ 3RND]DQLHIRUPXODU]D
});
']LDïDQLHVNU\SWXMHVW
ZVWU]\PDQHDĝGRFKZLOL
ZF]\WDQLDFDïHJRPRGHOX'20
SRQLHZDĝZ\ZRïDQLH]QDMGXMH
VLÚZVNUöFLHGODPHWRG\
document.ready()7ZRU]RQH
VÈ]PLHQQHSU]H]QDF]RQHGR
Xĝ\FLDZVNU\SFLHPLÚG]\
LQQ\PLHOHPHQW\Z\EUDQHSU]H]
M4XHU\NWöUHWU]HEDEXIRURZDÊ
370
JQUERY
Funkcja updateCount()
VSUDZG]DLOHHOHPHQWöZ]QDMGXMHVLÚQDOLĂFLHDQDVWÚSQLH
Z\ĂZLHWODWÚOLF]EÚZQDJïöZNX
)XQNFMDWDMHVWZ\ZRï\ZDQD
QDW\FKPLDVWZFHOXREOLF]HQLD
OLF]E\HOHPHQWöZOLVW\ZWUDNFLH
ZF]\W\ZDQLDOLVW\DOLF]EDMHVW
Z\ĂZLHWODQDRERNQDJïöZND
)RUPXODU]SU]H]QDF]RQ\GR
GRGDZDQLDQRZ\FKHOHPHQWöZ
OLVW\MHVWXNU\W\SRGF]DVZF]\W\ZDQLDVWURQ\LZ\ĂZLHWODQ\
JG\Xĝ\WNRZQLNNOLNQLHSU]\FLVN
GRGDQLDQRZHJRHOHPHQWX
3RNOLNQLÚFLXWHJRSU]\FLVNX
SU]H]Xĝ\WNRZQLNDQDVWÚSXMH
GRGDQLHQRZHJRHOHPHQWXLZ\ZRïDQLHIXQNFMLupdateCount()
PRZYKŁAD
JQUERY
c07/js/example.js
JAVASCRIPT
'RGDQLHQRZHJRHOHPHQWXOLVW\
QHZ,WHP)RUPRQ ijVXEPLWijIXQFWLRQ H ^.LHG\QRZ\HOHPHQW]RVWDQLHSU]HND]DQ\
e.preventDefault();
8QLHPRĝOLZLHQLHZ\VïDQLDIRUPXODU]D
var text = $(’input:text’).val();
3REUDQLHZDUWRĂFLSRODWHNVWRZHJR
$list.append(’<li>’ + text + ’</li>’);
'RGDQLHHOHPHQWXQDNRñFXOLVW\
$(’input:text’).val(’’);
2SUöĝQLHQLHSRODWHNVWRZHJR
updateCount();
8DNWXDOQLHQLHOLF]QLND
});
2EVïXJDNOLNQLÚFLDXĝ\ZDQDMHVWGHOHJDFMDZHOHPHQFLHXO!
$list.on(’click’, ’li’, function() {
var $this = $(this);
%XIRURZDQLHHOHPHQWXZRELHNFLHM4XHU\
var complete = $this.hasClass(’complete’); &]\]DGDQLH]RVWDïRZ\NRQDQH"
if (complete === true) {
$this.animate({
6SUDZG]HQLHF]\]DGDQLH]RVWDïRZ\NRQDQH
-HĝHOLWDNDQLPXMHP\ZïDĂFLZRĂFLRSDFLW\
// i padding.
opacity: 0.0,
paddingLeft: ’+=180’
`ijVZLQJijIXQFWLRQ ^
8ĝ\FLHIXQNFMLZ\ZRïDQLD]ZURWQHJRSR]DNRñF]HQLXDQLPDFML
$this.remove();
&DïNRZLWHXVXQLÚFLHGDQHJRHOHPHQWX
});
} else {
:SU]HFLZQ\PUD]LHR]QDF]DP\]DGDQLHMDNRZ\NRQDQH
item = $this.text();
3REUDQLHWHNVWX]HOHPHQWXOLVW\
$this.remove();
8VXQLÚFLHHOHPHQWXOLVW\
$list
'RGDQLHHOHPHQWX]SRZURWHPQDNRñFXOLVW\MDNR]DGDQLDZ\NRQDQHJR
DSSHQG ijOLFODVV ?ĵFRPSOHWH?ĵ!ijLWHPijOL!ij
.hide().fadeIn(300);
8NU\FLHHOHPHQWXDE\PöJïVLÚSöěQLHMSRMDZLÊ
updateCount();
8DNWXDOQLHQLHOLF]QLND
}
.RQLHFEORNXHOVH
});
.RQLHFSURFHGXU\REVïXJL]GDU]Hñ
});
0HWRGD.on()QDVïXFKXMH
F]\Xĝ\WNRZQLNNOLNQÈï
OLVWÚSRQLHZDĝVNU\SWVWRVXMH
GHOHJDFMÚ]GDU]Hñ*G\QDVWÈSL
NOLNQLÚFLHOLVW\NOLNQLÚW\HOHPHQW
MHVWSU]HFKRZ\ZDQ\ZRELHNFLH
M4XHU\LEXIRURZDQ\Z]PLHQQHM
o nazwie $this
:NROHMQ\PNURNXNRGVSUDZG]DF]\HOHPHQWPDNODVÚ
o nazwie complete-HĝHOLWDN
Xĝ\WNRZQLNZLG]LDQLPDFMÚ
HOHPHQWX]QLNDMÈFHJR]ZLGRNX
DQDVWÚSQLHHOHPHQWMHVWXVXZDQ\]OLVW\:SU]\SDGNXEUDNX
klasy completeHOHPHQW]RVWDMH
SU]HQLHVLRQ\QDNRQLHFOLVW\
3RXPLHV]F]HQLXHOHPHQWXQD
NRñFXOLVW\MHJRDWU\EXWclass
RWU]\PXMHZDUWRĂÊcomplete
1DNRñFXQDVWÚSXMHZ\ZRïDQLH
funkcji updateCount() w celu
XDNWXDOQLHQLDOLF]E\HOHPHQWöZ
SR]RVWDï\FKQDOLĂFLH
JQUERY
371
PODSUMOWANIE
f M4XHU\WRSOLN-DYD6FULSWNWöU\GRïÈF]DV]QDVWURQDFK
LQWHUQHWRZ\FK
f 'RïÈF]RQ\SOLNSR]ZDODQDV]\EV]HLïDWZLHMV]HWZRU]HQLH
NRGX-DYD6FULSWG]LDïDMÈFHJRZUöĝQ\FKSU]HJOÈGDUNDFK
LQWHUQHWRZ\FK2SLHUDVLÚWRQDGZöFKNURNDFK
1.8ĝ\FLHVHOHNWRUöZ&66ZFHOXZ\EUDQLDMHGQHJROXEZLÚFHM
ZÚ]ïöZGU]HZDPRGHOX'20
2.8ĝ\FLHZEXGRZDQ\FKPHWRGM4XHU\GRSUDF\]Z\EUDQ\PL
HOHPHQWDPL
f 6NïDGQLDVHOHNWRUDVW\OX&66SR]ZDODQDïDWZHZ\ELHUDQLH
HOHPHQWöZSU]H]QDF]RQ\FKGRGDOV]HMSUDF\3RQDGWR
ELEOLRWHNDRIHUXMHPHWRG\XïDWZLDMÈFHQDZLJDFMÚSRPRGHOX
'20
f M4XHU\XïDWZLDREVïXJÚ]GDU]HñSRQLHZDĝPHWRG\]GDU]Hñ
G]LDïDMÈZHZV]\VWNLFKSU]HJOÈGDUNDFK
f M4XHU\RIHUXMHPHWRG\SR]ZDODMÈFHV]\ENRLïDWZRZ\NRQDÊ
ZLHOH]DGDñNWöUHQDMF]ÚĂFLHMPXV]ÈE\ÊSU]HSURZDG]DQH
SU]H]SURJUDPLVWöZ-DYD6FULSW
372 JQUERY
8
AJAX I JSON
Ajax to technika wczytywania danych we fragmencie strony
EH]SRWU]HE\RGĂZLHĝDQLDMHMFDïRĂFL'DQHVÈQDMF]ÚĂFLHM
dostarczane w formacie o nazwie JSON
DQJJavaScript Object Notation 0RĝOLZRĂÊZF]\WDQLDQRZHM]DZDUWRĂFLW\ONRQDF]ÚĂFLVWURQ\]QDF]QLHSRSUDZLDZUDĝHQLD
Xĝ\WNRZQLNDSRQLHZDĝQLHPXVLRQRF]HNLZDÊQDRGĂZLHĝHQLHFDïHMVWURQ\ZFHOXXDNWXDOQLHQLDW\ONRMHMIUDJPHQWX'RSURZDG]LïRWRGRSRZVWDQLDWDN]ZDQ\FKDSOLNDFMLLQWHUQHWRZ\FK
ZSRVWDFLSRMHG\QF]\FKVWURQ QDU]ÚG]LDLQWHUQHWRZHSU]\SRPLQDMÈFHZG]LDïDQLXWUDG\F\MQH
RSURJUDPRZDQLHFKRÊXUXFKDPLDQHZSU]HJOÈGDUFHLQWHUQHWRZHM :W\PUR]G]LDOH]RVWDQÈ
RPöZLRQHQDVWÚSXMÈFH]DJDGQLHQLD
374
CO TO JEST AJAX?
FORMATY DANYCH
JQUERY I AJAX
$MD[SR]ZDODQDĝÈGDQLH
danych z serwera oraz wczyWDQLHLFKEH]NRQLHF]QRĂFL
RGĂZLHĝHQLDFDïHMVWURQ\
6HUZHU\]Z\NOHZ\V\ïDMÈ
GDQHZIRUPDWDFK+70/
XML i JSON — formaty te
SR]QDV]ZW\PUR]G]LDOH
M4XHU\XïDWZLDZ\NRQ\ZDQLH
ĝÈGDñ$MD[RUD]SU]HWZDrzanie danych zwróconych
SU]H]VHUZHU
AJAX I JSON
AJAX I JSON
375
CO TO JEST AJAX?
=WHFKQRORJLÈ$MD[PRJïHĂVLÚ]HWNQÈÊZZLHOXZLWU\QDFKLQWHUQHWRZ\FK
QDZHWMHĂOLQLHZLHG]LDïHĂRMHM]DVWRVRZDQLX
Moog Music Inc. @moogmusicinc
multimoog
multimoog for sale
multimodal
:\V]XNLZDQLHQDĝ\ZR OXEDXWRPDW\F]QHX]XSHï
QLDQLH QDMF]ÚĂFLHMRSLHUDVLÚQDWHFKQRORJLL$MD[
)XQNFMÚWDNLHJRZ\V]XNLZDQLDRIHUXMHPLÚG]\
LQQ\PL*RRJOH*G\ZSURZDG]DV]Z\UDĝHQLD
ZSROXZ\V]XNLZDQLDQDVWURQLHJïöZQHM*RRJOH
F]DVDPLRWU]\PXMHV]Z\QLNL]DQLP]DNRñF]\V]
ZSLV\ZDQLHWHNVWX
Urodzeni tego dnia w 1896 roku: Léon
Theremin, fizyk, szpieg i wynalazca
jednego z pierwszych elektronicznych
instrumentów muzycznych
pic.twitter.com/theremin
:LWU\Q\LQWHUQHWRZH]DZLHUDMÈFHWUHĂÊJHQHURZDQÈ
SU]H]Xĝ\WNRZQLNöZQDSU]\NïDG7ZLWWHUL)OLFNU
PRJÈSR]ZDODÊQDZ\ĂZLHWODQLHWHMWUHĂFL WDNLFK
MDNQDMQRZV]\WZHHWOXE]GMÚFLD QDLQQ\FK
ZLWU\QDFKFRZLÈĝHVLÚ]SRELHUDQLHPLQIRUPDFML
]VHUZHUöZZ\PLHQLRQ\FKXVïXJ
Wybierz nazwę użytkownika
1 produkt dodano do koszyka
wyświetl koszyk
Czasami podczas zakupów internetowych
GRGDMHV]SURGXNWGRNRV]\NDNWöU\]RVWDMH
XDNWXDOQLRQ\EH]RSXV]F]DQLDELHĝÈFHMVWURQ\
-HGQRF]HĂQLHZLWU\QDPRĝHZ\ĂZLHWOLÊNRPXQLNDW
SRWZLHUG]DMÈF\GRGDQLHSURGXNWXGRNRV]\ND
Ta nazwa użytkownika jest zajęta.
Wypróbujesz inną?
Dostępna: minimoog70
*G\UHMHVWUXMHV]NRQWRXĝ\WNRZQLNDZZLWU\QLH
]DQLPXNRñF]\V]Z\SHïQLDQLHFDïHJRIRUPXODU]D
VLHFLRZHJRVNU\SWPRĝHVSUDZG]LÊF]\Z\EUDQD
QD]ZDXĝ\WNRZQLNDMHVWGRVWÚSQD
:LWU\Q\LQWHUQHWRZHPRJÈNRU]\VWDÊ]WHFKQRORJLL$MD[GRZF]\W\ZDQLDGDQ\FKZWOHDE\PRJï\E\Ê
Xĝ\WHOXEZ\ĂZLHWORQHSöěQLHM
376
AJAX I JSON
DLACZEGO UŻYWAĆ
TECHNOLOGII AJAX?
$MD[Z\NRU]\VWXMHPRGHOSU]HWZDU]DQLDDV\QFKURQLF]QHJR2]QDF]DWR
ĝHXĝ\WNRZQLNPRĝHZ\NRQ\ZDÊLQQH]DGDQLDJG\SU]HJOÈGDUNDLQWHUQHWRZD
RF]HNXMHQDZF]\WDQLHGDQ\FK']LÚNLWHPXXĝ\WNRZQLNPDOHSV]HZUDĝHQLD
UŻYCIE TECHNOLOGII AJAX PODCZAS
WCZYTYWANIA STRON
UŻYCIE TECHNOLOGII AJAX
PO WCZYTANIU STRON
.LHG\SU]HJOÈGDUNDQDSRW\ND]QDF]QLN<script>
QDMF]ÚĂFLHM]DWU]\PXMHJHQHURZDQLHSR]RVWDïHM
F]ÚĂFLVWURQ\DĝGRFKZLOLZF]\WDQLDLSU]HWZRU]HQLDGDQHJRVNU\SWX7DNLHSRGHMĂFLHMHVWQD]\ZDQH
modelem przetwarzania synchronicznego
3RZF]\WDQLXVWURQ\MHĝHOLFKFHV]XDNWXDOQLÊ
]DZDUWRĂÊZLG]LDQÈSU]H]Xĝ\WNRZQLNDZRNQLH
SU]HJOÈGDUNLWR]Z\NOHRGĂZLHĝDV]FDïÈVWURQÚ
2]QDF]DWRĝHXĝ\WNRZQLNPXVL]DF]HNDÊQD
SREUDQLHFDïHM]XSHïQLHQRZHMVWURQ\LZ\JHQHURZDQLHMHMSU]H]SU]HJOÈGDUNÚ
Kiedy podczas wczytywania strony skrypt musi
SREUDÊGDQH]VHUZHUD QDSU]\NïDGNXUV\Z\PLDQ\ZDOXWOXELQIRUPDFMHRVWDQLH SU]HJOÈGDUNDQLH
W\ONRF]HNDQDZF]\WDQLHLSU]HWZRU]HQLHVNU\SWX
DOHUöZQLHĝQDSREUDQLH]VHUZHUDGDQ\FKNWöUH
PDMÈE\ÊZ\ĂZLHWORQHSU]H]VNU\SW
:SU]\SDGNXWHFKQRORJLL$MD[SU]HJOÈGDUNDPRĝH
ĝÈGDÊSHZQ\FKGDQ\FK]VHUZHUDDQDVWÚSQLH
MXĝSRZ\NRQDQLXĝÈGDQLDGDQ\FK NRQW\QXRZDÊ
ZF]\W\ZDQLHSR]RVWDïHMF]ÚĂFLVWURQ\LSU]HWZDU]DQLHG]LDïDñSRGHMPRZDQ\FKSU]H]Xĝ\WNRZQLND
QDWHMVWURQLH7DNLHSRGHMĂFLHMHVWQD]\ZDQH
modelem przetwarzania asynchronicznego
(inaczej QLHEORNXMÈFHJR 3U]HJOÈGDUNDLQWHUQHWRZDQLHF]HNDQDSREUDQLH
]HZQÚWU]Q\FKGDQ\FKDE\Z\ĂZLHWOLÊVWURQÚ
.LHG\VHUZHUXG]LHOLRGSRZLHG]LLGRVWDUF]\GDQH
QDVWÚSXMHZ\ZRïDQLH]GDU]HQLD SRGREQLHMDN
zdarzenie loadMHVWZ\ZRï\ZDQHSR]DNRñF]HQLX
ZF]\W\ZDQLDVWURQ\ =GDU]HQLHWRPRĝHZ\ZRïDÊ
IXQNFMÚRGSRZLHG]LDOQÈ]DSU]HWZRU]HQLHGDQ\FK
*G\PDV]GRG\VSR]\FMLWHFKQRORJLÚ$MD[LFKFHV]
XDNWXDOQLÊW\ONRfragmentVWURQ\Z\VWDUF]\
XDNWXDOQLÊ]DZDUWRĂÊMHGQHJRHOHPHQWX2GE\ZD
VLÚWRSU]H]SU]HFKZ\FHQLH]GDU]HQLD QDSU]\NïDG
NOLNDïÈF]HOXEZ\V\ïDIRUPXODU]VLHFLRZ\ DQDVWÚSQLHĝÈGDQLHQRZHM]DZDUWRĂFL]VHUZHUD
]DSRĂUHGQLFWZHPĝÈGDQLDDV\QFKURQLF]QHJR
3RGF]DVZF]\W\ZDQLDGDQ\FKXĝ\WNRZQLNPRĝH
NRQW\QXRZDÊSUDFÚ]SR]RVWDïÈF]ÚĂFLÈVWURQ\
LQWHUQHWRZHM*G\VHUZHUXG]LHOLRGSRZLHG]L
VSHFMDOQHĝÈGDQLH$MD[SRZRGXMHZ\ZRïDQLHLQQHM
F]ÚĂFLVNU\SWXRGF]\WXMÈFHMQRZHGDQH]VHUZHUD
LXDNWXDOQLDMÈFHMSRSURVWXMHGQÈF]ÚĂÊVWURQ\
3RQLHZDĝQLHPDSRWU]HE\RGĂZLHĝDQLDFDïHMVWURQ\GDQHVÈZF]\W\ZDQHV]\EFLHMDXĝ\WNRZQLN
QDGDOPRĝHNRU]\VWDÊ]SR]RVWDïHMF]ÚĂFLVWURQ\
RF]HNXMÈFQDZF]\WDQLHGDQ\FK
1DSRF]ÈWNX$MD[E\ïDNURQLPHPR]QDF]DMÈF\PWHFKQRORJLHXĝ\ZDQHSRGF]DVZ\NRQ\ZDQLDĝÈGDñ
DV\QFKURQLF]Q\FKWDNLFKMDNRPöZLRQHSRZ\ĝHMĽDV\QFKURQLF]Q\-DYD6FULSWL;0/2GWDPWHJRF]DVX
ZLHOHVLÚ]PLHQLïRWHFKQRORJLHVÈUR]ZLMDQHDSRMÚFLH$MD[R]QDF]DWHUD]JUXSÚWHFKQRORJLLRIHUXMÈF\FK
DV\QFKURQLF]QÈIXQNFMRQDOQRĂÊZSU]HJOÈGDUFHLQWHUQHWRZHM
AJAX I JSON 377
JAK DZIAŁA AJAX?
3RGF]DVXĝ\FLDWHFKQRORJLL$MD[SU]HJOÈGDUNDLQWHUQHWRZDZ\NRQXMHĝÈGDQLH
GRW\F]ÈFHSHZQ\FKLQIRUPDFML]VHUZHUD:::1DVWÚSQLHSU]HWZDU]D
RGSRZLHGěXG]LHORQÈSU]H]VHUZHULZ\ĂZLHWODMÈQDVWURQLH
1.
ŻĄDANIE
3U]HJOÈGDUNDĝÈGDGDQ\FK
]VHUZHUD:::
3U]HJOÈGDUNDZ\V\ïDGRVHUZHUD
:::ĝÈGDQLHSHZQ\FKGDQ\FK¿ÈGDQLHPRĝH]DZLHUDÊ
informacje wymagane przez
VHUZHUSRGREQLHIRUPXODU]
VLHFLRZ\Z\V\ïDGDQHGR
VHUZHUD
:SU]HJOÈGDUNDFKLPSOHPHQtowany jest obiekt o nazwie
XMLHttpRequest przeznaczony
GRREVïXJLĝÈGDñ$MD[3R
Z\VïDQLXĝÈGDQLDSU]HJOÈGDUND
QLHPXVLF]HNDÊQDXG]LHOHQLH
RGSRZLHG]LSU]H]VHUZHU
378 AJAX I JSON
2.
W SERWERZE
WWW
6HUZHU:::XG]LHODRGSRZLHG]LGRVWDUF]DMÈFĝÈGDQHGDQH
QDMF]ÚĂFLHMZIRUPDFLH+70/
;0/OXE-621 Operacje przeprowadzane
ZVHUZHU]HQLHVÈF]ÚĂFLÈWHJR
FRRNUHĂODP\PLDQHP$MD[
7HFKQRORJLHG]LDïDMÈFHSR
VWURQLHVHUZHUDQDSU]\NïDG
$631(73+31RGHMVL5XE\
PRJÈJHQHURZDÊVWURQ\
LQWHUQHWRZHGODXĝ\WNRZQLNöZ
.LHG\SRMDZLDVLÚĝÈGDQLH$MD[
VHUZHUPRĝHXG]LHOLÊRGSRZLHdzi w postaci danych HTML
OXEWHĝZLQQ\PIRUPDFLH
WDNLPMDN-621OXE;0/ NWöU\
SU]HJOÈGDUNDNRQZHUWXMHQD
SRVWDÊ+70/ ODPOWIEDŹ
3U]HJOÈGDUNDSU]HWZDU]D
]DZDUWRĂÊLXPLHV]F]DMÈ
QDVWURQLH
.LHG\VHUZHU]DNRñF]\
XG]LHODQLHRGSRZLHG]LQD
ĝÈGDQLHSU]HJOÈGDUNDZ\ZRïXMH
]GDU]HQLH SRGREQLHMDNPRĝH
Z\ZRïDÊ]GDU]HQLHSR]DNRñF]HQLXZF]\W\ZDQLDVWURQ\ =GDU]HQLHWRPRĝQDZ\NRU]\VWDÊGRXUXFKRPLHQLDIXQNFML
-DYD6FULSWSU]HWZDU]DMÈFHMGDQH
LXPLHV]F]DMÈFHMMHQDVWURQLH
EH]ZSï\ZXQDSR]RVWDïÈF]ÚĂÊ
VWURQ\ OBSŁUGA ŻĄDAŃ
I ODPOWIEDZI AJAX
:FHOXZ\NRQDQLDĝÈGDQLD$MD[SU]HJOÈGDUNDLQWHUQHWRZDXĝ\ZDRELHNWX
XMLHttpRequest3RRWU]\PDQLX]VHUZHUDRGSRZLHG]LQDĝÈGDQLHWHQVDP
obiekt XMLHttpRequestEÚG]LHSU]HWZDU]DïZ\QLN
ŻĄDANIE
1 var xhr = new XMLHttpRequest();
2 xhr.open(’GET’, ’data/test.json’, true);
3 xhr.send(’search=arduino’);
1. 8WZRU]HQLHHJ]HPSODU]D
obiektu XMLHttpRequest za
SRPRFÈQRWDFMLNRQVWUXNWRUD
RELHNWX WÚQRWDFMÚSR]QDïHĂ
ZUR]G]LDOHZSRGUR]G]LDOH
ķ:DUWRĂFLWUXWK\LIDOV\ĵ 8ĝ\WH]RVWDïRVïRZRNOXF]RZH
newDRELHNWMHVWSU]HFKRZ\ZDQ\Z]PLHQQHMNWöUHM
nazwa xhr jest skrótem od
XMLHttpRequest (nazwa
RELHNWX 2. Metoda open() obiektu
XMLHttpRequest przygotowuje
ĝÈGDQLH0DRQDWU]\SDUDPHWU\
NWöUHSR]QDV]ZSRGUR]G]LDOH
ķ:F]\W\ZDQLH+70/]DSRPRFÈ
WHFKQRORJLL$MD[ĵ
i) nazwa metody HTTP;
ii) DGUHV85/VWURQ\NWöUD
EÚG]LHREVïXJLZDÊĝÈGDQLH
iii) ZDUWRĂÊERRORZVNDZVND]XMÈFDF]\ĝÈGDQLHSRZLQQRE\Ê
DV\QFKURQLF]QH
3. Metoda send() jest odpowieG]LDOQD]DZ\VïDQLHGRVHUZHUD
SU]\JRWRZDQHJRZF]HĂQLHM
ĝÈGDQLD,QIRUPDFMHGRGDWNRZH
PRĝQDSU]HND]DÊVHUZHURZL
XPLHV]F]DMÈFMHZQDZLDVLH
-HĝHOLQLHVÈSU]HND]\ZDQH
ĝDGQHLQIRUPDFMHGRGDWNRZH
PRĝQDVLÚVSRWNDÊ]Xĝ\FLHP
VïRZDNOXF]RZHJRnull FKRÊ
WRQLHMHVWĂFLĂOHZ\PDJDQH xhr.send(null)
ODPOWIEDŹ
1 xhr.onload = function() {
if (xhr.status === 200) {
2
// Kod odpowiedzialny za przetwarzanie odpowiedzi udzielonej przez serwer.
}
}
1. .LHG\SU]HJOÈGDUNDRWU]\PD
LZF]\WDRGSRZLHGě]VHUZHUD
QDVWÈSLZ\ZRïDQLH]GDU]HQLD
onload7R]NROHLVSRZRGXMH
wykonanie funkcji (tutaj jest to
IXQNFMDDQRQLPRZD 2. Funkcja sprawdza stan
ZïDĂFLZRĂFLstatusRELHNWX
0DWRQDFHOXXSHZQLHQLH
VLÚĝHRGSRZLHGěRWU]\PDQD
]VHUZHUDMHVWSUDZLGïRZD
-HĝHOLZ\PLHQLRQDZïDĂFLZRĂÊ
MHVWSXVWDQDOHĝ\VSUDZG]LÊ
NRQğJXUDFMÚVHUZHUD :DUWR]ZUöFLÊXZDJÚĝH,(
WRSLHUZV]DZHUVMDSU]HJOÈGDUNL
,QWHUQHW([SORUHUNWöUDREVïXguje ten sposób odpowiedzi
QDĝÈGDQLD$MD[-HĝHOLFKFHV]
DE\WRIXQNFMRQRZDïRWDNĝH
ZVWDUV]\FKSU]HJOÈGDUNDFK
PRĝHV]Xĝ\ÊELEOLRWHNLM4XHU\
SDWU]SRGUR]G]LDïķM4XHU\
L$MD[ĽĝÈGDQLDĵ AJAX I JSON 379
FORMATY DANYCH
2GSRZLHGěQDĝÈGDQLH$MD[MHVW]Z\NOHXG]LHODQDZMHGQ\P]WU]HFKQDVWÚSXMÈF\FKIRUPDWöZ+70/;0/OXE-6213RQLĝHMSU]HGVWDZLRQRSRUöZQDQLH
Z\PLHQLRQ\FKIRUPDWöZ:SURZDG]HQLHGR;0/L-621]QDMG]LHV]QDWU]HFK
NROHMQ\FKVWURQDFK
HTML
XML
JSON
3UDZGRSRGREQLHQDMOHSLHM
]QDV]IRUPDW+70/LGODWHJR
SRGF]DVXDNWXDOQLDQLDIUDJPHQWX
VWURQ\Xĝ\FLHWHJRIRUPDWX
MHVWQDMïDWZLHMV]\PVSRVREHP
umieszczenia nowych danych na
VWURQLH
'DQH;0/Z\JOÈGDMÈSRGREQLH
MDN+70/DOHQD]Z\]QDF]QLNöZVÈLQQHSRQLHZDĝRSLVXMÈ
]QDMGXMÈFHVLÚZQLFKGDQH
6NïDGQLDMHVWEDUG]LHMU\JRU\VW\F]QDQLĝZ+70/
:FHOXSU]HGVWDZLHQLDGDQ\FK
IRUPDW-621 DQJJavaScript
Object Notation Xĝ\ZDVNïDGQL
SRGREQHMGRQRWDFMLOLWHUDïXRELHNWXNWöUÈSR]QDïHĂZUR]G]LDOH
ZSRGUR]G]LDOHķ8WZRU]HQLH
RELHNWXĽQRWDFMDOLWHUDïXĵ
ZALETY
ZALETY
ZALETY
• ’DWZHWZRU]HQLHĝÈGDQLH
• 7RHODVW\F]Q\IRUPDWSR-
• 0RĝOLZRĂÊZ\ZRïDQLD
•
LZ\ĂZLHWODQLHGDQ\FK
'DQHRWU]\PDQH]VHUZHUDVÈ
EH]SRĂUHGQLRXPLHV]F]DQH
QDVWURQLH:SU]HFLZLHñVWZLHGRGZöFKSR]RVWDï\FK
IRUPDWöZGDQHQLHPXV]È
E\ÊSU]HWZDU]DQHSU]H]
SU]HJOÈGDUNÚ
•
•
]ZDODMÈF\QDSU]HGVWDZLHQLH
VNRPSOLNRZDQ\FKVWUXNWXU
GDQ\FK
'RVNRQDOHVSUDZG]DVLÚ
QDUöĝQ\FKSODWIRUPDFK
LZUöĝQ\FKDSOLNDFMDFK
'DQHVÈSU]HWZDU]DQH]D
SRPRFÈW\FKVDP\FKPHWRG
'20FRZSU]\SDGNX+70/
•
•
]GRZROQHMGRPHQ\ -6213
&256 :LÚNV]D]ZLÚ]ïRĂÊQLĝ
Z+70/L;0/
Powszechne wykorzystanie
ZMÚ]\NX-DYD6FULSW ]\VNXMH
FRUD]ZLÚNV]ÈSRSXODUQRĂÊ
ZDSOLNDFMDFKVLHFLRZ\FK WADY
WADY
WADY
•
•
• 6NïDGQLDPXVLE\ÊEH]EïÚG-
•
•
6HUZHUPXVLZ\JHQHURZDÊ
HTML w postaci gotowej do
Xĝ\FLDQDGDQHMVWURQLH
7HQIRUPDWQLHVSUDZG]DVLÚ
]E\WGREU]HZDSOLNDFMDFK
uruchamianych poza przeJOÈGDUNÈ1LHFKDUDNWHU\]XMH
VLÚ]E\WGREUÈSU]HQRĂQRĂFLÈ
danych
¿ÈGDQLHPXVLSRFKRG]LÊ]WHM
samej domeny* (patrz uwaga
SRQLĝHM •
•
-Ú]\NWHQMHVWX]QDZDQ\]D
UR]ZOHNï\SRQLHZDĝ]QDF]QLNLGRGDMÈZLHOHGRGDWNRZ\FK
znaków do przekazywanych
GDQ\FK
¿ÈGDQLHPXVLSRFKRG]LÊ]WHM
VDPHMGRPHQ\FRSR]RVWDïD
F]ÚĂÊVWURQ\ SDWU]XZDJD
SRQLĝHM 3U]HWZRU]HQLHZ\QLNXPRĝH
Z\PDJDÊRJURPQHMLORĂFL
NRGX
3U]HJOÈGDUNLSR]ZDODMÈWHFKQRORJLL$MD[QDZF]\W\ZDQLHNRGX
+70/L;0/MHG\QLH]WHMVDPHMGRPHQ\]NWöUHMSRFKRG]LVWURQD
1DSU]\NïDGMHĂOLVWURQD]QDMGXMHVLÚZGRPHQLHwww.przyklad.pl
WRĝÈGDQLH$MD[PXVL]ZUöFLÊGDQHSRFKRG]ÈFH]www.przyklad.pl
380 AJAX I JSON
•
QD%UDNXMÈF\]QDNF\WRZDQLDSU]HFLQHNOXEGZXNURSHN
PRĝHXQLHPRĝOLZLÊSUDZLGïRZHG]LDïDQLHSOLNX
3RQLHZDĝWRMHVWNRG
-DYD6FULSWPRĝH]DZLHUDÊ
]DZDUWRĂÊR]ïRĂOLZ\PG]LDïDQLX SDWU]DWDNLW\SX;66
ZUR]G]LDOHZSRGUR]G]LDOHķ$WDNLW\SX;66ĵ 'ODWHJR
WHĝGDQ\FKZIRUPDFLH
-621QDOHĝ\Xĝ\ZDÊW\ONR
]]DXIDQ\FKěUöGHï
XML — EXTENSIBLE
MARKUP LANGUAGE
.RG;0/Z\JOÈGDMDN+70/DOH]QDF]QLNL]DZLHUDMÈUöĝQHVïRZD
&HOHP]QDF]QLNöZMHVWRSLVDQLHURG]DMXSU]HFKRZ\ZDQ\FK
SU]H]QLHGDQ\FK
<?xml version=”1.0” encoding=”utf-8” ?>
<events>
<event>
<location>San Francisco, CA</location>
<date>1 maja</date>
<map>img/map-ca.png</map>
</event>
<event>
<location>Austin, TX</location>
<date>15 maja</date>
<map>img/map-tx.png</map>
</event>
<event>
<location>Nowy Jork, NY</location>
<date>30 maja</date>
<map>img/map-ny.png</map>
</event>
</events>
3OLN;0/PRĝQDSU]HWZDU]DÊ]Z\NRU]\VWDQLHPW\FKVDP\FKPHWRG
'20NWöUHVÈXĝ\ZDQHZSUDF\]+70/3RQLHZDĝSU]HJOÈGDUNL
ZUöĝQ\VSRVöEWUDNWXMÈ]QDNLRGVWÚSXZGRNXPHQWDFK+70/L;0/
SU]HWZDU]DQLH;0/MHVWïDWZLHMV]H]]DVWRVRZDQLHPM4XHU\QLĝ
]Z\NïHJRMÚ]\ND-DYD6FULSW SRGREQLHMDNZSU]\SDGNX+70/ Podobnie jak HTML jest
MÚ]\NLHP]QDF]QLNöZXĝ\ZDQ\P
do opisania struktury i semanW\NLVWURQ\LQWHUQHWRZHM;0/
PRĝQDZ\NRU]\VWDÊGRRSUDFRZDQLDMÚ]\NöZ]QDF]QLNöZGOD
LQQHJRURG]DMXGDQ\FK]XSHïQLH
GRZROQ\FKRGUDSRUWöZ
JLHïGRZ\FKDĝSRLQIRUPDFMH
PHG\F]QH
=QDF]QLNLZSOLNX;0/SRZLQQ\
RSLV\ZDÊ]QDMGXMÈFHVLÚZQLFK
GDQH'ODWHJRWHĝQDZHWMHĂOL
QLJG\ZF]HĂQLHMQLHVSRWNDïHĂ
VLÚ]NRGHPSRND]DQ\PSR
OHZHMVWURQLHWRLWDNEH]SUREOHPX]DXZDĝ\V]ĝH]DZLHUDRQ
LQIRUPDFMHRNLONXZ\GDU]HQLDFK
HOHPHQW<events>; poszczeJöOQHZ\GDU]HQLDVÈSU]HGVWDZLDQH]DSRPRFÈRGG]LHOQ\FK
znaczników <event> )RUPDW;0/G]LDïDQDNDĝGHM
SODWIRUPLHQDMZLÚNV]ÈSRSXODUQRĂÊ]\VNDïQDSRF]ÈWNXZLHNX
SRQLHZDĝ]QDF]QLHXïDWZLDï
SU]HQRV]HQLHGDQ\FKPLÚG]\
UöĝQHJRURG]DMXDSOLNDFMDPL
7RMHGQRF]HĂQLHQLH]Z\NOH
HODVW\F]Q\IRUPDWGDQ\FK]D
MHJRSRPRFÈPRĝQDSU]HGVWDZLDÊQDSUDZGÚVNRPSOLNRZDQH
VWUXNWXU\GDQ\FK
AJAX I JSON 381
JAVASCRIPT OBJECT NOTATION
'DQHPRĝQDVIRUPDWRZDÊ]DSRPRFÈ-621 Z\PΖĚࡩĞࡁƐ࠯Ŷ 6NïDGQLDMHVWEDUG]RSRGREQDGRQRWDFMLOLWHUDïXRELHNWX
DOHWRQLHMHVWRELHNW
'DQHZIRUPDFLH-621SU]\SRPLQDMÈQRWDFMÚOLWHUDïXRELHNWX
NWöUÈSR]QDïHĂZUR]G]LDOH
ZSRGUR]G]LDOHķ8WZRU]HQLH
RELHNWXĽQRWDFMDOLWHUDïXĵ7R
MHGQDNQLHMHVWRELHNWOHF]GDQH
ZSRVWDFL]Z\NïHJRWHNVWX
5öĝQLFDPRĝHZ\GDZDÊVLÚ
GUREQDDOHSDPLÚWDMĝH+70/
WRWDNĝH]Z\Nï\WHNVWDSU]HJOÈdarka internetowa konwertuje
JRQDSRVWDÊRELHNWöZPRGHOX
'20
5]HF]\ZLVW\FKRELHNWöZQLH
PRĝQDSU]HND]\ZDÊSU]H]VLHÊ
=DPLDVWWHJRZ\V\ïDQ\MHVW
WHNVWNWöU\QDVWÚSQLHEÚG]LH
SU]H]SU]HJOÈGDUNÚLQWHUQHWRZÈ
VNRQZHUWRZDQ\QDSRVWDÊ
RELHNWöZ
{
“location”: “San Francisco, CA”,
“capacity”: 270,
“booking”: true
}
KLUCZ
WARTOŚĆ
(ujęty w cudzysłów)
KLUCZ
WARTOŚĆ
:IRUPDFLH-621NOXF]SRZLQLHQ]RVWDÊXMÚW\ZFXG]\VïöZ
DQLHDSRVWURI\ :DUWRĂÊPRĝHE\ÊMHGQHJR]Z\PLHQLRQ\FKSRQLĝHMW\SöZGDQ\FK
QLHNWöUHSU]HGVWDZLRQRQDSU]\NïDG]LHSRZ\ĝHMSR]RVWDïHSRND]DQR
ZSU]\NïDG]LHQDVWURQLHSRSUDZHM .OXF] LQDF]HMQD]ZD MHVW
RGG]LHORQ\RGZDUWRĂFL
GZXNURSNLHP
TYP DANYCH
OPIS
string
7HNVW PXVLE\ÊXMÚW\ZFXG]\VïöZ number
/LF]ED
3RV]F]HJöOQHSDU\NOXF]ZDUWRĂÊVÈUR]G]LHORQH
SU]HFLQNDPL-HGQDN]ZUöÊ
XZDJÚQDbrak przecinka po
RVWDWQLHMSDU]H
Boolean
:DUWRĂÊtrueOXEfalse
array
7DEOLFDZDUWRĂFLĽPRĝHWRE\ÊUöZQLHĝWDEOLFD
RELHNWöZ
object
2ELHNW-DYD6FULSWĽPRĝH]DZLHUDÊRELHNW\SRWRPQH
OXEWDEOLFH
null
:DUWRĂÊSXVWDOXEZRJöOHEUDNZDUWRĂFL
382 AJAX I JSON
PRACA Z DANYMI JSON
Obiekt JSONZMÚ]\NX-DYD6FULSWPRĝH]DPLHQLÊGDQH-621
QDSRVWDÊRELHNWX-DYD6FULSW3R]ZDODUöZQLHĝSU]HSURZDG]LÊ
NRQZHUVMÚRELHNWX-DYD6FULSWQDFLÈJWHNVWRZ\
{
“events”: [
{
“location”: “San Francisco, CA”,
“date”: “1 maja”,
“map”: “img/map-ca.png”
},
{
“location”: “Austin, TX”,
“date”: “15 maja”,
“map”: “img/map-tx.png”
},
{
“location”: “Nowy Jork, NY”,
“date”: “30 maja”,
“map”: “img/map-ny.png”
2ELHNWSROHZHMVWURQLH
SU]HGVWDZLDVHULÚWU]HFK
Z\GDU]HñRNWöU\FKLQIRUPDFMH
VÈSU]HFKRZ\ZDQHZWDEOLF\
o nazwie events7DEOLFD
Z\NRU]\VWXMHQRWDFMÚQDZLDVX
kwadratowego i przechowuje
WU]\RELHNW\ SRMHGQ\PGOD
NDĝGHJRZ\GDU]HQLD Metoda JSON.stringify()
SU]HSURZDG]DNRQZHUVMÚ
RELHNWX-DYD6FULSWQDFLÈJWHNVWRZ\VIRUPDWRZDQ\MDNRGDQH
-621:WHQVSRVöERELHNW\
-DYD6FULSWPRĝQDSU]HV\ïDÊ
]SU]HJOÈGDUNLGRLQQHMDSOLNDFML
}
]
}
OBIEKT
TABLICA
2ELHNWPRĝQD]DSLVDÊWDNĝHZMHGQ\PZLHUV]X
MDNSRND]DQRSRQLĝHM
Metoda JSON.parse() przetwaU]DFLÈJWHNVWRZ\]DZLHUDMÈF\
GDQH-6213U]HSURZDG]DNRQZHUVMÚGDQ\FK-621QDSRVWDÊ
RELHNWöZ-DYD6FULSWJRWRZ\FK
GRXĝ\FLDZSU]HJOÈGDUFH
2EVïXJDZSU]HJOÈGDUNDFK
&KURPH)LUHIR[,(
L6DIDUL
{
“events”: [
{ “location”: “San Francisco, CA”, “date”: “1 maja”, “map”: “img/map-ca.png” },
{ “location”: “Austin, TX”, “date”: “15 maja”, “map”: “img/map-tx.png” },
{ “location”: “Nowy Jork, NY”, “date”: “30 maja”, “map”: “img/map-ny.png” }
]
}
AJAX I JSON 383
WCZYTYWANIE HTML
Z WYKORZYSTANIEM
TECHNOLOGII AJAX
+70/WRQDMïDWZLHMV]\W\SGDQ\FKMDNLHPRĝQDGRGDÊQDVWURQLH
]Z\NRU]\VWDQLHPWHFKQRORJLL$MD[3U]HJOÈGDUNDZ\JHQHUXMHMH
GRNïDGQLHWDNVDPRMDNNDĝGHLQQHGDQH+70/
'RQRZHM]DZDUWRĂFLEÚGÈ]DVWRVRZDQHLVWQLHMÈFHUHJXï\&66
3RQLĝHMSU]HGVWDZLRQRSU]\NïDGZF]\WXMÈF\]DSRPRFÈ
WHFKQRORJLL$MD[GDQHRWU]HFK
Z\GDU]HQLDFK :NROHMQ\FK
F]WHUHFKSU]\NïDGDFKZ\QLN
EÚG]LHGRNïDGQLHWDNLVDP Strona otwierana przez
Xĝ\WNRZQLNDQLHSU]HFKRZXMH
GDQ\FKGRW\F]ÈF\FKZ\GDU]Hñ
R]QDF]RQHNRORUHPUöĝRZ\P 7HFKQRORJLD$MD[MHVWZ\NRU]\stywana do wczytania danych
]LQQHJRSOLNX
Obszar
w kolorze
różowym
jest wczytany z wykorzystaniem
technologii
Ajax
.LHG\VHUZHUXG]LHODRGSRZLHG]LQDGRZROQHĝÈGDQLHSRZLQLHQ
SU]HND]DÊNRPXQLNDWRVWDQLHZVND]XMÈF\F]\ĝÈGDQLH]RVWDïR
XNRñF]RQH2WRSU]\NïDGRZHZDUWRĂFLNRPXQLNDWXRVWDQLH
200ĽVHUZHUXG]LHOLïRGSRZLHG]LLZV]\VWNRMHVWZSRU]ÈGNX
304ĽQLH]PRG\ğNRZDQ\
404ĽVWURQDQLH]RVWDïD]QDOH]LRQD
500ĽZHZQÚWU]Q\EïÈGVHUZHUD
-HĝHOLXUXFKDPLDV]NRGORNDOQLHWRQLHRWU]\PDV]ZïDĂFLZRĂFLVWDQX
VHUZHUD3ROHFHQLHVSUDZG]HQLDWU]HEDZLÚFXPLHĂFLÊZNRPHQWDU]X
DZDUWRĂFLÈZDUXQNXSRZLQQRE\Êtrue-HĝHOLVHUZHUQLH]ZUDFD
ZïDĂFLZRĂFLstatusVSUDZGěMHJRNRQğJXUDFMÚ
384 AJAX I JSON
3U]HJOÈGDUNDSR]ZROLQDXĝ\FLH
tej techniki wczytywania danych
+70/W\ONRZWHG\JG\SRFKRG]È
]WHMVDPHMGRPHQ\GRNWöUHM
QDOHĝ\SR]RVWDïDF]ÚĂÊVWURQ\
1LH]DOHĝQLHRGIRUPDWX
danych zwróconych przez
VHUZHU +70/;0/OXE-621 SURFHVNRQğJXUDFMLĝÈGDQLD
$MD[LVSUDZG]HQLDF]\SOLN
MHVWJRWRZ\GRSUDF\SU]HGVWDZLDVLÚGRNïDGQLHWDNVDPR
=PLDQLHXOHJDMHG\QLHVSRVöE
SUDF\]RWU]\PDQ\PLGDQ\PL
:SU]\NïDG]LHSRSUDZHMVWURQLH
NRGRGSRZLHG]LDOQ\]DZ\ĂZLHWOHQLHQRZHM]DZDUWRĂFL+70/
MHVWXPLHV]F]RQ\ZHZQÈWU]
NRQVWUXNFMLZDUXQNRZHM
8ZDJD Przedstawione tutaj
SU]\NïDG\QLHG]LDïDMÈORNDOQLH
ZSU]HJOÈGDUFH&KURPHDOHSRZLQQ\G]LDïDÊZSU]HJOÈGDUNDFK
)LUHIR[L6DIDUL:SU]\SDGNX
ZHUVML,(ZF]HĂQLHMV]\FKQLĝ
HIHNW\E\ZDMÈUöĝQH
:GDOV]HMF]ÚĂFLUR]G]LDïX
]REDF]\V]ĝHM4XHU\RIHUXMH
OHSV]ÈREVïXJÚ$MD[ZUöĝQ\FK
SU]HJOÈGDUNDFK
1. Obiekt XMLHttpRequest jest
przechowywany w zmiennej
o nazwie xhr.
2. Metoda open() obiektu
XMLHttpRequest przygotowuje
ĝÈGDQLH0HWRGDWDPDWU]\
parametry:
i). HTTP GET lub POST w celu
wskazania sposobu wykonania
ĝÈGDQLD
ii). ĂFLHĝNÚGRVWÚSXGRVWURQ\
RGSRZLHG]LDOQHM]DREVïXJÚ
ĝÈGDQLD
iii). ZDUWRĂÊERRORZVNÈ
NWöUDZVND]XMHF]\ĝÈGDQLHMHVW
asynchroniczne.
3. 'RWHMFKZLOLSU]HJOÈGDUND
MHV]F]HQLHVNRQWDNWRZDïDVLÚ
]VHUZHUHPDE\SREUDÊQRZÈ
]DZDUWRĂÊ+70/
.RQWDNWQLHQDVWÈSLDĝGR
wykonania ostatniego wiersza
ZVNU\SFLHZ\ZRïXMÈFHJR
PHWRGÚsend() obiektu
XMLHttpRequest. Metoda
send() wymaga podania
DUJXPHQWX-HĝHOLQLHVÈ
SU]HND]\ZDQHĝDGQHGDQH
DUJXPHQWHPPRĝHE\Ênull.
4. Po udzieleniu odpowiedzi
SU]H]VHUZHUQDVWÈSLZ\ZRïDQLH]GDU]HQLDonloadFR
spowoduje wykonanie funkcji
anonimowej.
5. :HZQÈWU]IXQNFMLNRQVWUXNFMD
ZDUXQNRZDVSUDZG]DF]\
ZDUWRĂFLÈZïDĂFLZRĂFLstatus
obiektu jest 200NWöUDR]QDF]D
udzielenie przez serwer
SUDZLGïRZHMRGSRZLHG]L-HĝHOL
SU]\NïDGMHVWXUXFKDPLDQ\ORNDOQLHQLHEÚG]LHRGSRZLHG]L
LQLHPRĝQDSU]HSURZDG]LÊ
sprawdzenia.
c08/js/data-html.js
JAVASCRIPT
1
var xhr = new XMLHttpRequest();
4
xhr.onload = function() {
// Po wczytaniu odpowiedzi.
3RQLĝV]DNRQVWUXNFMDZDUXQNRZDQLHG]LDïDORNDOQLHG]LDïDMHG\QLHZVHUZHU]H
if(xhr.status === 200) {
-HĝHOLVWDQVHUZHUDZVND]XMH
ĝHZV]\VWNRMHVWZSRU]ÈGNX
document.getElementById(’content’).innerHTML = xhr.responseText;
8DNWXDOQLHQLH
}
};
5
6
2
3
// Utworzenie obiektu XMLHttpRequest.
xhr.open(’GET’, ’data/data.html’, true);
xhr.send(null);
3U]\JRWRZDQLHĝÈGDQLD
:\NRQDQLHĝÈGDQLD
6. 1DVWÚSXMHXDNWXDOQLHQLHVWURQ\
document.getElementById(’content’).innerHTML = xhr.responseText;.
A
A. Wybrany zostanie element
SU]HFKRZXMÈF\QRZÈ]DZDUWRĂÊ
+70/ :RPDZLDQ\PSU]\NïDG]LHWRHOHPHQWNWöUHJRDWU\EXW
idPDZDUWRĂÊcontent).
B
C
B. :ïDĂFLZRĂÊinnerHTML
]DVWÚSXMH]DZDUWRĂÊZVND]DQHJRHOHPHQWXQRZÈ]DZDUWRĂFLÈ
+70/SREUDQÈ]VHUZHUD
C. 1RZD]DZDUWRĂÊ+70/
MHVWSRELHUDQD]ZïDĂFLZRĂFL
responseText obiektu
XMLHttpRequest.
3DPLÚWDMĝHZïDĂFLZRĂÊinnerHTMLSRZLQQDE\ÊXĝ\ZDQDW\ONRZWHG\JG\ZLDGRPRĝHVHUZHUQLH
]ZUöFL]DZDUWRĂFLR]ïRĂOLZ\PG]LDïDQLX:V]HOND]DZDUWRĂÊXWZRU]RQDSU]H]Xĝ\WNRZQLNDOXEğUP\
WU]HFLHSRZLQQDE\Ê]QHXWUDOL]RZDQDZVHUZHU]H SDWU]UR]G]LDïSRGUR]G]LDïķ$WDNLW\SX;66ĵ AJAX I JSON 385
WCZYTYWANIE XML
Z WYKORZYSTANIEM
TECHNOLOGII AJAX
¿ÈGDQLHGDQ\FK;0/RGE\ZDVLÚSRGREQLHMDNZSU]\SDGNXGDQ\FK+70/
Jednak przetworzenie danych zwróconych przez serwer jest znacznie bardziej
VNRPSOLNRZDQHSRQLHZDĝGDQH;0/PXV]ÈE\ÊVNRQZHUWRZDQHQD+70/
DE\PRĝQDMHZ\ĂZLHWOLÊQDVWURQLH
1DVWURQLHSRSUDZHMPRĝHV]
]REDF]\ÊĝHNRGĝÈGDQLDSOLNX
XML jest praktycznie identyczny
]NRGHPĝÈGDQLDGDQ\FK+70/
pokazanym na poprzedniej
VWURQLH=PLDQLHXOHJïIUDJPHQW
ZHZQÈWU] konstrukcji warunkoZHMSU]HWZDU]DMÈFHMRGSRZLHGě
(punkty 1 – 4 na stronie po
SUDZHM 'DQH;0/PXV]È
E\ÊVNRQZHUWRZDQHQD+70/
6WUXNWXUD+70/SRV]F]HJöOQ\FK
Z\GDU]Hñ]RVWDïDSU]HGVWDZLRQD
SRQLĝHM
1. .LHG\VHUZHUXG]LHOD
RGSRZLHG]LSU]HND]XMÈFGDQH
;0/PRĝQDMHX]\VNDÊ]DSRPRFÈZïDĂFLZRĂFLresponseXML
obiektu XMLHttpRequest
:RPDZLDQ\PSU]\NïDG]LH
]ZUöFRQHGDQH;0/VÈ
przechowywane w zmiennej
o nazwie response
'DQH;0/NDĝGHJR]GDU]HQLD
VÈSU]HNV]WDïFDQHQDQDVWÚSXMÈFÈVWUXNWXUÚ+70/
386 AJAX I JSON
2. 1DVWÚSQLHPDP\GHNODUDFMÚ
nowej zmiennej o nazwie
eventsSU]HFKRZXMÈFHM
ZV]\VWNLHHOHPHQW\<event>
]GRNXPHQWX;0/ 3OLN;0/
ZLG]LDïHĂZSRGUR]G]LDOH
ķ;0/Ľ([WHQVLEOH0DUNXS
/DQJXDJHĵ 3. 3OLN;0/MHVWSU]HWZDU]DQ\
]DSRPRFÈPHWRG'20
RPöZLRQ\FKZUR]G]LDOH
1DSRF]ÈWNX]Z\NRU]\VWDQLHP
SÚWOLfor przeprowadzana jest
LWHUDFMDSU]H]ZV]\VWNLHHOHPHQty <event>LQDVWÚSXMH]HEUDQLH
danych przechowywanych
ZLFKHOHPHQWDFKSRWRPQ\FK
oraz umieszczenie tych danych
ZQRZ\FKHOHPHQWDFK+70/
4. :HZQÈWU]SÚWOLfor widzimy
ZLHORNURWQHZ\ZRïDQLHIXQNFML
getNodeValue()&HOHPW\FK
Z\ZRïDñMHVWSREUDQLH]DZDUWRĂFLSRV]F]HJöOQ\FKHOHPHQWöZ
;0/:\PLHQLRQDIXQNFMD
SRELHUDGZDSDUDPHWU\
i). obj to fragment XML;
ii). tagWRQD]ZD]QDF]QLND
]NWöUHJRPDMÈE\ÊSREUDQH
LQIRUPDFMH
Funkcja wyszukuje dopasowany znacznik we fragmencie
;0/Xĝ\ZDMÈFGRWHJR
PHWRG\'20RQD]ZLH
getElementsByTagName()
1DVWÚSQLHSRELHUDWHNVW]SLHUZV]HJRHOHPHQWXGRSDVRZDQHJR
ZGDQ\PIUDJPHQFLH
1DVWÚSQLHNDĝG\]QRZ\FK
HOHPHQWöZ+70/MHVWXPLHV]F]DQ\QDVWURQLH
HTML
<div class=”event”>
<img src=”plik.png” alt=”Lokalizacja” />
<p><b>Lokalizacja</b><br />Data wydarzenia</p>
</div>
c07/js/position.js
JAVASCRIPT
var xhr = new XMLHttpRequest();
// Utworzenie obiektu XMLHttpRequest.
xhr.onload = function() {
// Po wczytaniu odpowiedzi.
3RQLĝV]DNRQVWUXNFMDZDUXQNRZDQLHG]LDïDORNDOQLHG]LDïDMHG\QLHZVHUZHU]H
if (xhr.status === 200) {
-HĝHOLVWDQVHUZHUDZVND]XMHĝHZV]\VWNRMHVWZSRU]ÈGNX
1
2
7HQIUDJPHQWMHVWLQQ\SRQLHZDĝSU]HWZDU]DQHVÈGDQH;0/DQLH+70/
var response = xhr.responseXML;
// Pobranie danych XML z serwera.
var events = response.getElementsByTagName(’event’);
// Wyszukanie elementów <event>.
for (var i = 0; i < events.length; i++) {
var container, image, location, city, newline;
container = document.createElement(’div’);
container.className = ’event’;
//
//
//
//
Iteracja przez znalezione elementy.
Deklaracja zmiennych.
Utworzenie pojemnika <div>.
Dodanie atrybutu class.
image = document.createElement(’img’);
// Dodanie obrazu mapy.
image.setAttribute(’src’, getNodeValue(events[i], ’map’));
image.appendChild(document.createTextNode(getNodeValue(events[i], ’map’)));
container.appendChild(image);
3
4
location = document.createElement(’p’);
'RGDQLHGDQ\FKGRW\F]ÈF\FKORNDOL]DFML
city = document.createElement(’b’);
newline = document.createElement(’br’);
city.appendChild(document.createTextNode(getNodeValue(events[i], ’location’)));
location.appendChild(newline);
location.insertBefore(city, newline);
location.appendChild(document.createTextNode(getNodeValue(events[i], ’date’)));
container.appendChild(location);
document.getElementById(’content’).appendChild(container);
}
function getNodeValue(obj, tag) {
3REUDQLH]DZDUWRĂFL]GDQ\FK;0/
UHWXUQREMJHW(OHPHQWV%\7DJ1DPH WDJ >@ğUVW&KLOGQRGH9DOXH
}
2VWDWQLIUDJPHQWMHVWWDNLVDPMDNZSU]\SDGNXGDQ\FK+70/
DOHĝÈGDQLHGRW\F]\SOLNX;0/
}
};
xhr.open(’GET’, ’data/data.xml’, true);
3U]\JRWRZDQLHĝÈGDQLD
xhr.send(null);
:\NRQDQLHĝÈGDQLD
AJAX I JSON 387
WCZYTYWANIE DANYCH
JSON Z WYKORZYSTANIEM
TECHNOLOGII AJAX
¿ÈGDQLHGDQ\FK-621RSLHUDVLÚQDWHMVDPHMVNïDGQLNWöUÈSR]QDïHĂ
ZSU]\NïDGDFKGRW\F]ÈF\FKĝÈGDñGDQ\FK+70/L;0/.LHG\VHUZHUXG]LHOD
RGSRZLHG]LGDQH-621VÈNRQZHUWRZDQHQDSRVWDÊ+70/
.LHG\GDQHZIRUPDFLH-621VÈ
SU]HND]\ZDQH]VHUZHUD:::
GRSU]HJOÈGDUNLLQWHUQHWRZHM
SRGF]DVWUDQVPLVMLPDMÈSRVWDÊ
FLÈJXWHNVWRZHJR
*G\FLÈJWHNVWRZ\GRWU]HGR
SU]HJOÈGDUNLVNU\SWPXVL
VNRQZHUWRZDÊJRQDRELHNW
-DYD6FULSW3URFHVWHQQRVL
QD]ZÚdeserializacjiRELHNWX
2GE\ZDVLÚWR]Z\NRU]\staniem metody parse()
wbudowanego obiektu o nazwie
JSON7RMHVWRELHNWJOREDOQ\
DZLÚFPRĝQDJRXĝ\ZDÊEH]
NRQLHF]QRĂFLZF]HĂQLHMV]HJR
XWZRU]HQLDHJ]HPSODU]D
RELHNWX
*G\FLÈJWHNVWRZ\]RVWDQLH
SU]HWZRU]RQ\VNU\SWPRĝH
X]\VNDÊGRVWÚSGRGDQ\FK
RELHNWXDQDVWÚSQLHXWZRU]\Ê
]DZDUWRĂÊ+70/NWöUDEÚG]LH
Z\ĂZLHWORQDQDVWURQLH
=DZDUWRĂÊ+70/MHVWGRGDZDQD
QDVWURQLH]DSRPRFÈZïDĂFLZRĂFLinnerHTML'ODWHJRWHĝSRZLQLHQHĂXĝ\ZDÊMHMW\ONRZWHG\
JG\PDV]DEVROXWQÈSHZQRĂÊ
ĝHGRGDZDQDWUHĂÊQLH]DZLHUD
ĝDGQHJRNRGXR]ïRĂOLZ\P
G]LDïDQLX SDWU]DWDNLW\SX;66
ZUR]G]LDOHZSRGUR]G]LDOH
ķ$WDNLW\SX;66ĵ *G\SU]\NïDGRZ\NRG]RVWDQLH
Z\NRQDQ\ZSU]HJOÈGDUFHHIHNW
EÚG]LHGRNïDGQLHWDNLVDPMDN
ZSU]\SDGNXGZöFKSRSU]HGQLFK
Obiekt JSONPDUöZQLHĝPHWRGÚ
o nazwie stringify()NWöUD
NRQZHUWXMHRELHNW\QDSRVWDÊ
FLÈJXWHNVWRZHJRXĝ\ZDMÈF
QRWDFML-6217RSR]ZDODQD
SU]HV\ïDQLHRELHNWX]SU]HJOÈGDUNLGRVHUZHUD:::3URFHV
WHQQD]\ZDVLÚVHULDOL]DFMÈ
RELHNWX
:\PLHQLRQÈPHWRGÚPRĝQD
VWRVRZDÊJG\Xĝ\WNRZQLN
Z\NRU]\VWXMHVWURQÚZWDNL
VSRVöEĝHQDVWÚSXMHXDNWXDOnienie danych przechowywaQ\FKZRELHNFLH-DYD6FULSW QD
SU]\NïDGQDVNXWHNZ\SHïQLHQLD
IRUPXODU]DVLHFLRZHJR 3R]ZDODWRQDXDNWXDOQLHQLH
informacji przechowywanych
ZVHUZHU]H
3RQLĝHMSU]HGVWDZLRQRGDQH-621NWöUHEÚGÈSU]HWZDU]DQH
GDQHWHZSURZDG]RQRZSRGUR]G]LDOHķ3UDFD]GDQ\PL-621ĵ =ZUöÊXZDJÚQDWRĝHSOLN]RVWDï]DSLVDQ\ZUD]]UR]V]HU]HQLHP.jsonZQD]ZLH
c08/data/data.json
JAVASCRIPT
{
“events”: [
{ “location”: “San Francisco, CA”, “date”: “1 maja”, “map”: “img/map-ca.png” },
{ “location”: “Austin, TX”, “date”: “15 maja”, “map”: “img/map-tx.png” },
{ “location”: “Nowy Jork, NY”, “date”: “30 maja”, “map”: “img/map-ny.png”}
]
}
388 AJAX I JSON
1. 'DQH-621RWU]\PDQH
]VHUZHUDVÈSU]HFKRZ\wane w zmiennej o nazwie
responseObject%ÚGÈ
GRVWÚSQH]DSRPRFÈZïDĂFLZRĂFLresponseText obiektu
XMLHttpRequest
'DQH-621RWU]\PDQH
]VHUZHUDPDMÈSRVWDÊFLÈJX
WHNVWRZHJR'ODWHJRWHĝQDOHĝ\
MHVNRQZHUWRZDÊQDRELHNW
-DYD6FULSWXĝ\ZDMÈFPHWRG\
parse()RELHNWX-621
2. Utworzenie zmiennej
newContent przeznaczonej
do przechowywania nowych
GDQ\FK+70/3R]DSÚWOÈ
zmiennej jest przypisywany
SXVW\FLÈJWHNVWRZ\DZLÚFNRG
ZSÚWOLPRĝHGRGDZDÊGRQLHJR
GDQH
3. Iteracja przez obiekty
SU]HGVWDZLDMÈFHSRV]F]HJöOQH
]GDU]HQLD'DQHZHZV]\VWNLFK
RELHNWDFKVÈGRVWÚSQHZQRWDFML
]Xĝ\FLHPNURSNLSRGREQLHMDN
RELHNW\
:HZQÈWU]SÚWOL]DZDUWRĂÊ
obiektu zostaje dodana do
zmiennej newContent wraz
z odpowiednim kodem znaczniNöZ+70/
4. *G\NRñF]\VLÚG]LDïDQLHSÚWOLSURZDG]ÈFHM
LWHUDFMÚSU]H]RELHNWevent
w responseObject nowa zaZDUWRĂÊ+70/]RVWDMHXPLHV]F]RQDQDVWURQLH]DSRPRFÈ
ZïDĂFLZRĂFLinnerHTML
c08/js/data-json.js
JAVASCRIPT
var xhr = new XMLHttpRequest();
// Utworzenie obiektu XMLHttpRequest.
xhr.onload = function() {
if(xhr.status === 200) {
// Po zmianie stanu.
-HĝHOLVWDQVHUZHUDZVND]XMH
ĝHZV]\VWNRMHVWZSRU]ÈGNX
responseObject = JSON.parse(xhr.responseText);
1
2
3
4
8WZRU]HQLHFLÈJXWHNVWRZHJRZUD]]QRZÈ]DZDUWRĂFLÈ PRĝQDXĝ\ÊWDNĝHRSHUDFML
// opartych na modelu DOM).
var newContent = ’’;
for (var i = 0; i < responseObject.events.length; i++) { // Iteracja przez obiekt.
newContent += ’<div class=”event”>’;
newContent += ’<img src=”’ + responseObject.events[i].map + ’” ’;
newContent += ’alt=”’ + responseObject.events[i].location + ’” />’;
newContent += ’<p><b>’ + responseObject.events[i].location + ’</b><br>’;
newContent += responseObject.events[i].date + ’</p>’;
newContent += ’</div>’;
}
8DNWXDOQLHQLHVWURQ\QRZÈ]DZDUWRĂFLÈ
document.getElementById(’content’).innerHTML = newContent;
}
};
xhr.open(’GET’, ’data/data.json’, true);
xhr.send(null);
3U]\JRWRZDQLHĝÈGDQLD
:\NRQDQLHĝÈGDQLD
AJAX I JSON 389
PRACA Z DANYMI
POCHODZĄCYMI Z INNYCH
SERWERÓW
$MD[G]LDïDGRVNRQDOHZSU]\SDGNXGDQ\FKSRFKRG]ÈF\FK]7ZRMHJRVHUZHUD
DOH]HZ]JOÚGöZEH]SLHF]HñVWZDSU]HJOÈGDUNLLQWHUQHWRZHQLHZF]\WXMÈ
RGSRZLHG]L$MD[]LQQ\FKGRPHQ RGSRZLHG]LEÚGÈF\FKZ\QLNLHPWDN
]ZDQ\FKĝÈGDñW\SXFURVVGRPDLQ 'RVWÚSQHVÈWU]\QDMF]ÚĂFLHMVWRVRZDQH
UR]ZLÈ]DQLDSUREOHPX
PLIK PROXY W SERWERZE WWW
CROSS-ORIGIN RESOURCE SHARING
3LHUZV]\VSRVöEQDZF]\WDQLHGDQ\FK]]HZQÚWU]QHJRVHUZHUDSROHJDQDXWZRU]HQLXZHZïDVQ\P
VHUZHU]HSOLNXSU]H]QDF]RQHJRQDGDQHSRFKRG]ÈFH
]H]GDOQHJRVHUZHUD ]Z\NRU]\VWDQLHPMÚ]\ND
G]LDïDMÈFHJRSRVWURQLHVHUZHUDWDNLHJRMDN$63
1(73+31RGHMV5XE\ 6WURQ\Z7ZRMHMZLWU\QLH
EÚGÈĝÈGDï\GDQ\FK]HZVSRPQLDQHJRSOLNX
ZVHUZHU]HNWöU\]NROHLSRELHU]HRGSRZLHGQLHGDQH
]VHUZHUD]GDOQHJR7DNLHUR]ZLÈ]DQLHQRVLQD]ZÚ
proxySRQLHZDĝG]LDïDZLPLHQLXLQQHMVWURQ\
:WUDNFLHNRPXQLNDFMLSU]HJOÈGDUNLLQWHUQHWRZHM
LVHUZHUD:::LQIRUPDFMHPLÚG]\QLPLVÈ
SU]HND]\ZDQH]DSRPRFÈQDJïöZNöZ+773&256
DQJCross-Origin Resource Sharing) oznacza
XPLHV]F]HQLHZQDJïöZNDFK+773LQIRUPDFML
GRGDWNRZ\FKNWöUHZVND]XMÈSU]HJOÈGDUFHLVHUZHURZL:::VSRVöESURZDG]HQLDNRPXQLNDFML
5R]ZLÈ]DQLHRSLHUDVLÚQDWZRU]HQLXVWURQ
ZMÚ]\NXG]LDïDMÈF\PSRVWURQLHVHUZHUDDZLÚF
wykracza poza zakres tematyczny niniejszej
NVLÈĝNL
JSONP
JSONP F]DVHPPRĝQDVSRWNDÊ]DSLV-6213 REHMPXMHGRGDQLHQDVWURQLHHOHPHQWX<script>
RGSRZLHG]LDOQHJR]DZF]\WDQLHGDQ\FK-621
]LQQHJRVHUZHUD7DNLHUR]ZLÈ]DQLHG]LDïDSRQLHZDĝQLHLVWQLHMÈRJUDQLF]HQLDGRW\F]ÈFHěUöGïD
SRFKRG]HQLDVNU\SWXZHOHPHQFLH<script>
6NU\SW]DZLHUDZ\ZRïDQLHIXQNFMLDGDQH
ZIRUPDFLH-621VÈGRVWDUF]DQHMDNRDUJXPHQW
IXQNFML:\ZRï\ZDQDIXQNFMDMHVW]GHğQLRZDQD
QDVWURQLHĝÈGDMÈFHMGDQ\FKLXĝ\ZDQDMHVWGRLFK
SU]HWZRU]HQLDRUD]Z\ĂZLHWOHQLD3DWU]RSLVQD
NROHMQHMVWURQLH
390 AJAX I JSON
&256WRVSHF\ğNDFMD:&DOHREVïXJLZDQD
MHG\QLHZQDMQRZV]\FKZHUVMDFKSU]HJOÈGDUHN
3RQLHZDĝZ\PDJDNRQğJXUDFMLQDJïöZNöZ+773
ZVHUZHU]H:::Z\NUDF]DWRSR]D]DNUHV
WHPDW\F]Q\QLQLHMV]HMNVLÈĝNL
ALTERNATYWY
:LHOHRVöEXĝ\ZDM4XHU\ZFHOXZ\NRQ\ZDQLD
ĝÈGDñSRELHUDMÈF\FKGDQH]H]GDOQ\FKVHUZHUöZ
8SUDV]F]DWRSURFHVL]DSHZQLDZVWHF]QÈ]JRGQRĂÊ]HVWDUV]\PLSU]HJOÈGDUNDPL-DNPRĝHV]
]REDF]\ÊZQDVWÚSQHMNROXPQLHREVïXJDQLHNWöU\FKQRZ\FKSRGHMĂÊPRĝHE\ÊSUREOHPDW\F]QD
OBSŁUGA CORS
6WDQGDUGRZRREVïXJÚ&256RIHUXMÈSU]HJOÈGDUNL
&KURPH)LUHIR[,(6DIDUL$QGURLG
LL26
3U]HJOÈGDUNL,QWHUQHW([SORUHUļXĝ\ZDMÈ
niestandardowego obiektu XDomainRequest do
REVïXJLĝÈGDñ&256
JAK DZIAŁA JSONP?
Strona musi przede wszystkim
]DZLHUDÊIXQNFMÚSU]H]QDF]RQÈGR
przetwarzania danych w formacie
-6211DVWÚSQLH]DSRPRFÈHOHmentu <script> wykonywane jest
ĝÈGDQLHGDQ\FK]VHUZHUD
6HUZHU]ZUDFDSOLNNWöU\Z\ZRïXMH
IXQNFMÚSU]HWZDU]DMÈFÈGDQH'DQH
ZIRUPDFLH-621VÈGRVWDUF]DQH
MDNRDUJXPHQWWHMIXQNFML
PRZEGLĄDARKA INTERNETOWA
SERWER
6WURQD+70/Xĝ\ZDGZöFKIUDJPHQWöZNRGX
-DYD6FULSW
.LHG\VHUZHUXG]LHODRGSRZLHG]LVNU\SW]DZLHUD
Z\ZRïDQLHGRQD]ZDQHMIXQNFMLNWöUDEÚG]LH
SU]HWZDU]DÊGDQH IXQNFMDWD]RVWDïD]GHğQLRZDQD
ZNURNX :\ZRïDQLHWHMIXQNFMLMHVWR]QDF]RQH
OLWHUÈ3ZVNUöFLH-6213'DQHZIRUPDFLH-621
VÈGRVWDUF]DQHMDNRDUJXPHQWWHMIXQNFML
1. )XQNFMDSU]HWZDU]DMÈFDGDQH-621Z\VïDQH
SU]H]VHUZHU:SU]\NïDG]LHSU]HGVWDZLRQ\P
QDQDVWÚSQHMVWURQLHIXQNFMDWDPDQD]ZÚ
showEvents()
2. (OHPHQW<script>NWöUHJRDWU\EXWsrc
ZVND]XMHGDQH-621]H]GDOQHJRVHUZHUD
<script>
function showEvents(data) {
// Kod odpowiedzialny za przetworzenie
GDQ\FKLZ\ĂZLHWOHQLHLFKQDVWURQLH
}
</script>
<script src=”http://example.org/jsonp”>
</script>
:RPDZLDQ\PSU]\NïDG]LHGDQH-621]QDMGXMÈ
VLÚZHZQÈWU]Z\ZRïDQLDIXQNFMLshowEvents()
showEvents({
“events”: [
{
“location”: “San Francisco, CA”,
“date”: “1 maja”,
“map”: “img/map-ca.png”
}...
]
});
7U]HED]ZUöFLÊXZDJÚQDEUDNNRQLHF]QRĂFLXĝ\FLDPHWRGparse()OXEstringfy() obiektu JSON podczas
SUDF\]-62133RQLHZDĝGDQHVÈSU]HND]\ZDQHMDNRSOLNVNU\SWX DQLHFLÈJWHNVWRZ\ EÚGÈWUDNWRZDQH
MDNRRELHNW
3OLNZVHUZHU]HMHVWF]ÚVWR]DSLV\ZDQ\DZLÚFPRĝQDSRGDÊQD]ZÚIXQNFMLNWöUDEÚG]LHSU]HWZDU]DïD
RWU]\P\ZDQHGDQH1D]ZDWHMIXQNFMLMHVW]Z\NOHSRGDZDQDZFLÈJXWHNVWRZ\P]DS\WDQLDDGUHVX85/
http://example.org/upcomingEvents.php?callback=showEvents
AJAX I JSON
391
UŻYCIE JSONP
3U]\NïDGWHQZ\JOÈGDWDNVDPR
MDNSU]\NïDGZ\NRU]\VWXMÈF\
GDQH-621DOHLQIRUPDFMH
V]F]HJöïRZHGRW\F]ÈFH
]GDU]HQLDVÈSRELHUDQH]H
]GDOQHJRVHUZHUD'ODWHJRWHĝ
ZNRG]LH+70/]QDMGXMÈVLÚ
GZDHOHPHQW\<script>
Pierwszy z nich jest odpowieG]LDOQ\]DZF]\WDQLHSOLNX
-DYD6FULSW]DZLHUDMÈFHJRIXQNFMÚshowEvents():\PLHQLRQD
IXQNFMDVïXĝ\GRZ\ĂZLHWOHQLD
LQIRUPDFMLRZ\GDU]HQLDFK
1DWRPLDVWGUXJLHOHPHQW
<script> wczytuje informacje
]H]GDOQHJRVHUZHUD1D]ZD
IXQNFMLSU]HWZDU]DMÈFHMGDQH
MHVWSRGDZDQDZFLÈJX
WHNVWRZ\P]DS\WDQLD
c08/data-jsonp.html
HTML
<script src=”js/data-jsonp.js”></script>
<script src=”http://deciphered.com/js/jsonp.js?callback=showEvents”></script>
</body>
</html>
c08/js/data-jsonp.js
function showEvents(data) {
var newContent = ’’;
1
JAVASCRIPT
)XQNFMDZ\ZRïDQLD]ZURWQHJRSRZF]\WDQLX-621
=PLHQQDSU]HFKRZXMÈFD]DZDUWRĂÊ+70/
8WZRU]HQLHFLÈJXWHNVWRZHJRZUD]]QRZÈ]DZDUWRĂFLÈ PRĝQDXĝ\ÊWDNĝHRSHUDFML
// opartych na modelu DOM).
for (var i = 0; i < data.events.length; i++) { // Iteracja przez dane.
newContent += ’<div class=”event”>’;
newContent += ’<img src=”’ + data.events[i].map + ’”’;
newContent += ’ alt=”’ + data.events[i].location + ’” />’;
newContent += ’<p><b>’ + data.events[i].location + ’</b><br>’;
newContent += data.events[i].date + ’</p>’;
newContent += ’</div>’;
}
8DNWXDOQLHQLHVWURQ\QRZÈ]DZDUWRĂFLÈ
document.getElementById(’content’).innerHTML = newContent; }
1. .RGZSÚWOLfor (wykorzystywanej do przetworzenia
danych JSON oraz utworzenia
]DZDUWRĂFL+70/ LZLHUV]NRGX
RGSRZLHG]LDOQ\]DXPLHV]F]HQLH
]DZDUWRĂFLQDVWURQLHVÈ
WDNLHVDPHMDNZSU]\NïDG]LH
SU]HWZDU]DMÈF\PGDQH-621
SREUDQH]WHJRVDPHJRVHUZHUD
392 AJAX I JSON
,VWQLHMÈWU]\ZDĝQHUöĝQLFH
i) .RGMHVWRSDNRZDQ\IXQNFMÈ
o nazwie showEvents()
ii) 'DQH-621VÈSRGDZDQH
MDNRDUJXPHQWZ\ZRïDQLD
IXQNFML
iii) 'DQHQLHPXV]ÈE\ÊSU]HWZDU]DQH]DSRPRFÈPHWRG\
JSON.parse():SÚWOLfor
RGZRïDQLHGRGDQ\FKQDVWÚSXMH
z zastosowaniem parametru
data
=DPLDVWGHğQLRZDÊGUXJLHOHment <script> w dokumentach
+70/PRĝQDZ\NRU]\VWDÊ-DYD6FULSWGRZVWDZLHQLDQRZHJR
HOHPHQWX<script> na stronie
HTML (podobnie jak dodajesz
QDQLHMNDĝG\LQQ\HOHPHQW ']LÚNLWHPXFDïDIXQNFMRQDOQRĂÊ
GRW\F]ÈFD]HZQÚWU]Q\FKGDQ\FK
EÚG]LH]QDMGRZDïDVLÚZMHGQ\P
SOLNX-DYD6FULSW
-6213ZF]\WXMH-DYD6FULSW
DNDĝGHGDQH-DYD6FULSWPRJÈ
]DZLHUDÊNRGR]ïRĂOLZ\P
G]LDïDQLX=WHJRSRZRGX
SRZLQLHQHĂZF]\W\ZDÊGDQH
MHG\QLH]]DXIDQ\FKěUöGHï
3RQLHZDĝ-6213R]QDF]D
wczytywanie danych z innego
VHUZHUDPRĝHV]GRGDÊ]HJDU
ZFHOXVSUDZG]HQLDF]\VHUZHU
XG]LHOLïRGSRZLHG]LZRNUHĂORQ\PF]DVLH MHĂOLRGSRZLHGěQLH
QDGHMG]LHPRĝQDZ\ĂZLHWOLÊ
NRPXQLNDWREïÚG]LH JAVASCRIPT
:LÚFHMLQIRUPDFMLGRW\F]ÈF\FK
REVïXJLEïÚGöZ]QDMG]LHV]
ZUR]G]LDOHQDWRPLDVW
SU]\NïDGXĝ\FLD]HJDUD
SU]HGVWDZLRQRZUR]G]LDOH
ZNWöU\PWZRU]\P\VODMG\
]]DZDUWRĂFLÈ http://htmlandcssbook.com/js/jsonp.js
showEvents({
“events”: [
{
“location”: “San Francisco, CA”,
“date”: “1 maja”,
“map”: “img/map-ca.png”
},
{
“location”: “Austin, TX”,
“date”: “15 maja”,
“map”: “img/map-tx.png”
},
{
“location”: “New York, NY”,
“date”: “30 maja”,
“map”: “img/map-ny.png”
}
]
});
WYNIK
=DZDUWRĂÊSOLNX]ZUöFRQHJR
]VHUZHUDMHVWZZ\ZRïDQLX
funkcji showEvents() opakowana danymi w formacie
-621'ODWHJRWHĝIXQNFMD
showEvents()EÚG]LHZ\ZRï\ZDQDW\ONRZWHG\JG\SU]HJOÈGDUNDLQWHUQHWRZDZF]\WD
]HZQÚWU]QHGDQH
AJAX I JSON 393
JQUERY I AJAX — ŻĄDANIA
M4XHU\RIHUXMHNLONDPHWRGSU]H]QDF]RQ\FKGRREVïXJLĝÈGDñ$MD[
3RGREQLHMDNLQQHSU]\NïDG\ZUR]G]LDOHSURFHVWHQVNïDGDVLÚ]GZöFK
NURNöZĽZ\NRQDQLDĝÈGDQLDLREVïXJLRWU]\PDQHMRGSRZLHG]L
:WDEHOLSRSUDZHMVWURQLH
Z\PLHQLRQRV]HĂÊPHWRGM4XHU\
SR]ZDODMÈF\FKQDZ\NRQ\ZDQLH
ĝÈGDñ$MD[3LHUZV]HSLÚÊ
to skróty metody $.ajax()
NWöUD]RVWDïDZ\PLHQLRQDMDNR
RVWDWQLD V]öVWD Metoda .load() operuje
QDHOHPHQWDFKZ\EUDQ\FK
ZM4XHU\ F]\OLG]LDïDSRGREQLH
MDNZLÚNV]RĂÊPHWRGM4XHU\ 1RZÈ]DZDUWRĂÊ+70/PHWRGD
ta umieszcza we wskazanych
HOHPHQWDFK
0RĝHV]]REDF]\ÊĝH]DSLV
SR]RVWDï\FKSLÚFLXPHWRGMHVW
]XSHïQLHLQQ\7RVÈPHWRG\
RELHNWXJOREDOQHJRjQuery
VWÈGLFKQD]Z\]DF]\QDMÈVLÚ
od znaku $0HWRG\WHMHG\QLH
ĝÈGDMÈGDQ\FK]VHUZHUDQLH
Xĝ\ZDMÈDXWRPDW\F]QLHW\FK
GDQ\FKZFHOXXDNWXDOQLHQLD
HOHPHQWöZ]QDMGXMÈF\FKVLÚ
ZGRSDVRZDQ\P]ELRU]H
'ODWHJRWHĝSR]QDNX$ nie
]QDMGXMHVLÚVHOHNWRU
.LHG\VHUZHU]ZUöFLGDQH
VNU\SWPXVLZVND]DÊZMDNL
VSRVöEPDMÈE\ÊSU]HWZRU]RQH
394 AJAX I JSON
0(72'$ 6.’$'1,$
OPIS
.load()
:F]\WXMHIUDJPHQW\+70/ZHOHPHQFLH
To jest najprostsza metoda przeznaczona
GRSRELHUDQLDGDQ\FK
$.get()
:F]\WXMHGDQH]DSRPRFÈPHWRG\+773
GET8ĝ\ZDQDGRĝÈGDQLDGDQ\FK]VHUZHUD
$.post()
:F]\WXMHGDQH]DSRPRFÈPHWRG\+773
POST8ĝ\ZDQDZFHOXZ\V\ïDQLDGDQ\FK
NWöUHXDNWXDOQLDMÈGDQHZVHUZHU]H
$.getJSON()
:F]\WXMHGDQH-621]DSRPRFÈĝÈGDQLD
GET0HWRGDXĝ\ZDQDGODGDQ\FK-621
$.getScript()
:F]\WXMHLZ\NRQXMHGDQH-DYD6FULSW]D
SRPRFÈĝÈGDQLDGET0HWRGDXĝ\ZDQDGOD
GDQ\FK-DYD6FULSW QDSU]\NïDG-6213 $.ajax()
Metoda wykorzystywana do wykonywania
ZV]\VWNLFKĝÈGDñ:\PLHQLRQHZF]HĂQLHM
PHWRG\ZWOHXĝ\ZDMÈ$.ajax()
JQUERY I AJAX — ODPOWIEDZI
3RGF]DVXĝ\FLDPHWRG\.load()]DZDUWRĂÊ+70/]ZUDFDQDSU]H]VHUZHU
]RVWDMHZVWDZLRQDGRHOHPHQWöZZ\EUDQ\FKZM4XHU\:SU]\SDGNX
SR]RVWDï\FKPHWRGWU]HEDZVND]DÊVSRVöESU]HWZRU]HQLDGDQ\FK
]ZUöFRQ\FK]DSRPRFÈRELHNWXjqXHR
:’$¥&,:2¥&,-4;+5
OPIS
responseText
=ZUöFRQHGDQHWHNVWRZH
responseXML
=ZUöFRQHGDQH;0/
status
.RGVWDQX
statusText
2SLVVWDQX ]Z\NOHZ\NRU]\VW\ZDQ\
GRZ\ĂZLHWOHQLDLQIRUPDFMLREïÚG]LH
MHĂOLWDNLZ\VWÈSL 0(72'<-4;+5
OPIS
.done()
.RGSU]H]QDF]RQ\GRXUXFKRPLHQLDMHĂOLZ\NRQDQLH
ĝÈGDQLD]DNRñF]\ïRVLÚSRZRG]HQLHP
.fail()
.RGSU]H]QDF]RQ\GRXUXFKRPLHQLDMHĂOLZ\NRQDQLH
ĝÈGDQLD]DNRñF]\ïRVLÚQLHSRZRG]HQLHP
.always()
.RGSU]H]QDF]RQ\GRXUXFKRPLHQLDMHĂOLZ\NRQDQLH
ĝÈGDQLD]DNRñF]\ïRVLÚSRZRG]HQLHPOXEQLHSRZRG]HQLHP
.abort()
:VWU]\PDQLHNRPXQLNDFML
WZGLĘDNE ADRESY URL
-HĝHOL]DZDUWRĂÊZF]\W\ZDQD
]DSRPRFÈWHFKQRORJLL$MD[
]DZLHUDZ]JOÚGQHDGUHV\85/
QDSU]\NïDGREUD]\LïÈF]D WRWHDGUHV\85/EÚGÈWUDNWRZDQHZWDNLVSRVöEMDNE\
E\ï\Z]JOÚGQHGODpierwotnie
ZF]\WDQHMVWURQ\
-HĝHOLQRZD]DZDUWRĂÊ+70/
]QDMGXMHVLÚZLQQ\PNDWDORJXQLĝSLHUZRWQDVWURQDWR
Z]JOÚGQHĂFLHĝNLDGUHVXPRJÈ
RND]DÊVLÚQLHSUDZLGïRZH
1. 7HQSOLN+70/Z\NRU]\VWXMHWHFKQRORJLÚ$MD[ZFHOX
ZF]\WDQLD]DZDUWRĂFL]HVWURQ\
]QDMGXMÈFHMVLÚZNDWDORJX
ZVND]DQ\PZSXQNFLH
2. 6WURQDZW\PNDWDORJX
]DZLHUDREUD]\RĂFLHĝNDFK
GRVWÚSXZ]JOÚGQ\FKGOD
GUXJLHJRNDWDORJX
<img src=”img/box.gif” />
3. 3OLN+70/QLHPRĝHRGV]XNDÊREUD]XSRQLHZDĝĂFLHĝND
GRVWÚSXQLHMHVWMXĝSUDZLGïRZD
ĽQLHSURZDG]LGRHOHPHQWX
ZNDWDORJXSRWRPQ\P
jQuery ma obiekt o nazwie
jqXHRNWöU\XïDWZLDREVïXJÚ
GDQ\FKRWU]\PDQ\FK]VHUZHUD
:ïDĂFLZRĂFLLPHWRG\WHJR
RELHNWX Z\PLHQLRQHZWDEHODFK
SROHZHMVWURQLH EÚGÈXĝ\ZDQH
QDNLONXNROHMQ\FKVWURQDFK
3RQLHZDĝM4XHU\SR]ZDODQD
ïÈF]HQLHPHWRGWR]DSRPRFÈ
metod .done().fail()
i .always()PRĝQDXUXFKRPLÊ
RGSRZLHGQLNRGZ]DOHĝQRĂFL
od wyniku operacji wczytywania
GDQ\FK
1
2
3
AJAX I JSON 395
WCZYTYWANIE ZAWARTOŚCI
HTML NA STRONIE
Z WYKORZYSTANIEM JQUERY
Metoda .load()WRQDMSURVWV]D]PHWRGM4XHU\$MD[0RĝHE\ÊXĝ\ZDQD
MHG\QLHGRZF]\W\ZDQLD]DZDUWRĂFL+70/]VHUZHUDDOHNLHG\VHUZHU
XG]LHODRGSRZLHG]L]DZDUWRĂÊWDMHVWXPLHV]F]DQDZHOHPHQWDFKZ\EUDQ\FK
ZM4XHU\
SELEKTOR JQUERY
ADRES URL STRONY
SELEKTOR
1DSRF]ÈWNXQDOHĝ\Z\EUDÊ
HOHPHQWZNWöU\PPD]RVWDÊ
XPLHV]F]RQD]DZDUWRĂÊ+70/
1DVWÚSQLHPHWRGD.load() jest
Xĝ\ZDQDGRZVND]DQLDDGUHVX
85/VWURQ\+70/SU]H]QDF]R
QHMGRZF]\WDQLD
,VWQLHMHPRĝOLZRĂÊRNUHĂOHQLD
ĝHPD]RVWDÊZF]\WDQDW\ONR
F]ÚĂÊVWURQ\ ]DPLDVWFDïHM $(’#content’).load(’jq-ajax3.html #content’);
1
1. 8WZRU]HQLHRELHNWXM4XHU\
NWöUHJRDWU\EXWidPDZDUWRĂÊ
content.
2
2. $GUHV85/VWURQ\]NWöUHM
PD]RVWDÊZF]\WDQD]DZDUWRĂÊ
+70/0LÚG]\DGUHVHP85/
LVHOHNWRUHPZNURNXPXVL
]QDMGRZDÊVLÚVSDFMD
1DVWURQLHSRND]DQHMSRSUDZHMïÈF]D
]QDMGXMÈFHVLÚZSUDZ\PJöUQ\PURJX
VÈXĝ\ZDQHGRSU]HMĂFLDQDLQQHVWURQ\
-HĝHOLXĝ\WNRZQLNPDZïÈF]RQÈREVïXJÚ
-DYD6FULSWWRNOLNQLÚFLHïÈF]DSRZRGXMH
ĝHNRGZPHWRG]LHREVïXJL]GDU]HQLD
.on()QLHZF]\WXMHFDïHMQRZHMVWURQ\
=DPLDVWWHJRPHWRGD.load()]DVWÚSXMH
REV]DUR]QDF]RQ\NRORUHPUöĝRZ\P
VHNFMDZNWöUHMDWU\EXWidPDZDUWRĂÊ
content RGSRZLHGQLPIUDJPHQWHP]H
VWURQ\ZVND]DQHMSU]H]Xĝ\WNRZQLND
2GĂZLHĝRQ\EÚG]LHMHG\QLHREV]DU
R]QDF]RQ\NRORUHPUöĝRZ\PDQLH
FDïDVWURQD
396 AJAX I JSON
3
3. 7RMHVWIUDJPHQWVWURQ\
+70/SU]H]QDF]RQ\GR
Z\ĂZLHWOHQLD3RQRZQLHEÚG]LH
WRVHNFMDNWöUHMDWU\EXWid ma
ZDUWRĂÊcontent.
WCZYTYWANIE ZAWARTOŚCI
.LHG\Xĝ\WNRZQLNNOLNQLH
GRZROQHïÈF]HZHOHPHQFLH
<nav>QDVWÈSLMHGQR]GZöFK
SRQLĝV]\FK]GDU]Hñ
-HĝHOLZïÈF]RQDMHVWREVïXJD
-DYD6FULSW]GDU]HQLHclick
VSRZRGXMHZ\ZRïDQLHIXQNFML
DQRQLPRZHMNWöUD]NROHL
ZF]\WDLXPLHĂFLQDVWURQLH
QRZÈ]DZDUWRĂÊ
-HĝHOLREVïXJD-DYD6FULSW
QLHMHVWZïÈF]RQDWRQDVWÈSL
VWDQGDUGRZHSU]HMĂFLH]MHGQHM
VWURQ\QDLQQÈ
:HZQÈWU]IXQNFMLDQRQLPRZHM
PRĝQDZ\UöĝQLÊSLÚÊHWDSöZ
G]LDïDQLD
3. Atrybuty classZïÈF]DFK
]RVWDMÈXDNWXDOQLRQHLZVND]XMÈ
VWURQÚELHĝÈFÈ
1. :\ZRïDQLH
e.preventDefault() wstrzyPXMHSU]HQLHVLHQLHXĝ\WNRZQLND
QDQRZÈVWURQÚ
4. (OHPHQWSU]HFKRZXMÈF\
]DZDUWRĂÊ]RVWDMHXVXQLÚW\
2. Zmienna o nazwie url
SU]HFKRZXMHDGUHV85/VWURQ\
GRZF]\WDQLD$GUHVWHQMHVW
pobierany z atrybutu hrefïÈF]D
NOLNQLÚWHJRSU]H]Xĝ\WNRZQLND
LZVND]XMHVWURQÚSU]H]QDF]RQÈ
GRZF]\WDQLD
c08/js/jq-load.js
JAVASCRIPT
1
2
$(’nav a’).on(’click’, function(e) {
e.preventDefault();
var url = this.href;
5
8ĝ\WNRZQLNNOLNQÈïïÈF]H
=DWU]\PDQLHZF]\W\ZDQLDQRZHJRïÈF]D
3REUDQLHZDUWRĂFLDWU\EXWXKUHI
$(’nav a.current’).removeClass(’current’); 8VXQLÚFLHNODV\FXUUHQW
$(this).addClass(’current’);
2NUHĂOHQLHQRZHJRHOHPHQWXMDNRELHĝÈFHJR
3
4
5. 1DVWÚSXMHZ\EöUHOHPHQWX
NRQWHQHUDDPHWRGD.load()
SRELHUDQRZÈ]DZDUWRĂÊ
(OHPHQWMHVWQDW\FKPLDVWXNU\ZDQ\]DSRPRFÈZ\ZRïDQLD
.hide()DE\PöJïSRMDZLÊVLÚ
QDVWURQLHQDVNXWHNZ\ZRïDQLD
fadeIn()
$(’#container’).remove();
8VXQLÚFLHVWDUHM]DZDUWRĂFL
$(’#content’).load(url + ’ #content’).hide().fadeIn(’slow’); 1RZD]DZDUWRĂÊ
});
HTML
c08/jq-load.html
<nav>
<a href=”jq-load.html” class=”current”>6WURQDJïöZQD</a>
<a href=”jq-load2.html”>Trasa</a>
<a href=”jq-load3.html”>*DGĝHW\</a>
</nav>
<section id=”content”>
<div id=”container”>
0LHMVFHQD]DZDUWRĂÊVWURQ\!
</div>
</section>
’ÈF]DEÚGÈG]LDïDï\QDZHW
MHĂOLREVïXJD-DYD6FULSWMHVW
Z\ïÈF]RQDZSU]HJOÈGDUFH
:SU]\SDGNXZïÈF]HQLDREVïXJL-DYD6FULSWELEOLRWHND
M4XHU\]DZDUWRĂÊZVND]DQHM
VWURQ\ZF]\WDGRHOHPHQWX
<div>NWöUHJRDWU\EXWid
PDZDUWRĂÊcontent3R]RVWDïDF]ÚĂÊVWURQ\QLHPXVL
E\ÊSRQRZQLHZF]\W\ZDQD
AJAX I JSON 397
SKRÓTY METOD AJAX
W JQUERY
jQuery oferuje skróty metod przeznaczonych
GRREVïXJLRNUHĂORQ\FKW\SöZĝÈGDñ$MD[
:\PLHQLRQHSRQLĝHMPHWRG\VÈ
PHWRGDPLVNUöWöZ3DWU]ÈFQD
NRGěUöGïRZ\M4XHU\]DXZDĝ\V]ĝHZWOHZV]\VWNLHRQH
Xĝ\ZDMÈPHWRG\$.ajax()
0HWRG\WHSR]QDV]QDNROHMQ\FK
NLONXVWURQDFKZSURZDG]DMÈ
RQHNOXF]RZHDVSHNW\PHWRG\
$.ajax()
:SU]HFLZLHñVWZLHGRLQQ\FK
metod wymienione tutaj nie
G]LDïDMÈ]HOHPHQWDPLZ\EUDQ\PLZM4XHU\'ODWHJRWHĝ
MHG\Q\PSUHğNVHPMHVW]QDN
$]DPLDVWNROHNFMLHOHPHQWöZ
Z\EUDQ\FKZM4XHU\=UHJXï\
PHWRG\WHVÈZ\ZRï\ZDQHSU]H]
]GDU]HQLHWDNLHMDNZF]\WDQLH
VWURQ\OXEG]LDïDQLDSRGHMPRZDQHSU]H]Xĝ\WNRZQLNDQD
VWURQLH QDSU]\NïDGNOLNQLÚFLH
ïÈF]DZ\VïDQLHIRUPXODU]D :SU]\SDGNXĝÈGDQLD$MD[F]ÚVWR]DFKRG]LSRWU]HEDZ\VïDQLD
GDQ\FKGRVHUZHUDFR]NROHL
ZSï\ZDQDGDQHSU]HND]\ZDQH
SU]HJOÈGDUFHSU]H]VHUZHU
Podobnie jak w przypadku
IRUPXODU]\+70/ LĝÈGDñ$MD[
SU]HGVWDZLRQ\FKZF]HĂQLHM
ZUR]G]LDOH GDQHPRĝQD
Z\VïDÊ]DSRPRFÈ+773GET
OXEPOST
0(72'$ 6.’$'1,$
OPIS
$.get(url[, dane][, Z\ZRïDQLHB]ZURWQH][, typ])
¿ÈGDQLH+773GETPDMÈFHQDFHOXSREUDQLHGDQ\FK
$.post(url[, dane][, Z\ZRïDQLHB]ZURWQH][, typ])
¿ÈGDQLH+773POSTXDNWXDOQLDMÈFHGDQHZVHUZHU]H
$.getJSON(url[, dane][, Z\ZRïDQLHB]ZURWQH])
:F]\WDQLHGDQ\FK-621]DSRPRFÈĝÈGDQLDGET
$.getScript(url[, Z\ZRïDQLHB]ZURWQH])
:F]\WDQLHLZ\NRQDQLHNRGX-DYD6FULSW QDSU]\NïDG
-6213 ]DSRPRFÈĝÈGDQLDGET
3DUDPHWU\Z\PLHQLRQHZQDZLDVDFKNZDGUDWRZ\FKVÈRSFMRQDOQH
$ZVND]XMHĝHMHVWWRPHWRGDRELHNWXjQuery
urlRNUHĂODPLHMVFHVNÈGPDMÈE\ÊSREUDQHGDQH
daneGRVWDUF]DZV]HONLHLQIRUPDFMHGRGDWNRZHSU]HND]\ZDQHVHUZHURZL
Z\ZRïDQLHB]ZURWQHZVND]XMHĝHIXQNFMDSRZLQQDE\ÊZ\ZRïDQDJG\]RVWDQÈ]ZUöFRQHGDQH
PRĝHWRE\ÊIXQNFMDDQRQLPRZDOXEQD]ZDQD typZVND]XMHW\SGDQ\FKRF]HNLZDQ\FK]VHUZHUD
8ZDJD3U]HGVWDZLRQHWXWDMSU]\NïDG\G]LDïDMÈMHG\QLHZVHUZHU]H::: DQLHORNDOQ\PV\VWHPLH
SOLNöZ .RQğJXUDFMDVHUZHUD:::LMÚ]\NLG]LDïDMÈFHSRVWURQLHVHUZHUDWR]DJDGQLHQLDZ\NUDF]DMÈFH
SR]D]DNUHVWHPDW\F]Q\WHMNVLÈĝNL3U]\NïDG\PRĝHV]MHGQDNZ\SUöERZDÊZZLWU\QLHSRĂZLÚFRQHM
NVLÈĝFH3OLNL3+3]QDMGXMÈVLÚZPDWHULDïDFKGRïÈF]RQ\FKGRNVLÈĝNLDOHXPLHV]F]RQRMHWDPW\ONR
ZFHODFKGHPRQVWUDF\MQ\FK
398 AJAX I JSON
ŻĄDANIE DANYCH
:SU]HGVWDZLRQ\PSRQLĝHM
SU]\NïDG]LHXĝ\WNRZQLNJïRVXMH
QDXOXELRQÈNRV]XONÚLQLHPXVL
SU]\W\PRSXV]F]DÊVWURQ\
MHVWSU]HFKRZ\ZDQDZ]PLHQQHM
o nazwie queryString w formaFLHFLÈJXWHNVWRZHJR]DS\WDQLD
QDSU]\NïDGvote=gray
iii) )XQNFMDREVïXJXMÈFD
GDQHRWU]\PDQH]VHUZHUD
:RPDZLDQ\PSU]\NïDG]LHWR
IXQNFMDDQRQLPRZD
1. .OLNQLÚFLHNRV]XONLSU]H]
Xĝ\WNRZQLNDSRZRGXMHZ\ZRïDQLHIXQNFMLDQRQLPRZHM
4. Metoda $.get()MHVW
Z\ZRï\ZDQD]Xĝ\FLHPWU]HFK
SDUDPHWUöZ
i) 6WURQDRGSRZLHG]LDOQD]D
SU]HWZRU]HQLHĝÈGDQLD ZW\P
VDP\PVHUZHU]H ii) 'DQHZ\V\ïDQHGRVHUZHUD
ZRPDZLDQ\PSU]\NïDG]LHMHVW
WRFLÈJWHNVWRZ\]DPöZLHQLD
DOHWRPRJÈE\ÊUöZQLHĝGDQH
-621 5. 3RXG]LHOHQLXRGSRZLHG]L
SU]H]VHUZHUZ\ZRïDQLH]ZURWQH
ZSRVWDFLIXQNFMLDQRQLPRZHM
]DMPXMHVLÚREVïXJÈGDQ\FK
:RPDZLDQ\PSU]\NïDG]LH
NRGIXQNFMLSRZRGXMHSREUDQLH
HOHPHQWXSU]HGVWDZLDMÈFHJR
NRV]XONÚZ\EUDQÈSU]H]
Xĝ\WNRZQLNDDQDVWÚSQLH
]DVWÈSLHQLHJRNRGHP+70/
RWU]\PDQ\P]VHUZHUD2GE\ZD
VLÚWR]DSRPRFÈPHWRG\M4XHU\
o nazwie .html()
2. Metoda e.PreventDefault()
XQLHPRĝOLZLDSU]HMĂFLHQDQRZÈ
VWURQÚ
3. :\EöUGRNRQDQ\SU]H]
Xĝ\WNRZQLNDWRZDUWRĂÊ
DWU\EXWXidREUD]X:DUWRĂÊWD
JAVASCRIPT
1
2
3
4
5
c08/js/jq-get.js
$(’#selector a’).on(’click’, function(e) {
e.preventDefault();
var queryString = ’vote=’ + event.target.id;
$.get(’votes.php’, queryString, function(data) {
$(’#selector’).html(data);
});
});
HTML
(Ten kod HTML jest tworzony przez kod znajdujący się w pliku JS).
<div class=”third”><a href=”vote.php?vote=gray”>
<img src=”img/t-gray.png” id=”gray” alt=”gray” /></a></div>
<div class=”third”><a href=”vote.php?vote=yellow”>
<img src=”img/t-yellow.png” id=”yellow” alt=”yellow” /></a></div>
<div class=”third”><a href=”vote.php?vote=green”>
<img src=”img/t-green.png” id=”green” alt=”green” /></a></div>
WYNIK
’ÈF]DSURZDG]ÈFHGRNRV]XOHNVÈWZRU]RQHSU]H]
NRG]QDMGXMÈF\VLÚZSOLNX-6*ZDUDQWXMHWR
LFKZ\ĂZLHWOHQLHW\ONRZWHG\JG\SU]HJOÈGDUND
REVïXJXMH-DYD6FULSW Z\QLNRZDVWUXNWXUD+70/
]RVWDïDSU]HGVWDZLRQDSRZ\ĝHM .LHG\VHUZHU
XG]LHODRGSRZLHG]LQLHPXVLRQD]DZLHUDÊNRGX
+70/:DUWRĂFLÈ]ZURWQÈPRJÈE\ÊGRZROQHJR
URG]DMXGDQHNWöUHSU]HJOÈGDUNDSRWUDğSU]HWZRU]\ÊLZ\NRU]\VWDÊ
AJAX I JSON 399
WYSYŁANIE FORMULARZY
SIECIOWYCH
Z WYKORZYSTANIEM
TECHNOLOGII AJAX
:FHOXZ\VïDQLDGDQ\FKGRVHUZHUD
SUDZGRSRGREQLHXĝ\MHV]PHWRG\
.post()%LEOLRWHNDM4XHU\RIHUXMHWDNĝHPHWRGÚ.serialize()
SU]H]QDF]RQÈGR]ELHUDQLDGDQ\FK
]IRUPXODU]DVLHFLRZHJR
• XPLHV]F]HQLHW\FKLQIRUPDFMLZFLÈJXWHNVWR-
WYSYŁANIE DANYCH FORMULARZA
SIECIOWEGO
:\V\ïDRQDMHG\QLHGDQH]NRQWUROHNIRUPXODU]D
sieciowego oznaczonych jako SUDZLGïRZR
Z\SHïQLRQHFRR]QDF]DĝHQLH]RVWDQÈZ\VïDQH
LQIRUPDFMH
]NRQWUROHNZ\ïÈF]RQ\FK
]NRQWUROHNZNWöU\FKQLHZ\EUDQRĝDGQHM
opcji;
]SU]\FLVNXZ\V\ïDMÈFHJRIRUPXODU]
Metoda HTTP POSTMHVWF]ÚVWRVWRVRZDQDSRGF]DV
Z\V\ïDQLDGDQ\FKIRUPXODU]DVLHFLRZHJRGR
VHUZHUD3RVLDGDRGSRZLDGDMÈFÈMHMIXQNFMÚĽ
PHWRGÚ.post()NWöUDSRELHUDWU]\WDNLHVDPH
parametry jak metoda .get()
i) QD]ZÚSOLNX ZW\PVDP\PVHUZHU]H RGSRZLHG]LDOQHJR]DSU]HWZRU]HQLHGDQ\FKIRUPXODU]D
sieciowego;
ii) GDQHIRUPXODU]DZ\V\ïDQHGRVHUZHUD
iii) IXQNFMÚZ\ZRïDQLD]ZURWQHJRREVïXJXMÈFÈ
RGSRZLHGěXG]LHORQÈSU]H]VHUZHU
1DVWURQLHSRSUDZHMPRĝHV]]REDF]\Ê]DVWRVRwanie metody $.post() wraz z .serialize()
FRVWDQRZLEDUG]RXĝ\WHF]QHSRïÈF]HQLHSRGF]DV
SUDF\]IRUPXODU]DPLVLHFLRZ\PL:\PLHQLRQH
PHWRG\UD]HPZ\V\ïDMÈGDQHGRVHUZHUD
POBIERANIE DANYCH FORMULARZA
SIECIOWEGO
']LDïDQLHPHWRG\M4XHU\.serialize() przedstaZLDVLÚQDVWÚSXMÈFR
SREUDQLHZV]\VWNLFKLQIRUPDFML]IRUPXODU]D
sieciowego;
•
400 AJAX I JSON
•
Z\PNWöU\MHVWJRWRZ\GRZ\VïDQLDGRVHUZHUD
]DNRGRZDQLH]QDNöZNWöUHQLHPRJÈE\Ê
Xĝ\ZDQHZFLÈJXWHNVWRZ\P]DS\WDQLD
=Z\NOHPHWRGDWDEÚG]LHVWRVRZDQDZVHOHNFML
]DZLHUDMÈFHMHOHPHQW<form> FKRÊPRĝQDMÈ
Z\NRU]\VW\ZDÊWDNĝHZSRV]F]HJöOQ\FKHOHPHQWDFKOXESRG]ELRU]HIRUPXODU]D •
•
•
PO STRONIE SERWERA
.LHG\VWURQDSRVWURQLHVHUZHUD]DMPXMHVLÚREVïXJÈIRUPXODU]DVLHFLRZHJRPRĝQDMÈZ\NRU]\VWDÊ
WDNĝHZQDVWÚSXMÈF\FKV\WXDFMDFK
:\NRQDQH]RVWDïR]Z\NïHĝÈGDQLHVWURQ\
LQWHUQHWRZHM ZWDNLPSU]\SDGNXZ\V\ïDQDMHVW
FDïDVWURQD :\NRQDQH]RVWDïRĝÈGDQLH$MD[ ZWDNLP
SU]\SDGNXZ\V\ïDQ\PRĝHE\ÊW\ONRIUDJPHQW
VWURQ\ •
•
=DSRĂUHGQLFWZHPQDJïöZNDX-Requested-With
SRVWURQLHVHUZHUDPRĝQDVSUDZG]LÊF]\ĝÈGDQLH
]RVWDïRZ\NRQDQHZWHFKQRORJLL$MD[
-HĝHOLZ\PLHQLRQ\QDJïöZHNMHVWXVWDZLRQ\LPD
ZDUWRĂÊXMLHttpRequestWRZLDGRPRĝHĝÈGDQLH
]RVWDïRZ\NRQDQHZWHFKQRORJLL$MD[
WYSYŁANIE FORMULARZY
SIECIOWYCH
1. .LHG\Xĝ\WNRZQLNZ\V\ïD
IRUPXODU]VLHFLRZ\QDVWÚSXMH
Z\NRQDQLHIXQNFMLDQRQLPRZHM
2. Metoda e.PreventDefault()
XQLHPRĝOLZLDZ\VïDQLHIRUPXODU]DVLHFLRZHJR
3. =DSRPRFÈPHWRG\
.serialize()QDVWÚSXMH
]HEUDQLHGDQ\FKIRUPXODU]D
JAVASCRIPT
1
2
3
4
5
DQDVWÚSQLHLFKXPLHV]F]HQLH
w zmiennej details
4. Metoda $.post() jest
Z\ZRïDQD]Xĝ\FLHPWU]HFK
SDUDPHWUöZ
i) DGUHVX85/VWURQ\GRNWöUHM
VÈSU]HND]\ZDQHGDQH
ii) GDQ\FK]HEUDQ\FK]IRUPXODrza sieciowego;
iii) IXQNFMLZ\ZRïDQLD]ZURWQHJRNWöUDZ\ĂZLHWOLZ\QLNL
Xĝ\WNRZQLNRZL
5. .LHG\VHUZHUXG]LHOLRGSRZLHG]L]DZDUWRĂÊHOHPHQWX
którego atrybut idPDZDUWRĂÊ
register]RVWDQLHQDGSLVDQD
QRZÈ]DZDUWRĂFLÈ+70/
RWU]\PDQÈ]VHUZHUD
c08/js/jq-post.js
$(’#register’).on(’submit’, function(e) {
3RZ\VïDQLXIRUPXODU]DVLHFLRZHJR
e.preventDefault();
8QLHPRĝOLZLHQLHZ\VïDQLDIRUPXODU]D
var details = $(’#register’).serialize();
6HULDOL]DFMDGDQ\FKIRUPXODU]D
$.post(’register.php’, details, function(data) {
8ĝ\FLHPHWRG\SRVW GRZ\VïDQLDGDQ\FK
$(’#register’).html(data);
0LHMVFHZ\ĂZLHWOHQLDZ\QLNX
});
});
HTML
c08/jq-post.html
<form id=”register” action=”register.php” method=”post”>
<h2>Rejestracja</h2>
<label for=”name”>1D]ZDXĝ\WNRZQLND</label><input type=”text” id=”name” name=”name” />
<label for=”pwd”>+DVïR</label><input type=”password” id=”pwd” name=”pwd” />
<label for=”email”>E-mail</label><input type=”email” id=”email” name=”email” />
LQSXWW\SH ĵVXEPLWĵYDOXH ĵ'RïÈF]ĵ!
</form>
WYNIK
3U]\NïDGWHQWU]HEDXUXFKRPLÊZVHUZHU]H:::
6WURQD]QDMGXMÈFDVLÚSRVWURQLHVHUZHUD]ZUöFL
NRPXQLNDWSRWZLHUG]HQLD DOHQLHSU]HSURZDG]D
ZHU\ğNDFMLRWU]\PDQ\FKGDQ\FKRUD]QLHZ\V\ïD
ZLDGRPRĂFLHPDLO]SRWZLHUG]HQLHP AJAX I JSON 401
WCZYTYWANIE DANYCH JSON
I OBSŁUGA BŁĘDÓW AJAX
'DQH-621PRĝQDZF]\WDÊ]DSRPRFÈPHWRG\$.getJSON()
,VWQLHMÈWDNĝHPHWRG\SRPDJDMÈFHZSU]HWZRU]HQLXRGSRZLHG]L
JG\Z\NRQDQLHPHWRG\]DNRñF]\VLÚQLHSRZRG]HQLHP
WCZYTANIE DANYCH JSON
SUKCES I NIEPOWODZENIE
-HĝHOLFKFHV]ZF]\WDÊGDQH-621GRG\VSR]\FML
PDV]PHWRGÚRQD]ZLH$.getJSON()-HMG]LDïDQLHSROHJDQDSREUDQLXGDQ\FK-621]WHJR
VDPHJRVHUZHUD]NWöUHJRSRFKRG]LVWURQD
$E\Xĝ\Ê-6213QDOHĝ\Z\NRU]\VWDÊPHWRGÚ
$.getScript()
'RVWÚSQHVÈWU]\PHWRG\NWöUHPRĝQDïÈF]\ÊSR
$.get()$.post()$.getJSON() oraz $.ajax()
ZFHOXREVïXĝHQLDVXNFHVXOXEQLHSRZRG]HQLD
ĝÈGDQLD
AJAX I BŁĘDY
&]DVDPL]GDU]DVLÚĝHĝÈGDQLHVWURQ\LQWHUQHWRZHM]DNRñF]\VLÚQLHSRZRG]HQLHPWHFKQRORJLD
$MD[QLHMHVWWXWDMZ\MÈWNLHP'ODWHJRWHĝM4XHU\
GRVWDUF]DGZLHPHWRG\NWöUHPRJÈXUXFKRPLÊ
RGSRZLHGQLNRGZ]DOHĝQRĂFLRGZ\QLNXZ\NRQDQLDĝÈGDQLD VXNFHVOXEQLHSRZRG]HQLH 3RQDGWR
GRVWÚSQDMHVWMHV]F]HWU]HFLDPHWRGDXUXFKDPLDMÈFDNRGQLH]DOHĝQLHRGZ\QLNXZ\NRQDQLD
ĝÈGDQLD
3RQLĝHMSU]HGVWDZLRQRSU]\NïDGSRND]XMÈF\WH
NRQFHSFMH
402 AJAX I JSON
.done()ĽPHWRGD]GDU]HQLDNWöUDMHVWZ\ZRï\ZDQDJG\Z\NRQDQLHĝÈGDQLD]DNRñF]\VLÚ
powodzeniem;
.fail()ĽPHWRGD]GDU]HQLDNWöUDMHVWZ\ZRï\ZDQDJG\Z\NRQDQLHĝÈGDQLD]DNRñF]\VLÚ
niepowodzeniem;
.always()ĽPHWRGD]GDU]HQLDNWöUDMHVW
Z\ZRï\ZDQDSRZ\NRQDQLXĝÈGDQLDQLH]DOHĝQLHRG
MHJRZ\QLNX VXNFHVOXEQLHSRZRG]HQLH :VWDUV]\FKVNU\SWDFKPRĝQDVSRWNDÊVLÚ]Xĝ\ciem metod .success().error() i .complete()
]DPLDVWZ\PLHQLRQ\FK,FKG]LDïDQLHMHVWWDNLH
VDPRDOHQRZV]HPHWRG\VÈSUHIHURZDQÈRSFMÈ
SRF]ÈZV]\RGM4XHU\
JSON I BŁĘDY
1. :RPDZLDQ\PSU]\NïDG]LH
GDQH-621SU]HGVWDZLDMÈ
NXUV\Z\PLDQ\ZDOXWZF]\WDQH
QDVWURQLH]DSRPRFÈIXQNFML
o nazwie loadRates()
2. :SLHUZV]\PZLHUV]XVNU\Stu na stronie zostaje umieszF]RQ\HOHPHQWSU]H]QDF]RQ\GR
SU]HFKRZ\ZDQLDGDQ\FK
3. Funkcja loadRates() jest
Z\ZRï\ZDQDZRVWDWQLP
ZLHUV]XVNU\SWX
JAVASCRIPT
4. :HZQÈWU]IXQNFML
loadRates() metoda
$.getJSON()SUöEXMHZF]\WDÊ
SHZQHGDQH-6213R
wymienionej metodzie mamy
GRïÈF]RQHZ\ZRïDQLDMHV]F]H
WU]HFKLQQ\FK1LHZV]\VWNLH
]QLFK]RVWDQÈZ\ZRïDQH
5. Metoda .done() jest wykoQDQDW\ONRZWHG\JG\SREUDQLH
GDQ\FK]DNRñF]\VLÚVXNFHVHP
=DZLHUDIXQNFMÚDQRQLPRZÈ
Z\ĂZLHWODMÈFÈNXUV\Z\PLDQ\
LJRG]LQÚLFKZ\ĂZLHWOHQLD
6. Metoda .fail() jest wykoQ\ZDQDW\ONRZWHG\JG\VHUZHU
QLHPRĝH]ZUöFLÊGDQ\FK-HM
]DGDQLHPMHVWZ\ĂZLHWOHQLH
Xĝ\WNRZQLNRZLNRPXQLNDWX
REïÚG]LH
7. Metoda .always()EÚG]LH
Z\NRQDQDQLH]DOHĝQLHRG
Z\QLNXĝÈGDQLD'RGDMH
SU]\FLVNRGĂZLHĝHQLDRUD]
SURFHGXUÚREVïXJL]GDU]Hñ
SRQRZQLHZ\ZRïXMÈFÈIXQNFMÚ
loadRates()
c08/js/jq-getJSON.js
2
$(’#exchangerates’).append(’<div id=”rates”></div><div id=”reload”></div>’);
1
4
5
function loadRates() {
$.getJSON(’data/rates.json’)
.done( function(data){
6HUZHU]ZUDFDGDQH
var d = new Date();
// Utworzenie obiektu daty.
var hrs = d.getHours();
2NUHĂOHQLHJRG]LQ\
var mins = d.getMinutes();
2NUHĂOHQLHPLQXW\
var msg = ’<h2>Kursy wymiany walut</h2>’;
3RF]ÈWHNNRPXQLNDWX
$.each(data, function(key, val) {
// Dodanie poszczególnych kursów wymiany.
msg += ’<div class=”’ + key + ’”>’ + key + ’: ’ + val + ’</div>’;
});
msg += ’<br>Ostatnia aktualizacja: ’ + hrs + ’:’ + mins + ’<br>’;
:\ĂZLHWOHQLHXDNWXDOQLRQHMJRG]LQ\
$(’#rates’).html(msg);
// Umieszczenie na stronie kursów wymiany.
}).fail( function() {
:\VWÈSLïEïÈG
ijDVLGHij DSSHQG ij3U]HSUDV]DP\QLHPRĝQDSREUDÊGDQ\FKij :\ĂZLHWOHQLHNRPXQLNDWXREïÚG]LH
}).always( function() {
7DPHWRGD]DZV]HMHVWZ\ZRï\ZDQD
var reload = ’<a id=”refresh” href=”#”>’;
'RGDQLHïÈF]DRGĂZLHĝDMÈFHJR]DZDUWRĂÊ
reload += ’<img src=”img/refresh.png” alt=”refresh” /></a>’;
$(’#reload’).html(reload);
'RGDQLHïÈF]DRGĂZLHĝDMÈFHJR]DZDUWRĂÊ
$(’#refresh’).on(’click’, function(e) {
'RGDQLHSURFHGXU\REVïXJL]GDU]HñFOLFN
e.preventDefault();
8QLHPRĝOLZLHQLHSU]HMĂFLDQDQRZÈVWURQÚ
loadRates();
:\ZRïDQLHIXQNFMLORDG5DWHV });
});
}
6
7
3
loadRates();
:\ZRïDQLHIXQNFMLORDG5DWHV AJAX I JSON 403
WIĘKSZA KONTROLA
NAD ŻĄDANIAMI AJAX
Metoda $.ajax()GDMHZLÚNV]ÈNRQWUROÚQDGĝÈGDQLDPL$MD[
:WOHMHVWRQDZ\NRU]\VW\ZDQDZM4XHU\SU]H]ZV]\VWNLH
PHWRG\VNUöWXGRW\F]ÈFHĝÈGDñ$MD[
:ELEOLRWHFHM4XHU\PHWRGD$.ajax() jest wykoU]\VW\ZDQDSU]H]LQQHPHWRG\SRPRFQLF]H$MD[
NWöUH]RVWDï\GRWÈGRPöZLRQH SR]ZDODMÈRQHQD
]QDF]QLHSURVWV]HZ\NRQ\ZDQLHĝÈGDñ$MD[ Metoda $.ajax()RIHUXMHZLÚNV]ÈNRQWUROÚQDG
FDï\PSURFHVHPXGRVWÚSQLDSRQDGUöĝQ\FK
XVWDZLHñSR]ZDODMÈF\FKQDNRQWUROÚQDGĝÈGDQLHP$MD[:WDEHOLSRQLĝHMZ\PLHQLRQRZ\EUDQH
XVWDZLHQLD8VWDZLHQLDWHVÈGRVWDUF]DQH]D
SRPRFÈQRWDFMLOLWHUDïXRELHNWX EÚG]LHWRRELHNW
XVWDZLHñ 3U]\NïDGSU]HGVWDZLRQ\QDVWURQLHSRSUDZHM
Z\JOÈGDLG]LDïDSRGREQLHMDNSU]\NïDGGHPRQVWUXMÈF\G]LDïDQLHPHWRG\.load()ZSRGUR]G]LDOH
ķ:F]\W\ZDQLH]DZDUWRĂFL+70/QDVWURQLH]Z\NRU]\VWDQLHPM4XHU\ĵ-HGQDNWXWDM]RVWDïDXĝ\WD
metoda $.ajax()
• 8VWDZLHQLDPRJÈSRMDZLDÊVLÚZGRZROQHM
•
•
NROHMQRĂFLRLOHZ\NRU]\VWXMÈSUDZLGïRZÈ
QRWDFMÚOLWHUDïX-DYD6FULSW
8VWDZLHQLDPRJÈSRELHUDÊIXQNFMÚNWöUD]NROHL
PRĝHXĝ\ZDÊIXQNFMLQD]ZDQHMOXEDQRQLPRZHM
Metoda $.ajax()QLHSR]ZDODQDZF]\W\ZDQLH
W\ONRIUDJPHQWXVWURQ\'ODWHJRWHĝPHWRGD
jQuery o nazwie ğQG MHVWXĝ\ZDQDGR
Z\EUDQLDLQWHUHVXMÈFHM&LÚF]ÚĂFLVWURQ\
USTAWIENIE
OPIS
type
0RĝHSRELHUDÊZDUWRĂÊGETOXEPOSTZ]DOHĝQRĂFLRGPHWRG\]DSRPRFÈNWöUHMMHVWZ\NRQ\ZDQHĝÈGDQLH+773GETOXEPOST
url
6WURQDGRNWöUHMNLHURZDQHMHVWĝÈGDQLH
data
'DQHZ\V\ïDQHGRVHUZHUDZUD]]ĝÈGDQLHP
success
)XQNFMDXUXFKDPLDQDJG\Z\NRQDQLHĝÈGDQLD$MD[]DNRñF]\VLÚSRZRG]HQLHPXVWDZLHQLH
podobne do metody .done()
error
)XQNFMDXUXFKDPLDQDJG\Z\NRQDQLHĝÈGDQLD$MD[]DNRñF]\VLÚQLHSRZRG]HQLHPXVWDZLHQLH
podobne do metody .fail()
beforeSend
)XQNFMD DQRQLPRZDOXEQD]ZDQD XUXFKDPLDQDSU]H]Z\NRQDQLHPĝÈGDQLD$MD[:SU]\NïDG]LHSRND]DQ\PQDVWURQLHSRSUDZHMVïXĝ\GRZ\ĂZLHWOHQLDLNRQ\R]QDF]DMÈFHMZF]\W\ZDQLH
GDQ\FK
complete
)XQNFMDZ\NRQ\ZDQDSR]DNRñF]HQLXĝÈGDQLDQLH]DOHĝQLHRGMHJRVWDQX VXNFHVOXE
QLHSRZRG]HQLH :SU]\NïDG]LHSRND]DQ\PQDVWURQLHSRSUDZHMVïXĝ\GRXVXQLÚFLDLNRQ\
R]QDF]DMÈFHMZF]\W\ZDQLHGDQ\FK
timeout
2NUHĂODOLF]EÚPLOLVHNXQGNWöUHPXV]ÈXSï\QÈÊ]DQLPZ\VWÈSL]GDU]HQLHR]QDF]DMÈFH
QLHSRZRG]HQLH
404 AJAX I JSON
KONTROLA TECHNOLOGII AJAX
.LHG\Xĝ\WNRZQLNNOLNQLHïÈF]H
ZHOHPHQFLH<nav>QDVWURQLH
zostaje umieszczona nowa
]DZDUWRĂÊ-HVWWRUR]ZLÈ]DQLH
EDUG]RSRGREQHGRSU]\NïDGX
SRND]DQHJRZSRGUR]G]LDOH
ķ:F]\W\ZDQLH]DZDUWRĂFL+70/
na stronie z wykorzystaniem
M4XHU\ĵGRW\F]ÈFHJRPHWRG\
.load()DOHZ\PDJDïDRQD
W\ONRMHGQHJRZLHUV]DNRGX
7XWDMPDP\VLHGHPXVWDZLHñ
zastosowanych w metodzie
$.ajax()3LHUZV]HWU]\WR
ZïDĂFLZRĂFLQDWRPLDVWF]WHU\
ostatnie to funkcje anonimowe
Z\ZRï\ZDQHQDUöĝQ\FK
HWDSDFKĝÈGDQLD$MD[
2. 3U]\NïDGWHQSRZRGXMH
XVWDZLHQLHZïDĂFLZRĂFLtimeout
QDND]XMÈFHMGZXVHNXQGRZH
RF]HNLZDQLHQDRGSRZLHGě$MD[
1. :W\PSU]\NïDG]LHSURFHGXUDREVïXJL]GDU]HñZ\ZRïXMH
PHWRGÚ$.ajax()
3. Kod umieszcza na stronie
WDNĝHHOHPHQW\SU]H]QDF]RQHGR
Z\ĂZLHWOHQLDZF]\W\ZDQ\FKGDQ\FK0RĝHV]LFKQLH]REDF]\Ê
MHĂOLĝÈGDQLH]RVWDQLHREVïXĝRQH
V]\ENR-HGQDNQDSHZQRMH
GRVWU]HĝHV]JG\VWURQDMHVW
ZF]\W\ZDQDZROQR
4. -HĝHOLZ\NRQDQLHĝÈGDQLD
$MD[]DNRñF]\VLÚQLHSRZRG]HQLHPWRXĝ\WNRZQLNRZL
]RVWDQLHZ\ĂZLHWORQ\NRPXQLNDW
REïÚG]LH
c08/js/jq-ajax.js
JAVASCRIPT
1
$(’nav a’).on(’click’, function(e) {
e.preventDefault();
var url = this.href;
var $content = $(’#content’);
$(’nav a.current’).removeClass(’current’);
$(this).addClass(’current’);
$(’#container’).remove();
2
3
4
// Adres URL strony do wczytania.
// Buforowanie wyboru.
8DNWXDOQLHQLHïÈF]\
8VXQLÚFLH]DZDUWRĂFL
$.ajax({
type: “POST”,
:\EöUPHWRG\*(7OXE3267
url: url,
¥FLHĝNDGRVWÚSXGRSOLNX
timeout: 2000,
// Czas oczekiwania.
beforeSend: function() {
3U]HGZ\NRQDQLHPĝÈGDQLD$MD[
$content.append(’<div id=”load”>Wczytywanie</div>’); // Wczytanie komunikatu.
},
complete: function() {
3RZ\NRQDQLXĝÈGDQLD$MD[
$(’#loading’).remove();
8VXQLÚFLHNRPXQLNDWX
},
success: function(data) {
:\ĂZLHWOHQLH]DZDUWRĂFL
FRQWHQWKWPO GDWD ğQG ijFRQWDLQHUij KLGH IDGH,Q },
fail: function() {
:\ĂZLHWOHQLHNRPXQLNDWXREïÚG]LH
ijSDQHOij KWPO ijGLYFODVV ĵORDGLQJĵ!3URV]ÚVSUöERZDÊZNUöWFHGLY!ij }
});
});
AJAX I JSON 405
406 AJAX I JSON
PRZYKŁAD
AJAX I JSON
:W\PSU]\NïDG]LHZ\ĂZLHWODQHVÈLQIRUPDFMHGRW\F]ÈFHWU]HFKZ\GDU]Hñ'DQHSRFKRG]È]WU]HFK
UöĝQ\FKěUöGHï
3RGF]DVZF]\W\ZDQLDVWURQ\LQIRUPDFMHGRW\F]ÈFHPLHMVF
Z\GDU]HñVÈXPLHV]F]DQHZNRG]LH+70/.LHG\Xĝ\WNRZQLNNOLNQLH
]GDU]HQLHZOHZHMNROXPQLHĂURGNRZDEÚG]LH]DZLHUDÊKDUPRQRJUDPZ\EUDQHJR]GDU]HQLD
:OHZHMNROXPQLHïÈF]DPDMÈDWU\EXWidNWöUHJRZDUWRĂÊWRGZXOLWHURZ\LGHQW\ğNDWRUVWDQXZ86$ZNWöU\PEÚG]LHPLDïRPLHMVFH
GDQHZ\GDU]HQLH
<a id=”tx” href=”tx.html”>... Austin, TX</a>
+DUPRQRJUDP\Z\GDU]HñVÈSU]HFKRZ\ZDQHZRELHNFLH-621
Z]HZQÚWU]Q\PSOLNXSREUDQ\PSRGF]DVZF]\W\ZDQLDPRGHOX'20
*G\Xĝ\WNRZQLNNOLNQLHZ\EUDQÈVHVMÚZĂURGNRZHMNROXPQLHMHM
RSLVSRMDZLVLÚZNROXPQLHSUDZHM
:ĂURGNRZHMNROXPQLHZ\ĂZLHWODMÈFHMKDUPRQRJUDP\Z\GDU]HñW\WXï
NDĝGHMVHVMLMHVWZVWDZLDQ\ZHZQÈWU]ïÈF]DSRZRGXMÈFHJRZ\ĂZLHWOHQLHLQIRUPDFMLRGDQHMVHVML
<a href=”descriptions.html#Circuit-Hacking”>
Circuit Hacking</a>
2SLV\ZV]\VWNLFKVHVMLVÈSU]HFKRZ\ZDQHZSOLNX+70/
3RV]F]HJöOQHRSLV\VHVMLVÈZ\ELHUDQH]DSRPRFÈPHWRG\M4XHU\
o nazwie .load()RUD]VHOHNWRUD#SU]HGVWDZLRQHJRZSRGUR]G]LDOH
ķ:F]\W\ZDQLH]DZDUWRĂFL+70/QDVWURQLH]Z\NRU]\VWDQLHP
M4XHU\ĵ
:SUDZHMNROXPQLHRSLVVHVMLMHVWSRELHUDQ\]SOLNX+70/.DĝGD
VHVMDMHVWSU]HFKRZ\ZDQDZHOHPHQFLHNWöUHJRDWU\EXWid zawiera
W\WXïVHVML ZUD]]HVSDFMDPL]DVWÈSLRQ\PLïÈF]QLNDPL <div id=”Wprowadzenie-do-modelowania-3D”>
<h3>:SURZDG]HQLHGRĂZLDWD'</h3>
<p>3U]\MGěLSU]HNRQDMVLÚMDNWZRU]\ÊPRGHOH'</p>
</div>
3RQLHZDĝïÈF]DVÈGRGDZDQHLXVXZDQHZSU]\NïDG]LHXĝ\WR
GHOHJDFML]GDU]Hñ
AJAX I JSON 407
PRZYKŁAD
AJAX I JSON
7HQSU]\NïDGZ\NRU]\VWXMHGDQH]WU]HFKRGG]LHOQ\FKěUöGHï
ZFHOX]DGHPRQVWURZDQLDWHFKQLN$MD[
:OHZHMNROXPQLH]QDMGXMÈVLÚ
WU]\PLHMVFDZNWöU\FKRGE\ZDMÈVLÚSHZQHZ\GDU]HQLD
/RNDOL]DFMHWHVÈ]GHğQLRZDQH
ZNRG]LH+70/GODVWURQ\
]DZLHUDMÈFHMKDUPRQRJUDP
Z\GDU]Hñ.DĝGHZ\GDU]HQLH
MHVWïÈF]HP
1. .OLNQLÚFLH]GDU]HQLDSRZRduje wczytanie harmonogramu
VHVMLGODGDQHJR]GDU]HQLD
,QIRUPDFMHVÈSU]HFKRZ\ZDQH
ZSOLNXRQD]ZLHexample.json
który zostaje pobrany podczas
ZF]\W\ZDQLDPRGHOX'20
1
408 AJAX I JSON
2. .OLNQLÚFLHVHVMLVSRZRGXMHZF]\WDQLHMHMRSLVX
2SLV\]QDMGXMÈVLÚZSOLNX
descriptions.htmlNWöU\MHVW
ZF]\W\ZDQ\SRNOLNQLÚFLXW\WXïX
VHVML
2
PRZYKŁAD
AJAX I JSON
HTML
c08/example.html
<body>
<header>
<h1>THE MAKER BUS</h1>
<nav>
<a href=”jq-load.html”>67521$*’™:1$</a>
<a href=”jq-load2.html”>TRASA</a>
<a href=”jq-load3.html”>*$'¿(7<</a>
<a href=”example.html” class=”current”>HARMONOGRAM</a>
</nav>
</header>
<section id=”content”>
<div id=”container”>
<div class=”third”>
<div id=”event”>
<a id=”ca” href=”ca.html”>
<img src=”img/map-ca.png” alt=”SF, CA” />San Francisco, CA</a>
<a id=”tx” href=”tx.html”>
<img src=”img/map-tx.png” alt=”Austin, TX” />Austin, TX</a>
<a id=”ny” href=”ny.html”>
<img src=”img/map-ny.png” alt=”New York, NY” />Nowy Jork, NY</a>
</div>
</div>
<div class=”third”>
<div id=”sessions”>Wybierz wydarzenie w lewej kolumnie</div>
</div>
<div class=”third”>
<div id=”details>,QIRUPDFMHV]F]HJöïRZH</div>
</div>
</div><!-- #container -->
</section><!-- #content -->
<script src=”js/jquery-1.11.0.min.js”></script>
<script src=”js/example.js”></script>
</body>
:SRZ\ĝV]\POLVWLQJX]QDMGXMHVLÚNRG+70/
VWURQ\1DVWURQLHPDP\QDJïöZHNRUD]WU]\
NROXPQ\:F]\WDQLHGZöFKVNU\SWöZRGE\ZDVLÚ
SU]HG]QDF]QLNLHP]DP\NDMÈF\P</body>
/HZDNROXPQDOLVWDZ\GDU]Hñ
¥URGNRZDNROXPQD harmonogram sesji danego
Z\GDU]HQLD
3UDZDNROXPQDRSLV\SRV]F]HJöOQ\FKVHVML
AJAX I JSON 409
PRZYKŁAD
AJAX I JSON
c08/data/example.json
JAVASCRIPT
{
“CA”: [
{
“time”: “09.00”,
ĴWLWOHĵĴ:SURZDG]HQLHGRĂZLDWD'ĵ
},
{
“time”: “10.00”,
“title”: “Circuit Hacking”
},
{
“time”: “11.30”,
“title”: “Zabawy z Arduino”
}...
c08/descriptions.html
HTML
<div id=”Wprowadzenie-do-modelowania-3D”>
<h3>:SURZDG]HQLHGRĂZLDWD'</h3>
<p>3U]\MGěLSU]HNRQDMVLÚMDNWZRU]\ÊPRGHOH'NWöUHQDVWÚSQLH</p>
</div>
<div id=”Circuit-Hacking”>
<h3>Circuit Hacking</h3>
<p>:(OHFWUR7HQWEÚG]LHV]PöJï]REDF]\ÊMDN</p>
</div>
<div id=”Zabawy-z-Arduino”>
<h3>Zabawy z Arduino</h3>
<p>3U]HNRQDMVLÚMDNSURJUDPRZDÊLXĝ\ZDÊ$UGXLQR7RMHVWïDWZ\</p>
</div>
.LHG\VNU\SW]RVWDMHXUXFKRPLRQ\IXQNFMD
loadTimetable()ZF]\WXMH]SOLNX-621RQD]ZLH
example.json harmonogramy wszystkich trzech
Z\GDU]Hñ'DQHVÈEXIRURZDQHZ]PLHQQHM
times
410
AJAX I JSON
=GDU]HQLDVÈLGHQW\ğNRZDQHSU]H]GZXOLWHURZ\
NRGVWDQXZ86$3RZ\ĝHMSU]HGVWDZLRQR
SU]\NïDGRZHGDQHVIRUPDWRZDQHMDNR-621
RUD]SU]\NïDGRZ\NRG+70/Z\JHQHURZDQ\
QDSRGVWDZLHZ\PLHQLRQ\FKGDQ\FK
PRZYKŁAD
AJAX I JSON
c08/js/example.js
JAVASCRIPT
1
2
3
4
5
6
7
$(function() {
.LHG\PRGHO'20EÚG]LHJRWRZ\
var times;
// Deklaracja zmiennej globalnej.
$.ajax({
.RQğJXUDFMDĝÈGDQLD
beforeSend: function(xhr){
3U]HGZ\NRQDQLHPĝÈGDQLD
if (xhr.overrideMimeType) {
-HĝHOLSU]HJOÈGDUNDREVïXJXMHWÚPHWRGÚ
xhr.overrideMimeType(“application/json”);
XVWDZW\S0,0(DE\XQLNQÈÊEïÚGöZ
}
}
});
)XQNFMDSRELHUDMÈFDGDQH]SOLNX-621
function loadTimetable() {
// Deklaracja funkcja
$.getJSON(’data/example.json’)
3UöED]HEUDQLDGDQ\FK-621
.done( function(data){
-HĝHOL]DNRñF]\VLÚSRZRG]HQLHP
times = data;
WRGDQHEÚGÈSU]HFKRZ\ZDQHZ]PLHQQHM
}).fail( function() {
:SU]\SDGNXSUREOHPXQDOHĝ\Z\ĂZLHWOLÊNRPXQLNDW
ijHYHQWij KWPO ij3U]HSUDV]DP\1LHXGDïRVLÚZF]\WDÊKDUPRQRJUDPXij });
}
loadTimetable();
:\ZRïDQLHIXQNFML
1. 6NU\SWZ\NRQXMÈF\FDïÈSUDFÚPDQD]ZÚ
example.js i jest uruchamiany po wczytaniu
PRGHOX'20
4. 1DVWÚSQLHPDP\IXQNFMÚRQD]ZLH
loadTimetable()SU]H]QDF]RQÈGRZF]\WDQLD
GDQ\FKKDUPRQRJUDPöZ]SOLNXexample.json
2. Zmienna timesEÚG]LHXĝ\WDGRSU]HFKRZ\ZDQLDKDUPRQRJUDPXVHVMLZV]\VWNLFK]GDU]Hñ
5. -HĝHOLZF]\WDQLHGDQ\FK]DNRñF]\VLÚSRZRG]HQLHPWRGDQHKDUPRQRJUDPöZEÚGÈSU]HFKRZ\wane w zmiennej times
3. =DQLPSU]HJOÈGDUND]DĝÈGDGDQ\FK-621
VNU\SWVSUDZG]DF]\REVïXJXMHRQDPHWRGÚ
overrideMimeType()0HWRGDWDMHVWVWRVRZDQD
ZFHOXRNUHĂOHQLDF]\RGSRZLHGěRWU]\PDQD]VHUZHUDSRZLQQDE\ÊWUDNWRZDQDMDNRGDQH-621
0RĝQDMÈZ\NRU]\VWDÊJG\VHUZHUSU]\SDGNRZR
ZVNDĝHĝH]ZUDFDQHGDQHVÈZLQQ\PIRUPDFLH
6. -HĝHOLZF]\WDQLHGDQ\FK]DNRñF]\VLÚQLHSRZRG]HQLHPWRXĝ\WNRZQLNRZLEÚG]LHZ\ĂZLHWORQ\
NRPXQLNDWREïÚG]LH
7. Funkcja loadTimetable()MHVWZ\ZRï\ZDQD
ZFHOXZF]\WDQLDGDQ\FK
AJAX I JSON
411
PRZYKŁAD
AJAX I JSON
1. Metoda pomocnicza jQuery
F]HNDDĝXĝ\WNRZQLNNOLNQLH
QD]ZÚZ\GDU]HQLD:ĂURGNRZHMNROXPQLHZF]\WDQ\EÚG]LH
KDUPRQRJUDPVHVMLZ\EUDQHJR
Z\GDU]HQLD
2. Metoda preventDefault()
XQLHPRĝOLZLDSU]HMĂFLHQDQRZÈ
VWURQÚ SRQLHZDĝZ\ĂZLHWORQH
]RVWDQÈGDQHSREUDQH]D
SRPRFÈWHFKQRORJLL$MD[ 3. 8WZRU]RQD]RVWDMH]PLHQQD
RQD]ZLHloc, przeznaczona
GRSU]HFKRZ\ZDQLDPLHMVFD
ZNWöU\PRGE\ZDVLÚGDQH
Z\GDU]HQLH-HMZDUWRĂÊ
MHVWSRELHUDQD]DWU\EXWXid
NOLNQLÚWHJRïÈF]D
4. .RG+70/GODKDUPRQRJUDPXVHVMLEÚG]LHSU]HFKRZ\ZDQ\Z]PLHQQHMRQD]ZLH
newContent3RF]ÈWNRZR
ZDUWRĂFLÈ]PLHQQHMMHVWSXVW\
FLÈJWHNVWRZ\
5. ,QIRUPDFMHRSRV]F]HJöOQ\FK
VHVMDFKVÈSU]HFKRZ\ZDQH
ZHOHPHQWDFK<li>1DSRF]ÈWNX
NDĝGHJRHOHPHQWX]QDMGXMHVLÚ
JRG]LQDUR]SRF]ÚFLDGDQHMVHVML
6. Do harmonogramu zostaje
GRGDQHïÈF]HXĝ\ZDQHZFHOX
Z\ĂZLHWOHQLDRSLVX’ÈF]H
SURZDG]LGRSOLNXdescriptions.
html3RQLHZDĝïÈF]HMHVW
poprzedzone znakiem #,
ZVND]XMHRQRRGSRZLHGQL
IUDJPHQWVWURQ\
7. 7\WXïVHVMLMHVWXPLHV]czany po znaku #0HWRGD
.replace()]DVWÚSXMH
VSDFMHZW\WXOHïÈF]QLNDPL
412
AJAX I JSON
c08/data/example.json
1
2
3
4
5
6
7
8
9
10
11
JAVASCRIPT
.OLNQLÚFLHZ\GDU]HQLDSRZRGXMHZF]\WDQLH
KDUPRQRJUDPX
$(’#content’).on(’click’, ’#event a’, function(e) {
8ĝ\WNRZQLNNOLNDZ\EUDQÈORNDOL]DFMÚ
e.preventDefault();
8QLHPRĝOLZLHQLHZF]\WDQLDVWURQ\
var loc = this.id.toUpperCase();
3REUDQLHZDUWRĂFLDWU\EXWXLG
var newContent = ’’;
:FHOXXWZRU]HQLDKDUPRQRJUDPX
for (var i = 0; i < times[loc].length; i++) {
SU]HSURZDG]DP\LWHUDFMHSU]H]VHVMH
newContent += ’<li><span class=”time”>’ +
times[loc][i].time + ’</span>’;
newContent += ’<a href=”descriptions.html#’;
newContent += times[loc][i].title.replace
(/ /g, ’-’) + ’”>’;
newContent += times[loc][i].title + ’</a></li>’;
}
$(’#sessions’).html(’<ul>’ + newContent + ’</ul>’);
:\ĂZLHWOHQLHJRG]LQ\
$(’#event a.current’).removeClass(’current’);
8DNWXDOQLHQLHZ\EUDQHJRïÈF]D
$(this).addClass(’current’);
$(’#details’).text(’’);
8VXQLÚFLH]DZDUWRĂFLWU]HFLHMNROXPQ\
});
DE\GRSDVRZDÊZDUWRĂÊDWU\EXtu idZSOLNXdescriptions.html
GRSRV]F]HJöOQ\FKVHVML
10. $WU\EXW\classZïÈF]DFK
Z\GDU]HñVÈXDNWXDOQLDQHDE\
ZVND]DÊELHĝÈFHZ\GDU]HQLH
8. :HZQÈWU]ïÈF]DPRĝQD
GRVWU]HFW\WXïVHVML
11. -HĝHOLWU]HFLDNROXPQD
]DZLHUDïDMDNLHNROZLHNGDQH
WR]RVWDMÈRQHXVXQLÚWH
9. 1RZD]DZDUWRĂÊMHVWXPLHV]F]DQDZĂURGNRZHMNROXPQLH
PRZYKŁAD
AJAX I JSON
JAVASCRIPT
1
2
3
4
5
6
c08/js/example.js
.OLNQLÚFLHVHVMLSRZRGXMHZF]\WDQLHMHMRSLVX
$(’#content’).on(’click’, ’#sessions li a’,
function(e) { .OLNQLÚFLHVHVML
e.preventDefault();
1LHPDSU]HMĂFLDQDQRZÈVWURQÚ
var fragment = this.href;
7\WXï]QDMGXMHVLÚZDWU\EXFLHKUHI
fragment = fragment.replace(’#’, ’ #’);
// Dodanie spacji po znaku #.
$(’#details’).load(fragment);
// Wczytanie opisu.
$(’#sessions a.current’).removeClass(’current’);
// Uaktualnienie elementu.
$(this).addClass(’current’);
});
.OLNQLÚFLHQDZLJDFML
$(’nav a’).on(’click’, function(e) {
.OLNQLÚFLHZHOHPHQFLHQDY!
e.preventDefault();
1LHPDSU]HMĂFLDQDQRZÈVWURQÚ
var url = this.href;
// Pobranie adresu URL do wczytania.
7
$(’nav a.current’).removeClass(’current’);
// Uaktualnienie klas w nawigacji.
$(this).addClass(’current’);
$(’#container’).remove();
8VXQLÚFLHVWDUHJRHOHPHQWX
$(’#content’).load(url + ’ #container’).hide().
fadeIn(’slow’); // Dodanie nowego elementu.
});
});
1. Inna metoda pomocnicza
M4XHU\]RVWDMHVNRQğJXURZDQD
ZFHOXUHDNFMLJG\Xĝ\WNRZQLN
NOLNQLHVHVMÚZĂURGNRZHM
NROXPQLH=DGDQLHPPHWRG\
MHVWZF]\WDQLHRSLVXVHVML
2. Metoda preventDefault()
XQLHPRĝOLZLDSU]HMĂFLHQDQRZÈ
VWURQÚ
3. Utworzona zostaje zmienna
o nazwie fragment przeznaczoQDGRSU]HFKRZ\ZDQLDïÈF]D
SURZDG]ÈFHJRGRVHVML:DUWRĂÊ
tej zmiennej zostaje pobrana
z atrybutu hrefNOLNQLÚWHJR
ïÈF]D
4. Po znaku # umieszczona
]RVWDMHVSDFMDDE\W\PVDP\P
SU]\JRWRZDÊRGSRZLHGQLIRUPDW
GODPHWRG\M4XHU\.load()
RGSRZLHG]LDOQHM]DSREUDQLH
IUDJPHQWX QLHFDïRĂFL VWURQ\
+70/QDSU]\NïDGdescription.
html #Zabawy-z-Arduino
5. 6HOHNWRUM4XHU\MHVWXĝ\ZDQ\
GR]QDOH]LHQLDZWU]HFLHM
NROXPQLHHOHPHQWXNWöUHJR
atrybut idPDZDUWRĂÊdetails
1DVWÚSQLHPHWRGD.load()
ZF]\WXMHRSLVVHVMLZ]QDOH]LRQ\PHOHPHQFLH
6. ’ÈF]D]RVWDMÈXDNWXDOQLRQH
DE\SRGĂZLHWOLÊRGSRZLHGQLÈ
VHVMÚZĂURGNRZHMNROXPQLH
7. *ïöZQDQDZLJDFMDQDVWURQLH
]RVWDMHXVWDZLRQDMDNSRND]DQRZF]HĂQLHM SDWU]SRGUR]G]LDï
ķ:F]\W\ZDQLH]DZDUWRĂFLĵ AJAX I JSON
413
PODSUMOWANIE
f $MD[R]QDF]DJUXSÚWHFKQRORJLLSR]ZDODMÈF\FKQDXDNWXDOQLHQLH
W\ONRMHGQHJRIUDJPHQWXVWURQ\]DPLDVWMHMFDïHM
f 1DVWURQLHLQWHUQHWRZHMPRĝQDZ\NRU]\VWDÊGDQHZIRUPDWDFK
+70/;0/L-621 )RUPDW-621]GRE\ZDFRUD]ZLÚNV]È
SRSXODUQRĂÊ f $E\ZF]\WDÊGDQH-621]LQQHMGRPHQ\PRĝQDXĝ\Ê-6213
DOHW\ONRZWHG\JG\NRGSRFKRG]L]]DXIDQHJRěUöGïD
f %LEOLRWHNDM4XHU\RIHUXMHPHWRG\XïDWZLDMÈFHZ\NRU]\VWDQLH
WHFKQRORJLL$MD[
f 8ĝ\FLHPHWRG\.load() to najprostszy sposób umieszczenia
]DZDUWRĂFL+70/QDVWURQLHSR]ZDODQDXDNWXDOQLHQLHW\ONR
IUDJPHQWXVWURQ\
f Metoda .ajax()RIHUXMH]QDF]QLHZLÚNV]HPRĝOLZRĂFLFKRÊ
MHVWSU]\W\P]QDF]QLHEDUG]LHMVNRPSOLNRZDQD 'RVWÚSQ\FK
MHVWWDNĝHNLONDPHWRGVNUöWöZ f 7U]HEDNRQLHF]QLHUR]ZDĝ\ÊMDNEÚG]LHG]LDïDïDZLWU\QDMHĂOL
Xĝ\WNRZQLNPDZ\ïÈF]RQÈREVïXJÚ-DYD6FULSWOXEMHĝHOLVWURQD
QLHPDGRVWÚSXGRGDQ\FK]VHUZHUD
414
AJAX I JSON
9
API
,QWHUIHMVXĝ\WNRZQLNDSR]ZDODQDLQWHUDNFMÚF]ïRZLHND
]SURJUDPHP1DWRPLDVWLQWHUIHMVSURJUDPRZDQLDDSOLNDFML
DQJApplication Programming InterfaceĽ$3, XPRĝOLZLD
Z]DMHPQÈNRPXQLNDFMÚSURJUDPRPQDSU]\NïDGVNU\SWRP
3U]HJOÈGDUNLLQWHUQHWRZHVNU\SW\ZLWU\Q\LQWHUQHWRZHRUD]LQQHDSOLNDFMHEDUG]RF]ÚVWR
XGRVWÚSQLDMÈVZRMÈIXQNFMRQDOQRĂÊDE\SURJUDPLĂFLPRJOL]QLHMNRU]\VWDÊ1DSU]\NïDG
PRZEGLĄDARKI
INTERNETOWE
0RGHO'20WR$3,3R]ZDOD
VNU\SWRPQDX]\VNDQLH
GRVWÚSXLXDNWXDOQLDQLH
]DZDUWRĂFLVWURQ\LQWHUQHWRZHMSRMHMZF]\WDQLX
ZSU]HJOÈGDUFH:W\P
UR]G]LDOHSR]QDV]SHZQH
$3,-DYD6FULSWZ+70/
]DSHZQLDMÈFHGRVWÚSGR
LQQ\FKIXQNFMLSU]HJOÈGDUNL
SKRYPTY
PLATFORMY
%LEOLRWHNDM4XHU\WRSOLN
-DYD6FULSWZUD]]$3,
3R]ZDODQDZ\EöUHOHPHQWöZDQDVWÚSQLHXĝ\FLH
PHWRGM4XHU\GRSUDF\
]Z\EUDQ\PLHOHPHQWDPL
M4XHU\WRSRSURVWXMHGHQ]H
VNU\SWöZRIHUXMÈF\EDUG]R
GXĝHPRĝOLZRĂFL
:LWU\Q\LQWHUQHWRZHWDNLHMDN
)DFHERRN*RRJOHL7ZLWWHU
RWZLHUDMÈSODWIRUP\DE\W\P
VDP\PXPRĝOLZLÊGRVWÚS
LXDNWXDOQLDQLHSU]HFKRZ\ZDQ\FKWDPGDQ\FK
]DSRPRFÈZLWU\QLQWHUQHWRZ\FKLDSOLNDFML :W\P
UR]G]LDOH]REDF]\V]MDN
*RRJOHSR]ZDODQDGRGDQLH
PDS\QD7ZRMHMVWURQLH
1LHPXVLV]ZLHG]LHÊjakLQQ\VNU\SWOXESURJUDPZ\NRQXMHGDQH]DGDQLH3RZLQLHQHĂZLHG]LHÊ
FRURELMDN]OHFLÊPXZ\NRQDQLH]DGDQLDDWDNĝHMDNSU]HWZRU]\ÊGDQHRWU]\PDQHZRGSRZLHG]L'ODWHJRWHĝZW\PUR]G]LDOHSR]QDV]IRUPÚZMDNLHMSU]HGVWDZLDQHMHVW$3,
416
API
API
417
BEZPROBLEMOWA
WSPÓŁPRACA Z INNYMI
1LH]DZV]HPXVLV]ZLHG]LHÊjakG]LDïDVNU\SWOXESURJUDP
RLOHZLHV]ZMDNLVSRVöE]OHFLÊPXZ\NRQDQLH]DGDQLD
DWDNĝHSRWUDğV]SU]HWZRU]\ÊRWU]\PDQÈRGSRZLHGě
3\WDQLDNWöUHPRĝQD]DGDZDÊLIRUPDWRGSRZLHG]LWZRU]È$3,
JAKIE MOŻLIWOŚCI
OFERUJE API?
W JAKI SPOSÓB UZYSKAĆ
DO NIEGO DOSTĘP?
-HĝHOLVNU\SWOXESURJUDP
RIHUXMHSRWU]HEQÈ&LIXQNFMRQDOQRĂÊWRUR]ZDĝMHJRXĝ\FLH
]DPLDVWVDPRG]LHOQLHWZRU]\ÊWÚ
IXQNFMRQDOQRĂÊRGSRGVWDZ
1DVWÚSQLHPXVLV]XVWDOLÊ
ZMDNLVSRVöEX]\VNDÊGRVWÚS
GRIXQNFMRQDOQRĂFL$3,]DQLP
EÚG]LHV]PöJïJRXĝ\ZDÊ
3RQLHZDĝNDĝG\VNU\SW
SURJUDPOXESODWIRUPDFKDUDNWHU\]XMÈVLÚUöĝQ\PLIXQNFMDPL
SLHUZV]\P]DGDQLHPMHVW
XVWDOHQLHQDFRSR]ZDOD$3,
1DSU]\NïDG
• $3,PRGHOX'20LELEOLRWHNL
•
M4XHU\SR]ZDODQDX]\VNDQLH
GRVWÚSXGRVWURQ\LQWHUQHWRZHMZF]\WDQHMZSU]HJOÈGDUFHLMHMXDNWXDOQLDQLHRUD]
UHDJRZDQLHQD]DFKRG]ÈFH
QDQLHM]GDU]HQLD
$3,XGRVWÚSQLRQHSU]H]
VHUZLV\)DFHERRN*RRJOH
L7ZLWWHUSR]ZDODQDX]\VNDQLHGRVWÚSXLXDNWXDOQLDQLH
SURğOLDWDNĝHWZRU]HQLH
XDNWXDOQLHñVWDQXQDLFK
SODWIRUPDFK
.LHG\]QDV]PRĝOLZRĂFL
RIHURZDQHSU]H]$3,PRĝHV]
RNUHĂOLÊF]\WRRGSRZLHGQLH
QDU]ÚG]LHGRZ\NRQDQLD7ZRMHM
SUDF\
418
API
)XQNFMRQDOQRĂÊPRGHOX'20
MHVWZEXGRZDQDZLQWHUSUHWHU]H
-DYD6FULSW]QDMGXMÈF\PVLÚ
ZSU]HJOÈGDUFHLQWHUQHWRZHM
:SU]\SDGNXM4XHU\SOLNELEOLRWHNLWU]HEDGRïÈF]\ÊQDVWURQLH
SRELHUDMÈFJR]ZïDVQHJR
VHUZHUDOXE]&'1
)DFHERRN*RRJOH7ZLWWHU
RUD]LQQHZLWU\Q\RIHUXMÈUöĝQH
VSRVRE\X]\VNDQLDGRVWÚSXGR
IXQNFMRQDOQRĂFLSODWIRUP\]D
SRPRFÈ$3,
SKŁADNIA
0XVLV]VLÚWDNĝHQDXF]\ÊMDN
QDND]DÊ$3,Z\NRQ\ZDQLH
SHZQ\FK]DGDñRUD]SR]QDÊ
IRUPDWZNWöU\PPRĝHV]
VSRG]LHZDÊVLÚX]\VNDQLD
RGSRZLHG]L
-HĝHOLZLHV]MDNWZRU]\Ê
RELHNWZ\ZRï\ZDÊMHJRPHWRG\
LX]\VNLZDÊGRVWÚSGRMHJR
ZïDĂFLZRĂFLWRQLHSRZLQLHQHĂ
PLHÊSUREOHPX]Xĝ\FLHP
GRZROQHJR$3,-DYD6FULSW
:W\PUR]G]LDOHSR]QDV]UöĝQH
$3,FRSR]ZROL&LQDQDEUDQLH
SHZQRĂFLVLHELHLSU]HNRQD&LÚ
GRQDXNLNROHMQ\FK$3,
API JAVASCRIPT W HTML5
3U]HGHZV]\VWNLPSR]QDP\SHZQHQRZH$3,Z+70/
:UD]]NRGHP]QDF]QLNöZZVSHF\ğNDFML+70/]HVWDZ$3,GHğQLXMH
VSRVöEZMDNLPRĝQDNRU]\VWDÊ]IXQNFMLRIHURZDQ\FKSU]H]SU]HJOÈGDUNL
DLACZEGO HTML5
MA API?
7HFKQRORJLDHZROXXMHLWRVDPR
GRW\F]\SU]HJOÈGDQLDZLWU\Q
LQWHUQHWRZ\FK1DSU]\NïDG
VPDUWIRQ\PDMÈPQLHMV]HHNUDQ\
LPQLHMV]ÈPRFREOLF]HQLRZÈ
QLĝWUDG\F\MQHNRPSXWHU\DOH
]DZLHUDMÈIXQNFMHU]DGNRVSRW\NDQHZNRPSXWHUDFKWDNLHMDN
SU]\VSLHV]HQLRPLHU]L*36
:VSHF\ğNDFML+70/GRGDQR
QLHW\ONRQRZH]QDF]QLNLDOH
UöZQLHĝQRZ\]HVWDZ$3,-DYD6FULSWVWDQGDU\]XMÈF\VSRVöE
Xĝ\FLDZVSRPQLDQ\FKQRZ\FK
IXQNFMLZGRZROQ\PLPSOHPHQWXMÈF\PMHXU]ÈG]HQLX
CZEGO DOTYCZY TO API?
CZEGO SIĘ NAUCZYSZ?
:SRV]F]HJöOQ\FK$3,+70/
QDFLVNSRïRĝRQRSU]\QDMPQLHM
QDMHGHQRELHNWLPSOHPHQWRZDQ\SU]H]SU]HJOÈGDUNL
LQWHUQHWRZHZFHOXGRVWDUF]HQLD
RNUHĂORQHMIXQNFMRQDOQRĂFL
1LHPDP\WXWDMPLHMVFD
QDGRNïDGQHRPDZLDQLH
SRV]F]HJöOQ\FK$3,Z+70/
]QDMG]LHV]VSRURNVLÈĝHN
ZFDïRĂFLSRĂZLÚFRQ\FKQRZ\P
IXQNFMRPZSURZDG]RQ\P
Z+70/ :UR]G]LDOH
SR]QDV]WU]\]GRVWÚSQ\FK$3,
LSU]HDQDOL]XMHV]SU]\NïDG\
SUDF\]QLPL
1DSU]\NïDG$3,JHRORNDFML
RSLVXMHRELHNWgeolocation
SR]ZDODMÈF\]DS\WDÊXĝ\WNRZQLNDRMHJRSRïRĝHQLHRUD]GZD
RELHNW\REVïXJXMÈFHX]\VNDQÈ
RGSRZLHGě
0DP\UöZQLHĝ$3,RIHUXMÈFH
XVSUDZQLHQLDZLVWQLHMÈFHM
IXQNFMRQDOQRĂFL1DSU]\NïDG
$3,:HE6WRUDJHSR]ZDODQD
SU]HFKRZ\ZDQLHLQIRUPDFML
ZSU]HJOÈGDUFHEH]NRQLHF]QRĂFLRSLHUDQLDVLÚSU]\W\PQD
SOLNDFKFRRNLHV
']LÚNLWHPX]REDF]\V]MDN
PRĝQDSUDFRZDÊ]$3,+70/
LMDNGRZLHG]LHÊVLÚZLÚFHM
QDWHPDW$3,MHĝHOL]DMG]LH
SRWU]HED3RQDGWRQDXF]\V]VLÚ
MDNVSUDZG]LÊF]\SU]HJOÈGDUND
REVïXJXMHRNUHĂORQÈIXQNFMRQDOQRĂÊRIHURZDQÈSU]H]GRVWÚSQH
$3,
API
OPIS
32'52='=,$’
geolocation
3R]ZDODQDRNUHĂOHQLHPLHMVFDJHRJUDğF]QHJR
ZNWöU\PSU]HE\ZDXĝ\WNRZQLN
SRGUR]G]LDïķ$3,JHRORNDOL]DFMLĵ
localStorage
3R]ZDODQDSU]HFKRZ\ZDQLHLQIRUPDFMLZSU]HJOÈGDUFH
QDZHWNLHG\Xĝ\WNRZQLN]DPNQLHNDUWÚOXERNQR SRGUR]G]LDïķ$3,:HE6WRUDJH
ĽSU]HFKRZ\ZDQLHGDQ\FK
ZSU]HJOÈGDUNDFKLQWHUQHWRZ\FKĵ
sessionStorage
3R]ZDODQDSU]HFKRZ\ZDQLHLQIRUPDFMLZSU]HJOÈGDUFH
JG\NDUWDOXERNQRSR]RVWDMÈRWZDUWH
history
3R]ZDODQDX]\VNDQLHGRVWÚSXGRHOHPHQWöZ
]QDMGXMÈF\FKVLÚZKLVWRULLSU]HJOÈGDUNL
SRGUR]G]LDïķ$3,+LVWRU\
L3XVKVWDWHĵ
API
419
WYKRYWANIE FUNKCJI
.LHG\WZRU]\V]NRGZ\NRU]\VWXMÈF\$3,+70/ OXENRGMDNLHMNROZLHN
QRZHMIXQNFMLZSU]HJOÈGDUFHLQWHUQHWRZHM PRĝHZ\VWÈSLÊNRQLHF]QRĂÊ
VSUDZG]HQLDF]\SU]HJOÈGDUNDXĝ\WNRZQLNDREVïXJXMHWÚIXQNFMÚ
]DQLPNRGEÚG]LHSUöERZDïMHMXĝ\Ê
$3,+70/RSLVXMHRELHNW\Xĝ\ZDQHSU]H]
SU]HJOÈGDUNLLQWHUQHWRZHGRLPSOHPHQWDFMLQRZHM
IXQNFMRQDOQRĂFL1DSU]\NïDGPDP\RELHNW
RQD]ZLHgeolocationVWRVRZDQ\GRXVWDOHQLD
SRïRĝHQLDJHRJUDğF]QHJRXĝ\WNRZQLND-HGQDN
RELHNWWHQMHVWREVïXJLZDQ\W\ONRZQRZRF]HVQ\FK
SU]HJOÈGDUNDFK'ODWHJRWHĝSU]HGSUöEÈZ\NRU]\VWDQLDZ\PLHQLRQHJRRELHNWXQDOHĝ\VSUDZG]LÊ
F]\SU]HJOÈGDUNDJRREVïXJXMH
N
Czy obiekt
navigator.geolocation
jest obsługiwany?
Wykonanie poleceń
nieużywających
geolokalizacji.
T
Wykonanie poleceń
używających
geolokalizacji.
=DSHZQHQLHEÚG]LHV]]DVNRF]RQ\Vï\V]ÈF
RLVWQLHQLXPLÚG]\SRV]F]HJöOQ\PLSU]HJOÈGDUNDPL
LQWHUQHWRZ\PLUöĝQLFGRW\F]ÈF\FKZ\NU\ZDQLD
IXQNFML
1DSU]\NïDGZSU]HJOÈGDUFH,(LVWQLHMHSHZLHQ
EïÈG]ZLÈ]DQ\]HVSUDZG]DQLHPREVïXJLRELHNWX
geolcation'ODWHJRWHĝZ\NRQDQLHSU]HGVWDZLRQHJRSRZ\ĝHMNRGXPRĝHGRSURZDG]LÊGR
Z\FLHNXSDPLÚFLZWUDNFLHZVSRPQLDQHMRSHUDFML
6NXWNLHPPRĝHE\ÊZROQLHMV]HZF]\W\ZDQLHVWURQ
LQWHUQHWRZ\FK
420 API
6SUDZG]HQLHF]\SU]HJOÈGDUNDLQWHUQHWRZDREVïXJXMHXĝ\FLHGDQHJRRELHNWXPRĝQDSU]HSURZDG]LÊ
]DSRPRFÈNRQVWUXNFMLZDUXQNRZHM
-HĝHOLSU]HJOÈGDUNDREVïXJXMHGDQ\RELHNWZDUWRĂFLÈ]ZURWQÈEÚG]LHtruthyLQDVWÈSLZ\NRQDQLH
SLHUZV]HJR]HVWDZXSROHFHñ1DWRPLDVWMHĂOL
RELHNWQLH]RVWDï]DLPSOHPHQWRZDQ\Z\NRQDQ\
EÚG]LHGUXJL]HVWDZSROHFHñ
if (navigator.geolocation) {
:DUWRĂÊ]ZURWQDWUXWK\DZLÚFRELHNW
MHVWREVïXJLZDQ\
1DVWÈSLZ\NRQDQLHSROHFHñZW\PEORNX
NRGX
} else {
)XQNFMDMHVWQLHREVïXJLZDQDOXE
Z\ïÈF]RQD
(ZHQWXDOQLHXĝ\WNRZQLNRGU]XFLï
ĝÈGDQLH
}
1DV]F]ÚĂFLHLVWQLHMHELEOLRWHNDRQD]ZLH0RGHUQL]UNWöUD]DMPXMHVLÚQLZHORZDQLHPUöĝQLF
Z\VWÚSXMÈF\FKPLÚG]\SU]HJOÈGDUNDPL SRGREQLH
MDNM4XHU\SRGF]DVZ\NU\ZDQLDREVïXJLZDQ\FK
IXQNFML 8ĝ\FLH0RGHUQL]UWR]QDF]QLHOHSV]\VSRVöEQDVSUDZG]HQLHF]\SU]HJOÈGDUNDREVïXJXMH
QRZHIXQNFMH6NU\SW0RGHUQL]UMHVWUHJXODUQLH
XDNWXDOQLDQ\LGRSUDFRZ\ZDQ\DE\REVïXJLZDÊ
NROHMQH]QDOH]LRQHQLH]JRGQRĂFL']LÚNLWHPX
LVWQLHMHPQLHMV]HQLHEH]SLHF]HñVWZRĝHQLH]JRGQRĂFLWHXWUXGQLÈG]LDïDQLH7ZRMHJRNRGX
MODERNIZR
0RGHUQL]UWRVNU\SWNWöU\PRĝQDVWRVRZDÊQDVWURQDFKLQWHUQHWRZ\FKZFHOX
XVWDOHQLDF]\SU]HJOÈGDUNDREVïXJXMHIXQNFMH+70/&66L-DYD6FULSW
6NU\SWWHQZ\NRU]\VWDP\ZNUöWFHZSU]\NïDGDFKGRW\F]ÈF\FK$3,+70/
JAK POBRAĆ MODERNIZR?
JAK DZIAŁA MODERNIZR?
3U]HGHZV]\VWNLPQDOHĝ\SREUDÊSOLNVNU\SWX
]ZLWU\Q\LQWHUQHWRZHMhttp://modernizr.com/
ZNWöUHM]QDMG]LHV]
'RïÈF]RQ\GRVWURQ\VNU\SW0RGHUQL]UGRGDMH
RELHNWRQD]ZLHModernizrNWöU\VSUDZG]D
F]\SU]HJOÈGDUNDLQWHUQHWRZDREVïXJXMHIXQNFMÚ
ZVND]DQÈGRSU]HWHVWRZDQLD.DĝGDIXQNFMDSU]H]QDF]RQDGRVSUDZG]HQLDVWDMHVLÚZïDĂFLZRĂFLÈ
RELHNWXModernizr,FKZDUWRĂFLDPLVÈZDUWRĂFL
ERRORZVNLH trueOXEfalse NWöUHLQIRUPXMÈF]\
GDQDIXQNFMDMHVWREVïXJLZDQD
• 3URJUDPLVW\F]QÈZHUVMÚVNU\SWX-HVWWR
•
QLHVNRPSUHVRZDQ\VNU\SWNWöU\REVïXJXMH
ZV]\VWNLHRSHUDFMHVSUDZG]HQLDMDNLHPRJÈ
E\ÊSU]HSURZDG]RQHSU]H]0RGHUQL]U
1DU]ÚG]LH VSöMU]QDU\VXQHNSRQLĝHM SR]ZDODMÈFHQDZ\EöUIXQNFMLNWöUHPDMÈE\Ê
VSUDZG]DQH0RĝHV]ZLÚFSU]\JRWRZDÊZïDVQÈ
ZHUVMÚVNU\SWX]DZLHUDMÈFÈMHG\QLHQLH]EÚGQH
VSUDZG]HQLD:XGRVWÚSQLRQHMSXEOLF]QLH
ZLWU\QLHLQWHUQHWRZHMQLHSRZLQLHQHĂSU]HSURZDG]DÊRSHUDFMLVSUDZG]HQLDSRGNÈWHP
QLHXĝ\ZDQ\FKIXQNFMLSRQLHZDĝVSRZDOQLDWR
G]LDïDQLHZLWU\Q\
0RGHUQL]UPRĝQDXĝ\ÊZNRQVWUXNFMLZDUXQNRZHM
WDNLHMMDNķ-HĝHOLZïDĂFLZRĂÊgeolocation
RELHNWXModernizr]ZUöFLZDUWRĂÊtrueZ\NRQDM
NRGXMÚW\ZQDZLDVNODPURZ\ĵ
if (Modernizr.geolocation) {
*HRORNDOL]DFMDMHVWREVïXJLZDQD
}
:SU]\NïDGDFKSU]HGVWDZLRQ\FKZNVLÈĝFH
VNU\SW0RGHUQL]UMHVWXĝ\ZDQ\SUDZLHQDVDP\P
NRñFXWXĝSU]HGVNU\SWHPZ\NRU]\VWXMÈF\PMHJR
PRĝOLZRĂFL0RĝHV]VLÚMHGQDNVSRWNDÊ]GRïÈF]DQLHP0RGHUQL]UZHOHPHQFLH<head>VWURQ\+70/
MHĝHOL]DZDUWRĂÊVWURQ\Xĝ\ZDIXQNFMLNWöU\FK
GRVWÚSQRĂÊMHVWVSUDZG]DQD WŁAŚCIWOŚCI MODERNIZR
1DU\VXQNXSROHZHMVWURQLHPRĝHV]]REDF]\Ê
Z\EUDQHIXQNFMHNWöU\FKGRVWÚSQRĂÊVSUDZG]D
0RGHUQL]U3HïQÈOLVWÚZïDĂFLZRĂFL0RGHUQL]U
]QDMG]LHV]QDVWURQLHhttp://modernizr.github.io/
Modernizr/test/index.html
API 421
API GEOLOKALIZACJI —
OKREŚLANIE POŁOŻENIA
UŻYTKOWNIKA
&RUD]ZLÚNV]DOLF]EDZLWU\QLQWHUQHWRZ\FKRIHUXMHIXQNFMHGRGDWNRZH
Xĝ\WNRZQLNRPNWöU]\XMDZQLDMÈVZRMHSRïRĝHQLHJHRJUDğF]QH
,QIRUPDFMLRSRïRĝHQLXPRĝQDĝÈGDÊ]DSRPRFÈ$3,JHRORNDOL]DFML
NA CZYM POLEGA DZIAŁANIE API
GEOLOKALIZACJI?
JAK UZYSKAĆ DOSTĘP DO INFORMACJI
GEOLOKALIZACJI?
3U]HJOÈGDUNLLPSOHPHQWXMÈFH$3,JHRORNDOL]DFML
SR]ZDODMÈXĝ\WNRZQLNRPZLWU\QLQWHUQHWRZ\FKQD
XMDZQLHQLHLQIRUPDFMLRSRïRĝHQLXJHRJUDğF]Q\P
,QIRUPDFMHWHVÈSRGDZDQHZSRVWDFLZVSöïU]ÚGQ\FKJHRJUDğF]Q\FK,VWQLHMHNLONDVSRVREöZ
QDMDNLHSU]HJOÈGDUNDPRĝHRNUHĂOLÊSRïRĝHQLH
JHRJUDğF]QHXĝ\WNRZQLNDQDSRGVWDZLHDGUHVX,3
SRïÈF]HQLDVLHFLEH]SU]HZRGRZHMGDQ\FK]VLHFL
NRPöUNRZHMOXESRFKRG]ÈF\FK]XU]ÈG]HQLD*36
$3,JHRORNDOL]DFMLMHVWGRP\ĂOQLHGRVWÚSQH
ZNDĝGHMREVïXJXMÈFHMMHSU]HJOÈGDUFHLQWHUQHWRZHM
SRGREQLHMDNZSU]\SDGNXPRGHOX'20 3RUD]SLHUZV]\]RVWDïRZSURZDG]RQHZ,(
)LUHIR[6DIDUL&KURPH2SHUD
L26L$QGURLG
:SHZQ\FKXU]ÈG]HQLDFK$3,JHRORNDOL]DFML
PRĝHXGRVWÚSQLÊQLHFRZLÚFHMGDQ\FKQLĝW\ONR
ZVSöïU]ÚGQHJHRJUDğF]QH-HGQDNNRQFHQWUXMHP\
VLÚQDW\FKIXQNFMDFKSRQLHZDĝVÈRQHQDMF]ÚĂFLHM
REVïXJLZDQH-HĝHOLSöěQLHMEÚG]LHV]PXVLDï
SUDFRZDÊ]LQQ\PLIXQNFMDPLQLHSRZLQLHQHĂ
PLHÊ]W\PSUREOHPX
3U]HJOÈGDUNLREVïXJXMÈFHJHRORNDOL]DFMÚSR]ZDODMÈXĝ\WNRZQLNRPQDZ\ïÈF]HQLHWHMIXQNFML
:SU]\SDGNXZïÈF]RQHMIXQNFMLJHRORNDOL]DFML
SU]HJOÈGDUNDEÚG]LHS\WDïDXĝ\WNRZQLNDF]\FKFH
RQXGRVWÚSQLÊGDQHSRV]F]HJöOQ\PZLWU\QRP
ĝÈGDMÈF\PWHJRURG]DMXLQIRUPDFML
6SRVöEZMDNLSU]HJOÈGDUNDLQWHUQHWRZDS\WD
Xĝ\WNRZQLNDR]JRGÚQDXGRVWÚSQLHQLHGDQ\FK
]DOHĝ\RGNRQNUHWQHMSU]HJOÈGDUNLLXU]ÈG]HQLD
3U]HJOÈGDUND&KURPHQDNRPSXWHU]H0DF
3U]HJOÈGDUND6DIDULQDWDEOHFLHL3DG
422 API
3U]HJOÈGDUND)LUHIR[ZV\VWHPLH:LQGRZV
ŻĄDANIE INFORMACJI
O POŁOŻENIU UŻYTKOWNIKA
PRZETWARZANIE ODPOWIEDZI
Kiedy przeglądarka internetowa udzieli odpowiedzi, mamy dwie możliwe sytuacje
1
N
Czy obiekt
navigator.geolocation
jest obsługiwany?
3
T
Metoda
getCurrentPosition()
nie otrzymała
żądanych informacji
Metoda
getCurrentPosition()
otrzymała żądane
informacje
Wywołanie funkcji
fail(). Wartością
zwrotną jest obiekt
PositionError
Wywołanie funkcji
success(). Wartością
zwrotną są obiekty
Position
i Position.coords
2
Wykonanie poleceń
nieużywających
geolokalizacji.
Wywołanie metody
navigator.geolocation.
getCurrentPosition()
$3,JHRORNDOL]DFMLRSLHUDVLÚQDRELHNFLHRQD]ZLH
geolocation-HĝHOLFKFHV]VSUöERZDÊZ\NRU]\VWDÊGDQHRSRïRĝHQLXJHRJUDğF]Q\PXĝ\WNRZQLND
ZSLHUZV]HMNROHMQRĂFLWU]HEDVSUDZG]LÊF]\
Z\PLHQLRQ\RELHNWMHVWREVïXJLZDQ\SU]H]
SU]HJOÈGDUNÚ:RPDZLDQ\PSU]\NïDG]LHGR
SU]HSURZDG]HQLDRSHUDFMLVSUDZG]HQLDZ\NRU]\VWDP\ELEOLRWHNÚ0RGHUQL]U
1. .RQVWUXNFMDZDUXQNRZD]RVWDMHXĝ\WDGR
VSUDZG]HQLDF]\SU]HJOÈGDUNDREVïXJXMHJHRORNDOL]DFMÚ
3RZ\ZRïDQLXPHWRG\getCurrentPosition()
VNU\SWNRQW\QXXMHG]LDïDQLHRGNROHMQHJRZLHUV]D
NRGXSRQLHZDĝĝÈGDQLHMHVWDV\QFKURQLF]QH
SRGREQLHMDNĝÈGDQLD$MD[SU]HGVWDZLRQH
ZSRSU]HGQLPUR]G]LDOH ¿ÈGDQLHMHVWZ\NRQ\ZDQHDV\QFKURQLF]QLH]ZDĝQHJRSRZRGXRNUHĂOHQLH
SRïRĝHQLDJHRJUDğF]QHJRXĝ\WNRZQLND]DMPLH
SU]HJOÈGDUFHLQWHUQHWRZHMFKZLOÚLQLHFKFHV]
DE\ZF]\W\ZDQLHSR]RVWDïHMF]ÚĂFLVWURQ\]RVWDïR
]DWU]\PDQHJG\SU]HJOÈGDUNDRNUHĂODWRSRïRĝHQLH'ODWHJRWHĝPHWRGDPDGZDSDUDPHWU\
getCurrentPosition(VXFFHVV, IDLO)
2. -HĝHOLJHRORNDOL]DFMDMHVWREVïXJLZDQDSU]HJOÈGDUND]ZUDFDZDUWRĂÊtruthyLZ\NRQDQ\EÚG]LH
SLHUZV]\]HVWDZSROHFHñ¿ÈGDMÈRQHLQIRUPDFML
RSRïRĝHQLXJHRJUDğF]Q\PXĝ\WNRZQLNDZ\NRU]\VWXMÈFGRWHJRPHWRGÚgetCurrentPosition()
RELHNWXgeolocation
3. -HĝHOLJHRORNDOL]DFMDQLHMHVWREVïXJLZDQDWR
QDVWÈSLZ\NRQDQLHGUXJLHJR]HVWDZXSROHFHñ
if (Modernizr.geolocation) {
:DUWRĂÊ]ZURWQDWUXWK\DZLÚFRELHNW
MHVWREVïXJLZDQ\
1DVWÈSLZ\NRQDQLHSROHFHñ
ZW\PEORNXNRGX
} else {
)XQNFMDMHVWQLHREVïXJLZDQDOXE
Z\ïÈF]RQD
(ZHQWXDOQLHXĝ\WNRZQLNRGU]XFLï
ĝÈGDQLH
}
VXFFHVVWRQD]ZDIXQNFMLNWöUDEÚG]LH
Z\ZRï\ZDQDJG\ZDUWRĂFLÈ]ZURWQÈPHWRG\
getCurrentPosition()EÚGÈZVSöïU]ÚGQH
JHRJUDğF]QH:VND]DQDWXWDMIXQNFMDDXWRPDW\F]QLHRWU]\PDRELHNWRQD]ZLHposition
]DZLHUDMÈF\LQIRUPDFMHRSRïRĝHQLXJHRJUDğF]Q\P
Xĝ\WNRZQLND
IDLOWRQD]ZDIXQNFMLZ\ZRï\ZDQHMJG\QLHXGDïR
VLÚX]\VNDÊLQIRUPDFMLRSRïRĝHQLXXĝ\WNRZQLND
:VND]DQDWXWDMIXQNFMDDXWRPDW\F]QLHRWU]\PD
RELHNWRQD]ZLHPositionError]DZLHUDMÈF\
V]F]HJöïRZHLQIRUPDFMHREïÚG]LH
2JöOQLHU]HF]XMPXMÈFPDP\WU]\QRZH
RELHNW\NWöUHWU]HEDZ\NRU]\VWDÊSRGF]DV
SUDF\]$3,JHRORNDOL]DFMLgeolocation
positionLPositionError,FKVNïDGQLD]RVWDQLH
SU]HGVWDZLRQDQDQDVWÚSQHMVWURQLH
API API GEOLOKALIZACJI
2EVïXJDJHRORNDOL]DFMLQDVWURQLHLQWHUQHWRZHMZ\PDJDXĝ\FLDWU]HFK
RELHNWöZ:SRQLĝV]\FKWDEHODFKSRND]DQRMDNGRNXPHQWDFMD$3,
]Z\NOHRSLVXMHGRVWÚSQHRELHNW\ZïDĂFLZRĂFLLPHWRG\
OBIEKT GEOLOCATION
2ELHNWgeolocationMHVWZ\NRU]\VW\ZDQ\ZFHOXĝÈGDQLDGDQ\FKGRW\F]ÈF\FKSRïRĝHQLDXĝ\WNRZQLND
-HVWWRRELHNWSRWRPQ\RELHNWXnavigator
METODA
:$572¥m=:5271$
getCurrentPosition
(VXFFHVV, IDLO)
0HWRGDĝÈGDLQIRUPDFMLRSRïRĝHQLXJHRJUDğF]Q\PXĝ\WNRZQLND-HĝHOLXĝ\WNRZQLN]JRG]L
VLÚQDLFKXGRVWÚSQLHQLHWRZDUWRĂFLÈ]ZURWQÈVÈZVSöïU]ÚGQHJHRJUDğF]QHRUD]LQQH
LQIRUPDFMH3DUDPHWUVXFFHVVWRQD]ZDIXQNFMLZ\ZRï\ZDQHMSRRWU]\PDQLXZVSöïU]ÚGQ\FKJHRJUDğF]Q\FKQDWRPLDVWIDLOWRQD]ZDIXQNFMLZ\ZRï\ZDQHMMHĂOLZVSöïU]ÚGQH
WHQLH]RVWDQÈRWU]\PDQH
OBIEKT POSITION
-HĝHOLXĝ\WNRZQLN]JRG]LVLÚQDXGRVWÚSQLHQLHLQIRUPDFMLRVZRLPSRïRĝHQLXJHRJUDğF]Q\PRELHNW
PositionEÚG]LHSU]HND]DQ\IXQNFMLZ\ZRïDQLD]ZURWQHJR2ELHNWWHQ]DZLHUDRELHNWSRWRPQ\coords
NWöUHJRZïDĂFLZRĂFLSU]HFKRZXMÈLQIRUPDFMHRSRïRĝHQLXXĝ\WNRZQLND-HĝHOLXU]ÈG]HQLHREVïXJXMHRELHNW
geolocationPXVLGRVWDUF]DÊPLQLPDOQÈLORĂÊGDQ\FK SDWU]NROXPQDWymagana SR]RVWDïHZïDĂFLZRĂFL
VÈRSFMRQDOQHLLFKGRVWDUF]HQLHPRĝHE\ÊX]DOHĝQLRQHRGPRĝOLZRĂFLGDQHJRXU]ÈG]HQLD
:’$¥&,:2¥m
:$572¥m=:5271$
Position.coords.latitude
6]HURNRĂÊJHRJUDğF]QDZ\UDĝRQDZVWRSQLDFK 7DN
:<0$*$1$
Position.coords.longitude
'ïXJRĂÊJHRJUDğF]QDZ\UDĝRQDZVWRSQLDFK
7DN
Position.coords.accuracy
:\UDĝRQDZPHWUDFKGRNïDGQRĂÊZVSöïU]ÚGQ\FKJHRJUDğF]Q\FK
7DN
Position.coords.altitude
0HWU\QDGSR]LRPHPPRU]D
7DN ZDUWRĂFLÈPRĝHE\Ênull)
Position.coords.altitudeAccuracy
:\UDĝRQDZPHWUDFKGRNïDGQRĂÊSRGF]DV
SRGDZDQLDZ\VRNRĂFL
7DN ZDUWRĂFLÈPRĝHE\Ênull)
Position.coords.heading
/LF]EDVWRSQLRGFK\OHQLDRGNLHUXQNX
SöïQRFQHJR
1LH ]DOHĝ\RGXU]ÈG]HQLD
Position.coords.speed
:\UDĝRQDZPHWUDFKQDVHNXQGÚV]\ENRĂÊ
SRUXV]DQLDVLÚ
1LH ]DOHĝ\RGXU]ÈG]HQLD
Position.coords.timestamp
&]DVNWöU\XSï\QÈïRGFKZLOLXWZRU]HQLD
RELHNWX VIRUPDWRZDQ\MDNRRELHNWDate 1LH ]DOHĝ\RGXU]ÈG]HQLD
OBIEKT POSITIONERROR
-HĝHOLQLHXGDVLÚX]\VNDÊLQIRUPDFMLRSRïRĝHQLXJHRJUDğF]Q\PXĝ\WNRZQLNDIXQNFMDZ\ZRïDQLD
]ZURWQHJRRWU]\PDRELHNWPositionError
:’$¥&,:2¥m
:$572¥m=:5271$
PositionError.code
1XPHUEïÚGXPRĝHSU]\MÈÊQDVWÚSXMÈFHZDUWRĂFL1ĽEUDNXSUDZQLHñ 7DN
2ĽGDQHQLHGRVWÚSQH3ĽSU]HNURF]HQLHF]DVXRF]HNLZDQLD
PositionError.message
.RPXQLNDW QLHSU]H]QDF]RQ\GODXĝ\WNRZQLNDNRñFRZHJR 424 API
:<0$*$1$
7DN
PRACA Z INFORMACJAMI
O POŁOŻENIU UŻYTKOWNIKA
JAVASCRIPT
c09/js/geolocation.js
var elMap = document.getElementById(’loc’);
(OHPHQW+70/
var msg =
ij3U]HSUDV]DP\QLHXGDïRVLÚXVWDOLÊ7ZRMHJRSRïRĝHQLDij
.RPXQLNDWREUDNXGDQ\FKGRW\F]ÈF\FKSRïRĝHQLD
1
2
4
if (Modernizr.geolocation) {
&]\JHRORNDOL]DFMDMHVWREVïXJLZDQD"
navigator.geolocation.getCurrentPosition(success,
fail); 3\WDQLHR]JRGÚQDXĝ\FLHLQIRUPDFML
HO0DSWH[W&RQWHQW ij6SUDZG]DQLHSRïRĝHQLDij
.RPXQLNDWLQIRUPXMÈF\RVSUDZG]HQLXSRïRĝHQLD
} else {
%UDNREVïXJLJHRORNDOL]DFML
elMap.textContent = msg; :\ĂZLHWOHQLHNRPXQLNDWX
}
1. :SU]HGVWDZLRQ\PSU]\NïDG]LHVNU\SW0RGHUQL]UVSUDZG]DF]\JHRORNDOL]DFMDMHVW
REVïXJLZDQDSU]H]SU]HJOÈGDUNÚ
LQWHUQHWRZÈLZïÈF]RQDSU]H]
Xĝ\WNRZQLND
2. 3RGF]DVZ\ZRïDQLDIXQNFML
getCurrentPosition()
Xĝ\WNRZQLN]RVWDQLHSRSURV]RQ\
R]JRGÚQDXGRVWÚSQLHQLH
LQIRUPDFMLRVZRLPSRïRĝHQLX
JHRJUDğF]Q\P
3. -HĝHOLLQIRUPDFMHRSRïRĝHQLX]RVWDQÈRWU]\PDQH
ZVSöïU]ÚGQHJHRJUDğF]QHEÚGÈ
Z\ĂZLHWORQHQDVWURQLH
4. -HĝHOLLQIRUPDFMHRSRïRĝHQLXQLH]RVWDQÈRWU]\PDQH
Xĝ\WNRZQLN]REDF]\NRPXQLNDW
LQIRUPXMÈF\REUDNXPRĝOLZRĂFL
RNUHĂOHQLDMHJRSRïRĝHQLD
3
function success(position) {
2WU]\PDQRGDQHRSRïRĝHQLXXĝ\WNRZQLND
PVJ ijK!'ïXJRĂÊJHRJUDğF]QDEU!ij
8WZRU]HQLHNRPXQLNDWX
msg += position.coords.latitude + ’</h3>’;
'RGDQLHV]HURNRĂFLJHRJUDğF]QHM
PVJ ijK!6]HURNRĂÊJHRJUDğF]QDEU!ij
8WZRU]HQLHNRPXQLNDWX
msg += position.coords.longitude + ’</h3>’;
'RGDQLHGïXJRĂFLJHRJUDğF]QHM
HO0DSLQQHU+70/ PVJ
:\ĂZLHWOHQLHZVSöïU]ÚGQ\FKJHRJUDğF]Q\FK
}
5
function fail(msg) {
1LHRWU]\PDQRGDQ\FKRSRïRĝHQLX
elMap.textContent = msg; :\ĂZLHWOHQLHNRPXQLNDWX
console.log(msg.code); =DUHMHVWURZDQLHEïÚGX
}
-HĝHOLQLHX]\VNDV]Z\QLNX
ZSU]HJOÈGDUFHQDNRPSXWHU]H
SU]HGVWDZLRQ\SU]\NïDGZ\SUöEXMQDVPDUWIRQLH:V]\VWNLH
SU]\NïDG\PRĝQDXUXFKRPLÊ
EH]SRĂUHGQLRZZLWU\QLHLQWHUQHWRZHMSRĂZLÚFRQHMNVLÈĝFH
http://www.javascriptbook.
com/:FHOXREVïXJLVWDUV]\FK
SU]HJOÈGDUHNSRV]XNDMVNU\SWX
RQD]ZLHgeoPosition.js
HTML
c09/geolocation.html
<script src=”js/geolocation.js”></script>
5. -HĝHOL]MDNLHJRNROZLHN
SRZRGXQLHXGDVLÚX]\VNDÊLQIRUPDFMLRSRïRĝHQLXSRQRZQLH
]RVWDQLHZ\ĂZLHWORQ\RGSRZLHGQLNRPXQLNDW.RGEïÚGXSRMDZL
VLÚZRNQLHNRQVROLSU]HJOÈGDUNL
LQWHUQHWRZHM
API 0HFKDQL]P
:HE6WRUDJH LQDF]HM
+70/6WRUDJH SR]ZDODQDSU]HFKRZ\ZDQLHGDQ\FK
ZSU]HJOÈGDUFHLQWHUQHWRZHM,VWQLHMÈGZD
URG]DMHPHFKDQL]PX
ORNDOQ\LVHVML
API WEB STORAGE —
PRZECHOWYWANIE
DANYCH
W PRZEGLĄDARKACH
INTERNETOWYCH
JAK UZYSKAĆ DOSTĘP DO API WEB STORAGE?
3U]HGZSURZDG]HQLHP+70/SRGVWDZRZ\
PHFKDQL]PSU]HFKRZ\ZDQLDLQIRUPDFMLZSU]HJOÈGDUFHVWDQRZLï\SOLNLFRRNLHV-HGQDNUR]ZLÈ]DQLH
RSDUWHQDFRRNLHVPDNLONDSRZDĝQ\FKRJUDQLF]Hñ
PLÚG]\LQQ\PL
• PRĝOLZRĂÊSU]HFKRZ\ZDQLDMHG\QLHQLHZLHONLHM
•
•
LORĂFLGDQ\FK
Z\V\ïDQLHFRRNLHZUD]]NDĝG\PĝÈGDQLHP
VWURQ\ZGDQHMGRPHQLH
MHVWX]QDZDQH]DQLHEH]SLHF]QH
'ODWHJRWHĝZVSHF\ğNDFML+70/ZSURZDG]RQR
RELHNWSDPLÚFLPDVRZHM,VWQLHMÈGZDURG]DMH
WHJRRELHNWXlocalStorageLsessionStorage
:REXRELHNWDFKXĝ\ZDQHVÈWHVDPHPHWRG\
LZïDĂFLZRĂFL5öĝQLFDSROHJDQDRNUHVLHSU]H]
MDNLVÈSU]HFKRZ\ZDQHGDQHDWDNĝHQDW\PF]\
ZV]\VWNLHNDUW\PRJÈX]\VNDÊGRVWÚSGRSU]HFKRZ\ZDQ\FKGDQ\FK
3$0,}m0$62:$
/2.$/1$
SESJI
&]\GDQHPDMÈE\ÊSU]HFKRZ\ZDQHSR]DPNQLÚFLXNDUW\
OXERNQD"
3
2
&]\ZV]\VWNLHRWZDUWH
NDUW\OXERNQDPRJÈX]\VNDÊ
GRVWÚSGRGDQ\FK"
3
2
:RELHNFLHSDPLÚFLPDVRZHMSU]HJOÈGDUNLPRJÈ
SU]HFKRZ\ZDÊQDMF]ÚĂFLHMGR0%GDQ\FKGOD
GDQHMGRPHQ\-HĝHOLZLWU\QDSUöEXMHXPLHĂFLÊ
ZLÚNV]ÈLORĂÊGDQ\FKSU]HJOÈGDUND]Z\NOHS\WD
Xĝ\WNRZQLNDR]JRGÚQDSU]HFKRZ\ZDQLHGRGDWNRZ\FKGDQ\FK 1LJG\QLHZROQRSU]\MPRZDÊ
]DïRĝHQLDĝHXĝ\WNRZQLN]JRG]LVLÚDE\ZLWU\QD
SU]HFKRZ\ZDïDZLÚNV]ÈLORĂÊGDQ\FK 426 API
'DQHVÈSU]HFKRZ\ZDQHZSRVWDFLZïDĂFLZRĂFL
RELHNWöZSDPLÚFLPDVRZHM SDUNOXF]ZDUWRĂÊ :DUWRĂÊZSDU]H]DZV]HMHVWFLÈJLHPWHNVWRZ\P
$E\FKURQLÊLQIRUPDFMHSU]HFKRZ\ZDQHSU]H]
ZLWU\Q\ZHZVSRPQLDQ\FKRELHNWDFKSU]HJOÈGDUNL
VWRVXMÈSROLW\NÚWHJRVDPHJRěUöGïD2]QDF]DWR
ĝHGRVWÚSGRGDQ\FKPDMÈMHG\QLHVWURQ\]QDMGXMÈFHVLÚZWHMVDPHMGRPHQLH
KWWSZZZJRRJOHSO
1
2
3
4
'RSDVRZDQHPXV]ÈE\ÊF]WHU\NRPSRQHQW\
DGUHVX85/
1. 3URWRNöï'RSDVRZDQLHSURWRNRïXMHVW
NRQLHF]QH-HĝHOLGDQH]RVWDï\XPLHV]F]RQH
SU]H]VWURQÚNWöUHMDGUHV]DF]\QDVLÚRG
httpWRRELHNWQLHEÚG]LHGRVWÚSQ\GODVWURQ
RDGUHVDFKUR]SRF]\QDMÈF\FKVLÚRGhttps
2. 6XEGRPHQD1D]ZDVXEGRPHQ\UöZQLHĝPXVL
E\ÊGRSDVRZDQD1DSU]\NïDGVWURQDmaps.
google.plQLHPRĝHX]\VNDÊGRVWÚSXGRGDQ\FK
]DFKRZDQ\FKSU]H]www.google.pl
3. 'RPHQD1D]ZDGRPHQ\PXVLE\ÊGRSDVRZDQD1DSU]\NïDGVWURQDgoogle.plQLHPRĝH
X]\VNDÊGRVWÚSXGRPDJD]\QXORNDOQHJR
XWZRU]RQHJRGODfacebook.com
4. 3RUW1XPHUSRUWXPXVLE\ÊGRSDVRZDQ\
6HUZHU\:::PRJÈPLHÊZLHOHSRUWöZ
1XPHUSRUWXQDMF]ÚĂFLHMQLHMHVWSRGDZDQ\
ZDGUHVLH85/DZLWU\QDLQWHUQHWRZDXĝ\ZD
SRUWXGODVWURQ3DPLÚWDMĝHQXPHUSRUWX
PRĝHVLÚ]PLHQLÊ
2ELHNW\SDPLÚFLPDVRZHMWRW\ONRMHGQR]QRZ\FK$3,Z+70/SU]H]QDF]RQ\FKGRSU]HFKRZ\ZDQLD
GDQ\FK,QQHSR]ZDODMÈQDX]\VNDQLHGRVWÚSXGRV\VWHPXSOLNöZ ]DSRPRFÈ$3,)LOH6\VWHP RUD]ED]
GDQ\FK]QDMGXMÈF\FKVLÚSRVWURQLHNOLHQWDQDSU]\NïDG:HE64/
JAK UZYSKAĆ DOSTĘP DO API WEB STORAGE?
2EDRPDZLDQHRELHNW\VÈLPSOHPHQWRZDQH
ZRELHNFLHZLQGRZDZLÚFQLHPDSRWU]HE\
SRSU]HG]DQLDQD]ZPHWRGMDNÈNROZLHNLQQÈQD]ZÈ
RELHNWX
,VWQLHMHUöZQLHĝPRĝOLZRĂÊZVWDZLDQLDLSRELHUDQLDNOXF]\RUD]ZDUWRĂFL]DSRPRFÈQRWDFML
]NURSNÈF]\OLSRGREQLHMDNZSU]\SDGNXLQQ\FK
RELHNWöZ
$E\XPLHĂFLÊHOHPHQWZRELHNFLHSDPLÚFLPDVRZHMQDOHĝ\Xĝ\ÊPHWRG\setItem()NWöUDSRELHUD
GZDSDUDPHWU\QD]ZÚNOXF]DRUD]SU]\SLVDQÈPX
ZDUWRĂÊ
2ELHNW\SDPLÚFLPDVRZHMVÈQDMF]ÚĂFLHMZ\NRU]\VW\ZDQHGRSU]HFKRZ\ZDQLDGDQ\FKZIRUPDFLH
-621'ODWHJRWHĝ
PHWRGDparse()RELHNWXJSONMHVWXĝ\ZDQD
GRNRQZHUVMLGDQ\FK-621QDSRVWDÊRELHNWX
-DYD6FULSW
PHWRGDstringify()RELHNWXJSON jest
Xĝ\ZDQDGRSU]HNV]WDïFHQLDRELHNWöZQDSRVWDÊ
FLÈJöZWHNVWRZ\FKVIRUPDWRZDQ\FKMDNR-621
1DWRPLDVWSREUDQLHZDUWRĂFL]RELHNWXSDPLÚFL
PDVRZHMXPRĝOLZLDPHWRGDgetItem()NWöUD
SRELHUDDUJXPHQWZSRVWDFLNOXF]D
3U]HFKRZ\ZDQLHLQIRUPDFML
ORFDO6WRUDJHVHW,WHP ijZLHNijijij ORFDO6WRUDJHVHW,WHP ijNRORUijijQLHELHVNLij 8]\VNDQLHGRVWÚSXGRLQIRUPDFML
LSU]HFKRZ\ZDQLHLFKZ]PLHQQHM
YDUDJH ORFDO6WRUDJHJHW,WHP ijZLHNij var color = localStorage.getItem(’kolor’);
/LF]EDSU]HFKRZ\ZDQ\FKHOHPHQWöZ
var items = localStorage.length;
'DQHZRELHNWDFKSDPLÚFLPDVRZHMVÈZVWDZLDQH
LSRELHUDQHZVSRVöEV\QFKURQLF]Q\2]QDF]DWR
]DWU]\PDQLHZV]HONLFKLQQ\FKRSHUDFMLVNU\SWX
SRGF]DVX]\VNLZDQLDGRVWÚSXGRGDQ\FKOXELFK
ZVWDZLDQLD'ODWHJRWHĝMHĝHOL]DFKRG]LSRWU]HED
FLÈJïHJRX]\VNLZDQLDGRVWÚSXGRSU]HFKRZ\ZDQ\FKGDQ\FKPRĝQD]DXZDĝ\ÊVSRZROQLHQLH
G]LDïDQLDZLWU\Q\
METODA
•
•
3U]HFKRZ\ZDQLHLQIRUPDFML
QRWDFMDRELHNWX ORFDO6WRUDJHZLHN ORFDO6WRUDJHNRORU ijQLHELHVNLij
8]\VNDQLHGRVWÚSXGRLQIRUPDFML
QRWDFMDRELHNWX YDUDJH ORFDO6WRUDJHZLHN
var color = localStorage.kolor;
/LF]EDSU]HFKRZ\ZDQ\FKHOHPHQWöZ
var items = localStorage.length;
3RQLĝHM]QDMGXMÈVLÚWDEHOH]DZLHUDMÈFHPHWRG\
LZïDĂFLZRĂFLRELHNWöZSDPLÚFLPDVRZHM7DEHOH
WHVÈSRGREQHGRSU]HGVWDZLRQ\FKZF]HĂQLHMGOD
$3,JHRORNDOL]DFMLLZVND]XMÈW\SWDEHO]MDNLPL
PRĝHV]VLÚVSRW\NDÊZGRNXPHQWDFMDFKGRW\F]ÈF\FK$3,
OPIS
setItem(NOXF], ZDUWRĂÊ)
8WZRU]HQLHQRZHMSDU\NOXF]ZDUWRĂÊ
getItem(NOXF])
3REUDQLHZDUWRĂFLZVND]DQHJRNOXF]D
removeItem(NOXF])
8VXQLÚFLHSDU\NOXF]ZDUWRĂÊGODZVND]DQHJRNOXF]D
clear()
8VXQLÚFLHZV]\VWNLFKLQIRUPDFML]RELHNWX
:’$¥&,:2¥m
OPIS
length
/LF]EDNOXF]\
API 427
MAGAZYN LOKALNY
3U]\NïDG\SU]HGVWDZLRQHQDWHMLQDVWÚSQHMVWURQLH
SU]HFKRZXMÈGDQHNWöUHXĝ\WNRZQLNZSURZDG]Lï
ZSRODFKWHNVWRZ\FK3U]\NïDG\UöĝQLÈVLÚ
GïXJRĂFLÈF]DVXSU]HFKRZ\ZDQLDGDQ\FK
1. .RQVWUXNFMDZDUXQNRZD]RVWDïDXĝ\WDGR
VSUDZG]HQLDF]\SU]HJOÈGDUNDREVïXJXMHSRWU]HEQHQDP$3,
2. 2GQLHVLHQLDGRSöOWHNVWRZ\FKQD]Z\
Xĝ\WNRZQLNDLRGSRZLHG]L]RVWDMÈ]DFKRZDQH
Z]PLHQQ\FK
3. =DSRPRFÈPHWRG\getItem()VNU\SWVSUDZG]DF]\RELHNWSDPLÚFLPDVRZHM]DZLHUDZDUWRĂÊ
GODNWöUHJRNROZLHN]HZVND]DQ\FKNOXF]\-HĝHOL
WDN]RVWDMHRQDZ\ĂZLHWORQDZRGSRZLHGQLPSROX
WHNVWRZ\PSU]H]XDNWXDOQLHQLHMHJRZïDĂFLZRĂFL
value
4. =DNDĝG\PUD]HPJG\GODGRZROQHJRSROD
WHNVWRZHJRMHVWZ\ZRï\ZDQH]GDU]HQLHinput
IRUPXODU]]DSLVXMHGDQHZRELHNFLHlocalStorage
OXEsessionStorage:DUWRĂFLWHEÚGÈDXWRPDW\F]QLHZ\ĂZLHWORQHSRRGĂZLHĝHQLXVWURQ\
c09/js/local-storage.js
JAVASCRIPT
1
LI ZLQGRZORFDOVWRUDJH ^
2
var txtUsername = document.getElementById(’username’);
3REUDQLHHOHPHQWöZIRUPXODU]D
YDUW[W$QVZHU GRFXPHQWJHW(OHPHQW%\,G ijDQVZHUij 3
txtUsername.value = localStorage.getItem(’username’); :DUWRĂFLHOHPHQWöZVÈ
W[W$QVZHUYDOXH ORFDO6WRUDJHJHW,WHP ijDQVZHUij SREUDQH]RELHNWX
ORFDO6WRUDJH
W[W8VHUQDPHDGG(YHQW/LVWHQHU ijLQSXWijIXQFWLRQ ^'DQH]RVWDï\]DSLVDQH
localStorage.setItem(’username’, txtUsername.value);
}, false);
4
W[W$QVZHUDGG(YHQW/LVWHQHU ijLQSXWijIXQFWLRQ ^'DQH]RVWDï\]DSLVDQH
ORFDO6WRUDJHVHW,WHP ijDQVZHUijW[W$QVZHUYDOXH }, false);
}
FORFDOVWRUDJHKWPO -HG\QDUöĝQLFDZVHVVLRQVWRUDJHKWPOWRïÈF]HSURZDG]ÈFHGRVNU\SWX GLYFODVV ĵWZRWKLUGVĵ!
<form id=”application” action=”apply.php”>
ODEHOIRU ĵXVHUQDPHĵ!,PLÚODEHO!
LQSXWW\SH ĵWH[WĵLG ĵXVHUQDPHĵQDPH ĵXVHUQDPHĵ!EU!
ODEHOIRU ĵDQVZHUĵ!2GSRZLHGěODEHO!
WH[WDUHDLG ĵDQVZHUĵQDPH ĵDQVZHUĵ!WH[WDUHD!
LQSXWW\SH ĵVXEPLWĵ!
</form>
</div>
<script src=”js/local-storage.js”></script>
428 API
HTML
MAGAZYN SESJI
2ELHNWsessionStorageMHVWOHSLHMGRVWRVRZDQ\GR
LQIRUPDFMLFKDUDNWHU\]XMÈF\FKVLÚQDVWÚSXMÈF\PL
FHFKDPL
2ELHNWlocalStorageMHVWOHSLHMGRVWRVRZDQ\GR
LQIRUPDFMLFKDUDNWHU\]XMÈF\FKVLÚQDVWÚSXMÈF\PL
FHFKDPL
• &]ÚVWRXOHJDMÈ]PLDQRP ]DNDĝG\PUD]HPJG\ • =PLDQ\VÈZSURZDG]DQHMHG\QLHFRSHZLHQ
F]DV QDSU]\NïDGKDUPRQRJUDPOXEFHQ\ FR
•
Xĝ\WNRZQLNRGZLHG]DZLWU\QÚLQWHUQHWRZÈQD
SU]\NïDGLQIRUPDFMHR]DORJRZDQLXXĝ\WNRZQLND
OXERMHJRSRïRĝHQLX 6WDQRZLÈGDQHRVRELVWHNWöUHQLHSRZLQQ\
E\ÊGRVWÚSQHGODLQQ\FKXĝ\WNRZQLNöZGDQHJR
XU]ÈG]HQLD
•
PRĝHE\ÊSRPRFQHSRGF]DVLFKSU]HFKRZ\ZDQLDRIĠLQH
8ĝ\WNRZQLNPRĝHSRZUöFLÊQDVWURQÚLFKFH
SRQRZQLHXĝ\ÊW\FKVDP\FKLQIRUPDFML QD
SU]\NïDG]DSLVDQHXVWDZLHQLD JAVASCRIPT
c09/js/session-storage.js
1
LI ZLQGRZVHVVLRQVWRUDJH ^
2
var txtUsername = document.getElementById(’username’);
3REUDQLHHOHPHQWöZIRUPXODU]D
YDUW[W$QVZHU GRFXPHQWJHW(OHPHQW%\,G ijDQVZHUij 3
txtUsername.value = sessionStorage.getItem(’username’); :DUWRĂFLHOHPHQWöZVÈ
W[W$QVZHUYDOXH VHVVLRQ6WRUDJHJHW,WHP ijDQVZHUij SREUDQH]RELHNWXVHVVLRQ6WRUDJH
W[W8VHUQDPHDGG(YHQW/LVWHQHU ijLQSXWijIXQFWLRQ ^'DQH]RVWDï\]DSLVDQH
sessionStorage.setItem(’username’, txtUsername.value);
}, false);
4
W[W$QVZHUDGG(YHQW/LVWHQHU ijLQSXWijIXQFWLRQ ^'DQH]RVWDï\]DSLVDQH
VHVVLRQ6WRUDJHVHW,WHP ijDQVZHUijW[W$QVZHUYDOXH }, false);
}
WYNIK
API 429
API HISTORY I PUSHSTATE
3RSU]HMĂFLX]MHGQHMVWURQ\QDLQQÈSU]HJOÈGDUNDLQWHUQHWRZDSDPLÚWD
RGZLHG]DQHVWURQ\-HGQDNZDSOLNDFMDFKRSDUW\FKQDWHFKQRORJLL$MD[
QLHQDVWÚSXMHSU]HMĂFLHQD]XSHïQLHQRZÈVWURQÚLGODWHJRXĝ\ZDMÈRQH$3,
+LVWRU\GRXDNWXDOQLDQLDSDVNDDGUHVXLKLVWRULL
NA CZYM POLEGA DZIAŁANIE API
HISTORY?
.DĝGDNDUWDLRNQRZSU]HJOÈGDUFHSU]HFKRZXMH
ZïDVQÈKLVWRULÚRGZLHG]RQ\FKVWURQ.LHG\
ZNDUFLHOXERNQLHZ\ĂZLHWODV]QRZÈVWURQÚMHM
DGUHV85/]RVWDMHGRGDQ\GROLVW\VWURQZKLVWRULL
RGZLHG]RQ\FK
:SURZDG]RQHZ+70/$3,+LVWRU\PRĝHSRPöF
ZUR]ZLÈ]DQLXSU]HGVWDZLRQHJRSUREOHPX3R]ZDODQDSUDFÚ]RELHNWHPhistorySU]HJOÈGDUNL
• ']LÚNLPHWRGRPpushState()
•
LreplaceState()]\VNXMHV]PRĝOLZRĂÊ
XDNWXDOQLHQLDVWRVXKLVWRULLSU]HJOÈGDUNL
:UD]]NDĝG\PHOHPHQWHPPRJÈE\ÊSU]HFKRZ\ZDQHLQIRUPDFMHGRGDWNRZH
']LÚNLWHPXZSU]HJOÈGDUFHLQWHUQHWRZHMPRĝQD
Xĝ\ZDÊSU]\FLVNöZķZVWHF]ĵLķGDOHMĵGRSRUXV]DQLDVLÚSRVWURQDFKRGZLHG]RQ\FKZGDQHM
NDUFLHOXERNQLH-HGQDNZZLWU\QDFKRSDUW\FKQD
WHFKQRORJLL$MD[DGUHV\85/QLHVÈDXWRPDW\F]QLH
XDNWXDOQLDQH DSU]\FLVNķZVWHF]ĵPRĝHQLH
SRND]\ZDÊRVWDWQLRZ\ĂZLHWODQHM]DZDUWRĂFL -DNZNUöWFH]REDF]\V]GRRELHNWXhistoryPRĝQD
GRGDZDÊLQIRUPDFMHSRGF]DVZ\NRQ\ZDQLDĝÈGDñ
$MD[3RQDGWRSRNOLNQLÚFLXSU]\FLVNXķZVWHF]ĵ
Z\ĂZLHWODQDMHVWSUDZLGïRZD]DZDUWRĂÊ
PIERWSZE ŁĄCZE:
TRZECIE ŁĄCZE:
DRUGIE ŁĄCZE:
jeden.html
dwa.html
trzy.html
dwa.html
JEDEN DWA TRZY
JEDEN DWA TRZY
JEDEN DWA TRZY
JEDEN DWA TRZY
1
2
3
2
Pierwsza odwiedzona
Kliknięcie łącza: ta strona
strona zostaje umieszczona zostaje umieszczona na
na stosie historii
górze stosu historii
jeden.html
Kliknięcie łącza: ta strona
zostaje umieszczona na
górze stosu historii
Kliknięcie przycisku „wstecz”
powoduje przejście w dół
stosu historii
GZDKWPO
trzy.html
trzy.html
jeden.html
GZDKWPO
GZDKWPO
jeden.html
jeden.html
3U]HJOÈGDQLHVWURQLQWHUQHWRZ\FKJG\VÈSU]HJOÈGDQHVWURQ\LQWHUQHWRZHDGUHV85/ZSDVNX
]RVWDMHXDNWXDOQLRQ\%LHĝÈFDVWURQD]RVWDMH
SRQDGWRXPLHV]F]RQDQDJöU]HWDN]ZDQHJRVWRVX
KLVWRULL
.OLNQLÚFLHSU]\FLVNXķZVWHF]ĵSRZRGXMHSU]HMĂFLH
ZGöïVWRVXKLVWRULL
API
PRZYCISK „WSTECZ”:
.OLNQLÚFLHSU]\FLVNXķGDOHMĵSRZRGXMHSU]HMĂFLH
ZJöUÚVWRVXKLVWRULL RLOHWRPRĝOLZH 1RZDVWURQDMHĝHOLSRMDZLVLÚĝÈGDQLHZ\ĂZLHWOHQLDQRZHMVWURQ\WRGDQHQRZHMVWURQ\]DVWÈSLÈQD
VWRVLHKLVWRULLZV]\VWNRFR]QDMGXMHVLÚSRZ\ĝHM
ELHĝÈFHMVWURQ\
6WDQR]QDF]DV\WXDFMÚZNWöUHMFRĂVLÚG]LHMHZGDQ\PF]DVLH+LVWRULDSU]HJOÈGDUNLWRVWRVLQIRUPDFML
RVWDQDFKXïRĝRQ\FKMHGHQQDGUXJLP7U]\PHWRG\Z\PLHQLRQHQDWHMVWURQLHSR]ZDODMÈQDSU]HSURZDG]DQLHRSHUDFMLQDVWDQLHSU]HJOÈGDUNL
DODANIE INFORMACJI DO OBIEKTU HISTORII
0HWRGDpushState()SRZRGXMHZVWDZLHQLHLQIRUPDFMLGRRELHNWXhistory=NROHLreplaceState()
XDNWXDOQLDELHĝÈF\ZSLVKLVWRULL2ELHPHWRG\
SRELHUDMÈWHVDPHWU]\SDUDPHWU\ SDWU]SRQLĝHM ]NWöU\FKNDĝG\XDNWXDOQLDRELHNWhistory
3RQLHZDĝRELHNWhistoryMHVWRELHNWHPSRWRPQ\P
ZLQGRZMHJRQD]ZÚPRĝQDEH]SRĂUHGQLRZ\NRU]\VW\ZDÊZVNU\SFLH'ODWHJRPRĝHV]Z\GDÊSROHFHQLHhistory.pushState()ĽQLHPXVLV]Z\GDZDÊ
SROHFHQLDZLQGRZKLVWRU\SXVK6WDWH history.pushState(VWDWH, WLWOH, XUO);
1
1. 2ELHNWhistoryPRĝH
SU]HFKRZ\ZDÊLQIRUPDFMH
ZNDĝG\PHOHPHQFLHXPLHV]F]RQ\PZKLVWRULL-HVWWR
PRĝOLZHG]LÚNLSDUDPHWURZL
stateDLQIRUPDFMHPRJÈE\Ê
SRQRZQLHSREUDQHSRSRZURFLH
QDGDQÈVWURQÚ
2. $NWXDOQLHQLHZ\NRU]\VW\ZDQ\
SU]H]ZLÚNV]RĂÊSU]HJOÈGDUHN
SDUDPHWUtitleMHVWSU]H]QDF]RQ\GR]PLDQ\W\WXïXVWURQ\
0RĝHV]SRGDÊFLÈJWHNVWRZ\
GODWHMZDUWRĂFLEÚG]LHJRWRZ\
GRXĝ\FLDJG\SU]HJOÈGDUNL
]DF]QÈREVïXJLZDÊSDUDPHWU
title 2
3
3. $GUHV85/NWöU\PDSU]H]
SU]HJOÈGDUNÚ]RVWDÊZ\ĂZLHWORQ\GODGDQHMVWURQ\LQWHUQHWRZHM0XVLPLHÊWDNLHVDPR
ěUöGïRMDNELHĝÈF\DGUHV85/
LSRZLQLHQZ\ĂZLHWODÊSUDZLGïRZÈ]DZDUWRĂÊJG\Xĝ\WNRZQLN
]GHF\GXMHVLÚSRZUöFLÊQDWÚ
VWURQÚ
POBRANIE INFORMACJI Z OBIEKTU HISTORY
'RGDQLH]DZDUWRĂFLGRKLVWRULLSU]HJOÈGDUNLWR
MHG\QLHF]ÚĂÊUR]ZLÈ]DQLD'UXJÈF]ÚĂFLÈMHVW
ZF]\WDQLHSUDZLGïRZHM]DZDUWRĂFLJG\Xĝ\WNRZQLN
NOLNQLHSU]\FLVNķZVWHF]ĵOXEķGDOHMĵZSU]HJOÈGDUFH$E\SRPöFZZ\ĂZLHWOHQLXSUDZLGïRZHM]DZDUWRĂFLZ\ZRï\ZDQHMHVW]GDU]HQLHonpopstate
JG\Xĝ\WNRZQLN]DĝÈGDQRZHMVWURQ\
:\PLHQLRQH]GDU]HQLHSRZRGXMHZ\ZRïDQLH
IXQNFMLRGSRZLHG]LDOQHM]DZF]\WDQLHRGSRZLHGQLHM]DZDUWRĂFLQDVWURQLH,VWQLHMÈGZDVSRVRE\
RNUHĂOHQLDMDND]DZDUWRĂÊSRZLQQDE\ÊXPLHV]F]RQDQDVWURQLH
• RELHNWlocation SU]HGVWDZLDSDVHNDGUHVX
•
ZSU]HJOÈGDUFH ZDUWRĂÊZïDĂFLZRĂFLstateZRELHNFLHhistory
2ELHNWlocation
-HĝHOLXĝ\WNRZQLNNOLNQLHSU]\FLVNķZVWHF]ĵOXE
ķGDOHMĵZSU]HJOÈGDUFHSDVHNDGUHVX]RVWDQLH
XDNWXDOQLRQ\FRSR]ZROLQDSREUDQLHDGUHVX85/
VWURQ\NWöUDSRZLQQDE\ÊZF]\WDQD]DSRPRFÈ
location.pathname (locationWRRELHNWSRWRPQ\
RELHNWXZLQGRZQDWRPLDVWMHJRZïDĂFLZRĂÊ
pathnameWRELHĝÈF\DGUHV85/ 7DNLHUR]ZLÈ]DQLHVSUDZG]DVLÚGRVNRQDOHSRGF]DVXDNWXDOQLDQLD
FDïHMVWURQ\
2ELHNWstate
3RQLHZDĝSLHUZV]\SDUDPHWUPHWRG\pushState()
SU]HFKRZXMHGDQHZUD]]RELHNWHPhistoryGOD
WHMVWURQ\PRĝQDJRZ\NRU]\VWDÊGRSU]HFKRZ\ZDQLDGDQ\FKZIRUPDFLH-621'DQHWHPRJÈ
E\ÊQDVWÚSQLHEH]SRĂUHGQLRZF]\WDQHQDVWURQLH
7DNVLÚG]LHMHJG\QRZD]DZDUWRĂÊZF]\WXMH
GDQH]DPLDVWWUDG\F\MQHMVWURQ\LQWHUQHWRZHM API OBIEKT HISTORY
:SURZDG]RQHZ+70/$3,+LVWRU\RSLVXMHIXQNFMRQDOQRĂÊRELHNWXhistory
ZQRZRF]HVQ\FKSU]HJOÈGDUNDFK3R]ZDODQDX]\VNDQLHGRVWÚSXGRKLVWRULL
SU]HJOÈGDUNLLXDNWXDOQLDQLHWHMKLVWRULL DOHGRW\F]ÈFHMMHG\QLHVWURQZ7ZRMHM
ZLWU\QLHNWöUHRGZLHG]LïXĝ\WNRZQLN 1DZHWMHĂOLRGZLHG]DMÈF\QLHMHVWSU]HQRV]RQ\QDQRZÈVWURQÚLQWHUQHWRZÈ QDSU]\NïDGQDVNXWHN
XDNWXDOQLHQLDW\ONRIUDJPHQWXVWURQ\]DSRPRFÈWHFKQRORJLL$MD[ WRQDGDOPRĝQD]PRG\ğNRZDÊ
RELHNWhistoryDE\]DJZDUDQWRZDÊG]LDïDQLHSU]\FLVNöZķZVWHF]ĵLķGDOHMĵ]JRGQLH]RF]HNLZDQLDPL
Xĝ\WNRZQLNDF]\OLWDNMDNQDVWURQDFKQLHNRU]\VWDMÈF\FK]WHFKQRORJLL$MD[
:SRQLĝV]\FKWDEHODFKSU]HGVWDZLRQRLQIRUPDFMHMDNLHPRĝHV]]QDOHěÊZGRNXPHQWDFML$3,
3RQDE\FLXGRĂZLDGF]HQLDZSUDF\]Z\PLHQLRQ\PLPHWRGDPLZïDĂFLZRĂFLDPLL]GDU]HQLDPL
SU]HNRQDV]VLÚĝHSUDFD]LQQ\PLURG]DMDPL$3,MHVWïDWZLHMV]D
OBIEKT HISTORY
METODA
KLVWRU\EDFN
OPIS
3U]HMĂFLHķZVWHF]ĵZKLVWRULLSRGREQLHMDNZSU]\SDGNXXĝ\FLDSU]\FLVNX
ķZVWHF]ĵZSU]HJOÈGDUFH
KLVWRU\IRUZDUG
3U]HMĂFLHGRSU]RGXZKLVWRULLSRGREQLHMDNZSU]\SDGNXXĝ\FLDSU]\FLVNX
ķGDOHMĵZSU]HJOÈGDUFH
history.go()
3U]HMĂFLHGRZVND]DQHMVWURQ\ZKLVWRULL7RMHVWQXPHULQGHNVXSRF]ÈZV]\RG
0:\ZRïDQLH.go(1)R]QDF]DNOLNQLÚFLHSU]\FLVNXķGDOHMĵQDWRPLDVW.go(-1) —
SU]\FLVNXķZVWHF]ĵ
history.pushState()
8PLHV]F]HQLHHOHPHQWXQDVWRVLHKLVWRULL .OLNQLÚFLHïÈF]DQDVWURQLH]Z\NOH
SRZRGXMHZ\ZRïDQLH]GDU]HQLDhashchange]DPLDVWloadDOHĝDGQH]GDU]HQLH
QLH]RVWDQLHZ\ZRïDQHSRXĝ\FLXPHWRG\pushState()JG\DGUHV85/]DZLHUD
]QDNKDVK history.replaceState()
']LDïDQLHWDNLHVDPRMDNPHWRG\pushState()]Z\MÈWNLHPPRG\ğNDFML
ELHĝÈFHJRHOHPHQWXZKLVWRULL
:’$¥&,:2¥m
OPIS
length
:ïDĂFLZRĂÊSRGDMHOLF]EÚHOHPHQWöZ]QDMGXMÈF\FKVLÚZRELHNFLHhistory
='$5=(1,(
OPIS
ZLQGRZRQSRSVWDWH
=GDU]HQLHZ\NRU]\VW\ZDQHGRREVïXJLSRUXV]DQLDVLÚXĝ\WNRZQLNDPLÚG]\
VWURQDPL
API
PRACA Z HISTORIĄ
1. )XQNFMDloadContent()Z\NRU]\VWXMHPHWRGÚ
M4XHU\.load()ĽSDWU]UR]G]LDïSRGUR]G]LDï
ķ:F]\W\ZDQLH]DZDUWRĂFL+70/QDVWURQLH]D
SRPRFÈM4XHU\ĵĽZFHOXZF]\WDQLD]DZDUWRĂFL
QDVWURQLH
2. 3RNOLNQLÚFLXïÈF]DQDVWÚSXMHZ\ZRïDQLHIXQNFML
DQRQLPRZHM
JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
3. 6WURQDSU]H]QDF]RQDGRZF]\WDQLDMHVW
SU]HFKRZ\ZDQDZ]PLHQQHMRQD]ZLHhref
4. 1DVWÚSXMHXDNWXDOQLHQLHïÈF]\
5. :\ZRï\ZDQDMHVWIXQNFMDloadContent()
SDWU]NURN
6. 0HWRGDpushState()RELHNWXhistory
XDNWXDOQLDVWRVKLVWRULL
c09/js/history.js
$(function() {
0RGHO'20]RVWDïZF]\WDQ\
function loadContent(url){
:F]\WDQLHQRZHM]DZDUWRĂFLQDVWURQLH
ijFRQWHQWij ORDG XUOijFRQWDLQHUij KLGH IDGH,Q ijVORZij }
$(’nav a’).on(’click’, function(e) { 3URFHGXUDREVïXJLNOLNQLÚFLD
e.preventDefault();
8QLHPRĝOLZLHQLHSU]HMĂFLDQDQRZÈVWURQÚ
var href = this.href;
3REUDQLHZDUWRĂFLDWU\EXWXKUHIïÈF]D
var $this = $(this);
3U]HFKRZ\ZDQLHïÈF]DZRELHNFLHM4XHU\
$(’a’).removeClass(’current’);
8VXQLÚFLHNODV\FXUUHQW]ïÈF]\
$this.addClass(’current’);
'RGDQLHNODV\FXUUHQW
loadContent(href);
:\ZRïDQLHIXQNFMLZF]\WDQLH]DZDUWRĂFL
history.pushState(’’, $this.text, href);
8DNWXDOQLHQLHKLVWRULL
});
ZLQGRZRQSRSVWDWH IXQFWLRQ ^2EVïXJDSU]\FLVNöZZVWHF]GDOHM
var path = location.pathname;
3REUDQLHĂFLHĝNLGRVWÚSXGRSOLNX
loadContent(path);
:\ZRïDQLHIXQNFMLZFHOXZF]\WDQLDVWURQ\
YDUSDJH SDWKVXEVWULQJ ORFDWLRQSDWKQDPHODVW,QGH[2I Ĵĵ $(’a’).removeClass(’current’);
8VXQLÚFLHNODV\FXUUHQW]ïÈF]\
$(’[href=”’ + page + ’”]’).addClass(’current’); 'RGDQLHNODV\FXUUHQW
};
});
WYNIK
7. .LHG\Xĝ\WNRZQLNNOLNQLHSU]\FLVNķZVWHF]ĵ
OXEķGDOHMĵQDVWÚSXMHZ\ZRïDQLH]GDU]HQLD
onpopstate6ïXĝ\RQRGRZ\ZRïDQLDIXQNFML
DQRQLPRZHM
8. 3DVHNDGUHVXSU]HJOÈGDUNLZ\ĂZLHWODRGSRZLHGQLÈVWURQÚ]HVWRVXKLVWRULL:ïDĂFLZRĂÊ
location.pathnameMHVWZ\NRU]\VW\ZDQDZFHOX
SREUDQLDĂFLHĝNLGRVWÚSXGRVWURQ\NWöUDPD
]RVWDÊZF]\WDQD
9. )XQNFMDloadContent()ĽSDWU]NURNĽMHVW
Z\ZRï\ZDQDSRQRZQLHDE\SREUDÊZVND]DQÈ
VWURQÚ
10. 3RELHUDQDMHVWQD]ZDSOLNXFRSR]ZDODQD
XDNWXDOQLHQLHïÈF]\
API SKRYPTY WRAZ Z API
:LQWHUQHFLH]QDMG]LHV]VHWNLEH]SïDWQ\FKVNU\SWöZ
:LHOH]QLFKSRVLDGD$3,NWöUHWU]HEDVWRVRZDÊ
DE\PöFXĝ\ÊGDQHJRVNU\SWX
API SKRYPTU
WTYCZKI JQUERY
ANGULARJS
:LHOXSURJUDPLVWöZVWRVXMH
ZZLWU\QDFKZïDVQHVNU\SW\
&]DVDPLWRVÈZ]JOÚGQLHSURVWH
VNU\SW\SU]H]QDF]RQHGRUHDOL]RZDQLDSRMHG\QF]\FK]DGDñ
QDSU]\NïDGVOLGHUOLJKWER[
LVRUWRZDQLHWDEHO =NROHL
LQQH QDSU]\NïDGM4XHU\ VÈ
]QDF]QLHEDUG]LHMVNRPSOLNRZDQHLPRJÈE\ÊZ\NRU]\VW\ZDQH
GRZLHOXUöĝQ\FKFHOöZ
:LHOXSURJUDPLVWöZWZRU]\NRG
NWöUHJR]DGDQLHPMHVWUR]EXGRZDPRĝOLZRĂFLRIHURZDQ\FK
SU]H]M4XHU\6NU\SW\WHGRGDMÈ
PHWRG\UR]V]HU]DMÈFHRELHNW
jQueryLVÈ]QDQHMDNRZW\F]NL
M4XHU\
$QJXODU-6WRNROHMQDELEOLRWHND
-DYD6FULSWDOH]XSHïQLHLQQD
QLĝM4XHU\SRQLHZDĝMHMFHOHP
MHVWXïDWZLHQLHWZRU]HQLD
DSOLNDFMLVLHFLRZ\FK
:WHMF]ÚĂFLNVLÈĝNL]RVWDQÈ
SU]HGVWDZLRQHGZDURG]DMH
VNU\SWöZNWöU\FKNRGPRĝHV]
Z\NRU]\VWDÊSRSR]QDQLX$3,
VNU\SWX
• ]HVWDZZW\F]HNM4XHU\
]QDQ\FKMDNRM4XHU\8,
• VNU\SWRQD]ZLH$QJXODU-6
.LHG\FKFHV]VNRU]\VWDÊ
]ZW\F]NLM4XHU\PXVLV]GRGDÊ
QDVWURQLHQDMSLHUZVNU\SW
M4XHU\DGRSLHURSöěQLHMVNU\SW
ZW\F]NL1DVWÚSQLHZ\ELHUDV]
HOHPHQW\ SRGREQLHMDN
ZSU]\SDGNXSUDF\]HVWDQGDUGRZ\PLPHWRGDPLM4XHU\ DZW\F]NDSR]ZDODQDXĝ\FLH
]GHğQLRZDQ\FKZQLHMPHWRG
:WHQVSRVöEX]\VNXMHV]GRVWÚS
GRIXQNFMRQDOQRĂFLQLHGRVWÚSQHM
ZRU\JLQDOQ\PVNU\SFLHM4XHU\
-HGQÈ]MHMQDMEDUG]LHMU]XFDMÈF\FKVLÚZRF]\FHFKMHVW
PRĝOLZRĂÊX]\VNDQLDGRVWÚSX
GR]DZDUWRĂFLLXDNWXDOQLHQLH
MHMEH]NRQLHF]QRĂFLWZRU]HQLD
NRGXSU]H]QDF]RQHJRGRREVïXJL
]GDU]HñZ\ERUXHOHPHQWöZ
OXEXDNWXDOQLDQLD]DZDUWRĂFL
HOHPHQWX:W\PUR]G]LDOH
PDP\PLHMVFHQDMHG\QLH
NUöWNLHZSURZDG]HQLHGR
$QJXODU-6FKRÊSRZLQQRRQR
SRPöFZSRND]DQLXUöĝQRURGQRĂFLGRVWÚSQ\FKVNU\SWöZ
XïDWZLDMÈF\WZRU]HQLH
DSOLNDFMLVLHFLRZ\FK
SKRYPTY FIRM TRZECICH
=DQLPSU]\VWÈSLV]GRWZRU]HQLD
ZïDVQHJRVNU\SWXRGDQHM
IXQNFMRQDOQRĂFLZDUWRVSUDZG]LÊF]\NWRĂLQQ\MXĝZF]HĂQLHM
QLHRSUDFRZDïF]HJRĂWDNLHJR
SU]HFLHĝQLHPDVHQVXZ\ZDĝDQLHRWZDUW\FKGU]ZL API
'REU]HMHVWZLÚFVSUDZG]LÊ
F]\
• ]QDOH]LRQ\VNU\SWMHVWZPLD•
•
UÚUHJXODUQLHXDNWXDOQLDQ\
]QDOH]LRQ\VNU\SWVWRVXMH
]DVDGÚUR]G]LDïXNRGX+70/
RG-DYD6FULSW
LVWQLHMÈUHFHQ]MHGRW\F]ÈFH
LQWHUHVXMÈFHJR&LÚVNU\SWX
:WHQVSRVöEPRĝHV]VLÚ
XSHZQLÊF]\ZVNU\SFLH]DVWRVRZDQRQRZRF]HVQHSUDNW\NL
LF]\MHVWRQQDGDOXDNWXDOQLDQ\
7U]HEDUöZQLHĝSDPLÚWDÊĝH
SROHFHQLDGRW\F]ÈFHVSRVREX
Xĝ\FLDGDQHJRVNU\SWXQLH
]DZV]HVÈRNUHĂODQHPLDQHP
$3,
JQUERY UI
)XQGDFMDM4XHU\SU]\JRWRZDïDZïDVQ\]HVWDZZW\F]HNGODM4XHU\
NWöUH]RVWDï\QD]ZDQHM4XHU\8,:W\F]NLWHPDMÈSRPöFZWZRU]HQLX
LQWHUIHMVXXĝ\WNRZQLND
NA CZYM POLEGA
DZIAŁANIE JQUERY UI?
JAK UZYSKAĆ DOSTĘP DO
JQUERY UI?
M4XHU\8,WR]HVWDZZW\F]HN
GODM4XHU\PDMÈF\FKQDFHOX
UR]EXGRZÚPRĝOLZRĂFLM4XHU\
RPHWRG\SU]H]QDF]RQHGR
WZRU]HQLD
$E\Xĝ\ÊM4XHU\8,QDVWURQLH
ZSLHUZV]HMNROHMQRĂFLWU]HED
GRïÈF]\ÊGRQLHMVNU\SWM4XHU\
DGRSLHURSöěQLHMM4XHU\8,
• ZLGĝHWöZ QDSU]\NïDG
SDQHOHW\SXDFFRUGLQLNDUW\ • HIHNWöZ SRMDZLDQLHVLÚ
•
L]QLNDQLHHOHPHQWöZ LQWHUDNFML QDSU]\NïDG
IXQNFMDSU]HFLÈJDQLD
LXSXV]F]DQLD :W\F]NDM4XHU\8,QLHW\ONR
GRVWDUF]DJRWRZ\GRXĝ\FLDNRG
-DYD6FULSWDOHUöZQLHĝ]DZLHUD
]HVWDZPRW\ZöZSRPDJDMÈF\FK
ZRNUHĂOHQLXZ\JOÈGXZW\F]NL
QDVWURQLH
:HUVMHVNU\SWXM4XHU\8,VÈ
GRVWÚSQHZW\FKVDP\FKVHUZHUDFK&'1ZNWöU\FK]QDMG]LHV]
ELEOLRWHNÚM4XHU\-HĝHOL
SRWU]HEXMHV]W\ONRQLHZLHONLHJR
Z\FLQNDIXQNFMRQDOQRĂFLM4XHU\
8,PRĝHV]SREUDÊRGSRZLHGQLH
IUDJPHQW\VNU\SWX]ZLWU\Q\
http://jqueryui.com/']LÚNL
WHPXEÚG]LHV]PLDïPQLHMV]\
SOLN-DYD6FULSWFRVNUDFDF]DV
SRELHUDQLDVNU\SWX
SKŁADNIA
*G\GRïÈF]\V]VNU\SW\M4XHU\
LM4XHU\8,QDVWURQLHVNïDGQLD
LFKXĝ\FLDEÚG]LHSRGREQDMDN
ZSU]\SDGNX]Z\Nï\FKPHWRG
M4XHU\2]QDF]DWRĝHQDMSLHUZ
Z\ELHUDV]HOHPHQW\M4XHU\
DQDVWÚSQLHZ\ZRïXMHV]PHWRG\
]GHğQLRZDQHZHZW\F]FH
-DNPRĝHV]VLÚSU]HNRQDÊ
GRNXPHQWDFMDM4XHU\8,QLH
W\ONRZ\MDĂQLDMDNXĝ\ZDVLÚ
PHWRG\-DYD6FULSWLZïDĂFLZRĂFLDOHUöZQLHĝSRND]XMHMDN
WZRU]\ÊVWUXNWXUÚNRGX+70/
MHĂOLFKFHV]Z\NRU]\VWDÊZLHOH
ZLGĝHWöZLLQWHUDNFMLRIHURZDQ\FKSU]H]M4XHU\8,
-HĝHOLFKFHV]X]\VNDÊZLÚNV]È
NRQWUROÚQDGZ\JOÈGHPZW\F]HN
M4XHU\ZSU]HJOÈGDUFHPRĝHV]
Xĝ\ÊQDU]ÚG]LD7KHPH5ROOHU
NWöUH]DSHZQLD]QDF]QLH
GRNïDGQLHMV]ÈNRQWUROÚQDG
Z\JOÈGHPHOHPHQWöZ
API PANEL TYPU ACCORDION
W JQUERY UI
8WZRU]HQLHSDQHOXW\SX
DFFRUGLRQZM4XHU\8,MHVW
EDUG]RSURVWH0XVLV]MHG\QLH
ZLHG]LHÊ
• MDNSU]\JRWRZDÊVWUXNWXUÚ
•
•
NRGX+70/
NWöUHHOHPHQW\SRZLQQ\E\Ê
Xĝ\WHZVHOHNWRU]HM4XHU\
MDNLHQDOHĝ\Z\ZRï\ZDÊ
PHWRG\M4XHU\8,
1. :RPDZLDQ\PSU]\NïDG]LH
NRG+70/GODSDQHOXW\SX
DFFRUGLRQ]QDMGXMHVLÚZHOHPHQFLH<div> MHJRDWU\EXWid
PDZDUWRĂÊprizesNWöUD]RVWDQLH]DVWRVRZDQDZVNU\SFLH .DĝG\SDQHO]DZLHUD
c09/jqui-accordion.html
1
2
3
4
5
6
2. (OHPHQW<h3>GODQDJïöZND
NWöU\PRĝQDNOLNQÈÊ
HTML
ERG\!
<div id=”prizes”>
<h3>3LHUZV]DQDJURGD</h3>
<div><p>3LHUZV]DQDJURGDWR'-,</p></div>
<h3>Druga nagroda</h3>
<div><p>Druga nagroda to...</p></div>
<h3>7U]HFLDQDJURGD</h3>
<div><p>7U]HFLDQDJURGDWR</p></div>
</div>
<script src=”js/jquery-1.9.1.js”></script>
<script src=”js/1.10.3/jquery-ui.js”></script>
<script>
$(function() {
$(’#prizes’).accordion();
});
</script>
ERG\!
3. (OHPHQW<div>ZUD]]]DZDUWRĂFLÈGDQHJRSDQHOX
WYNIK
4. 3U]HG]QDF]QLNLHP]DP\NDMÈF\PERG\!]QDMGXMÈVLÚ
SROHFHQLDGRGDMÈFHVNU\SW\
M4XHU\LM4XHU\8,
5. 7U]HFLHOHPHQW<script>
]DZLHUDIXQNFMÚDQRQLPRZÈ
XUXFKDPLDQÈSRZF]\WDQLX
VWURQ\
6. :HZQÈWU]ZVSRPQLDQHM
IXQNFMLVWDQGDUGRZ\VHOHNWRU
M4XHU\Z\ELHUDHOHPHQW
<div>]DZLHUDMÈF\SDQHOW\SX
DFFRUGLRQ Xĝ\ZDMÈFZW\P
FHOXZDUWRĂFLDWU\EXWXid )XQNFMRQDOQRĂÊSDQHOXW\SX
DFFRUGLRQMHVWZ\ZRï\ZDQD]D
SRPRFÈPHWRG\.accordion()
GODZ\EUDQ\FKHOHPHQWöZ
API
1LHPXVLV]ZLHG]LHÊZMDNL
VSRVöEZW\F]NDM4XHU\Z\NRQXMHVZRMH]DGDQLHRLOHZLHV]
MDNÈWU]HEDSU]\JRWRZDÊ
VWUXNWXUÚGODNRGX+70/
MDNLHHOHPHQW\WU]HEDZ\EUDÊ
ZM4XHU\
MDNZ\ZRïDÊQRZÈPHWRGÚ
]GHğQLRZDQÈZHZW\F]FH
M4XHU\
•
•
•
8ZDJD:U]HF]\ZLVW\FK
ZLWU\QDFKLQWHUQHWRZ\FK
NRG-DYD6FULSWSRZLQLHQ
]QDMGRZDÊVLÚZRGG]LHOQ\P
SOLNXDE\]DFKRZDÊ]DVDGÚ
SRG]LDïXRGSRZLHG]LDOQRĂFL
:RPDZLDQ\PSU]\NïDG]LHNRG
-DYD6FULSWL+70/VÈZMHGQ\P
SOLNXFRPDQDFHOXSRND]DQLH
MDNQLHZLHONDLORĂÊSUDF\MHVW
NRQLHF]QDGRX]\VNDQLDHIHNWX
KARTY W JQUERY UI
HTML
1
2
3
4
FMTXLWDEVKWPO
<div id=”prizes”>
<ul>
OL!DKUHI ĵWDEĵ!I nagroda</a></li>
OL!DKUHI ĵWDEĵ!II nagroda</a></li>
OL!DKUHI ĵWDEĵ!III nagroda</a></li>
</ul>
GLYLG ĵWDEĵ!S!3LHUZV]DQDJURGDWR</p></div>
GLYLG ĵWDEĵ!S!Druga nagroda to...</p></div>
GLYLG ĵWDEĵ!S!7U]HFLDQDJURGDWR</p></div>
</div>
<script src=”js/jquery-1.9.1.js”></script>
<script src=”js/jquery-ui.js”></script>
<script>
$(function() {
ijSUL]HVij WDEV });
</script>
WYNIK
.DUW\WRNRQFHSFMDSRGREQD
GRSU]HGVWDZLRQHJRZF]HĂQLHM
SDQHOXW\SXDFFRUGLRQ
1. .DUW\]QDMGXMÈVLÚZHOHPHQFLH
<div>NWöU\EÚG]LHXĝ\W\ZVHOHNWRU]HM4XHU\-HGQDN]DZDUWRĂÊ
HOHPHQWXMHVWQLHFRLQQD
2. .DUW\VÈWZRU]RQHQDSRGVWDZLHQLHXSRU]ÈGNRZDQHMOLVW\
’ÈF]H]QDMGXMÈFHVLÚZHZQÈWU]
NDĝGHJRHOHPHQWXSURZDG]LGR
HOHPHQWX<div>]QDMGXMÈFHJRVLÚ
ZGDOV]HMF]ÚĂFLVWURQ\LSU]HFKRZXMÈFHJR]DZDUWRĂÊGDQHMNDUW\
3. =ZUöÊXZDJÚQDWRĝH
DWU\EXW\idHOHPHQWöZ<div>
PXV]ÈPLHÊZDUWRĂÊGRSDVRZDQÈ
GRZDUWRĂFLDWU\EXWXhrefNDUW
3RGRGDQLXVNU\SWöZM4XHU\
LM4XHU\8,QDVWURQLHPDP\
MHV]F]HWU]HFL]QDF]QLN<script>
ZUD]]IXQNFMÈDQRQLPRZÈ
Z\NRQ\ZDQÈSRZF]\WDQLX
PRGHOX'20
4. 6HOHNWRUM4XHU\Z\ELHUDHOHPHQWNWöUHJRZDUWRĂFLÈDWU\EXWX
id jest prizes WRMHVWHOHPHQW
]DZLHUDMÈF\NDUW\ 1DVWÚSQLHGOD
Z\EUDQHJRHOHPHQWXZ\ZRï\ZDQDMHVWPHWRGDWDEV 3U]HGVWDZLRQDVWUXNWXUD
MHVWSRZV]HFKQLHVWRVRZDQD
ZZLÚNV]RĂFLZW\F]HNM4XHU\
1. :F]\WDQLHELEOLRWHNLM4XHU\
2. :F]\WDQLHZW\F]NL
3. 8UXFKRPLHQLHIXQNFMLDQRQLPRZHMSRZF]\WDQLXVWURQ\
)XQNFMDDQRQLPRZDSR]ZDOD
QDZ\EöUHOHPHQWöZM4XHU\
LZ\ZRïDQLHGODQLFKPHWRG\
]GHğQLRZDQHMZHZW\F]FH
M4XHU\'RSUDZLGïRZHJRG]LDïDQLDSHZQHPHWRG\Z\PDJDMÈ
SRGDQLDSDUDPHWUöZ
:U]HF]\ZLVW\FKZLWU\QDFK
LQWHUQHWRZ\FKNRG-DYD6FULSWSRZLQLHQ]QDMGRZDÊVLÚZRGG]LHOQ\PSOLNXDE\]DFKRZDÊ]DVDGÚ
SRG]LDïXRGSRZLHG]LDOQRĂFL
:RPDZLDQ\PSU]\NïDG]LHNRG
-DYD6FULSWL+70/VÈZMHGQ\P
SOLNXFRPDQDFHOXSRND]DQLH
MDNQLHZLHONDLORĂÊSUDF\MHVW
NRQLHF]QDGRX]\VNDQLDHIHNWX
API FORMULARZ W JQUERY UI
:W\F]NDM4XHU\8,ZSURZDG]DZLHOH
NRQWUROHNIRUPXODU]DVLHFLRZHJRFR
XïDWZLDXĝ\WNRZQLNRPZSURZDG]DQLH
GDQ\FK:W\PSU]\NïDG]LH]DGHPRQVWURZDQRGZLH]QLFK
6XZDN7DNRQWURONDSR]ZDOD
Xĝ\WNRZQLNRZLQDZ\EöUZDUWRĂFL
OLF]ERZHM]DSRPRFÈVXZDNDNWöU\
PRĝQDSU]HFLÈJDÊ3RND]DQ\WXWDMVXZDNPDGZDXFKZ\W\FRXPRĝOLZLD
XVWDZLHQLH]DNUHVXPLÚG]\GZRPD
OLF]EDPL-DNPRĝHV]]REDF]\ÊSR
SUDZHMVWURQLHNRG+70/WZRU]ÈF\
VXZDNPDGZDNRPSRQHQW\
1. =Z\NïHSROHWHNVWRZHLHW\NLHWÚ
SU]H]QDF]RQHGRWUDG\F\MQHJR
ZSURZDG]HQLDZDUWRĂFLOLF]ERZHM
2. 'RGDWNRZ\HOHPHQW<div>
SU]HFKRZXMÈF\VXZDNZLGRF]Q\
QDVWURQLH
c09/jqui-form.html
1
2
3
HTML
ERG\!
<h2>=QDMGěSRNöMZKRWHOX</h2> ...
<p id=”price”>
ODEHOIRU ĵDPRXQWĵ!=DNUHVFHQODEHO!
<input type=”text” id=”amount” />
</p>
<div id=”price-range”></div>
<p>
ODEHOIRU ĵDUULYDOĵ!'DWDSU]\E\FLDODEHO!
<input type=”text” id=”arrival” />
</p>
LQSXWW\SH ĵVXEPLWĵYDOXH ĵ=QDMGěKRWHOĵ!
<script src=”js/jquery-1.9.1.js”></script>
<script src=”js/jquery-ui.js”></script>
<script src=”js/form-init.js”></script>
ERG\!
WYNIK
.RQWURONDZ\ERUXGDW\.RQWURONDWD
SR]ZDODQDZ\EöUGDW\]Z\VNDNXMÈFHJRNDOHQGDU]D']LÚNLWHPXPDV]
SHZQRĂÊĝHGDWDZ\EUDQDSU]H]
Xĝ\WNRZQLND]RVWDQLHZHZïDĂFLZ\P
IRUPDFLHSU]HND]DQDVNU\SWRZL
3. 7RMHVWSRSURVWXSROHWHNVWRZHĽ
QLHZ\PDJDĝDGQ\FKGRGDWNRZ\FK
]QDF]QLNöZ
3U]HG]QDF]QLNLHP]DP\NDMÈF\P
ERG\!]QDMGXMÈVLÚWU]\HOHPHQW\
<script>3LHUZV]\SRZRGXMHZF]\WDQLHVNU\SWXM4XHU\GUXJLVNU\SWX
M4XHU\8,QDWRPLDVWWU]HFLVNU\SWX
]DZLHUDMÈFHJRSROHFHQLDNRQğJXUXMÈFHGZLHZ\PLHQLRQHZF]HĂQLHM
NRQWURONLIRUPXODU]DVLHFLRZHJR
VSöMU]QDVWURQÚSRSUDZHM -HĝHOL
REVïXJD-DYD6FULSWQLHMHVWZïÈF]RQD
NRQWURONLWHZ\JOÈGDMÈMDN]Z\NïH
NRQWURONLIRUPXODU]DEH]XVSUDZQLHñ
GRGDZDQ\FKSU]H]M4XHU\
API
:LÚNV]RĂÊVNU\SWöZM4XHU\
]QDMGXMHVLÚZHZQÈWU]IXQNFML
.ready()OXEMHMVNUöWX
MDNSRND]DQRQDQDVWÚSQHM
VWURQLH :UR]G]LDOHGRZLHG]LDïHĂVLÚĝHJZDUDQWXMH
WRZ\NRQDQLHVNU\SWXGRSLHUR
SRZF]\WDQLXPRGHOX'20
-HĝHOLGRïÈF]\V]ZLÚFHMQLĝ
W\ONRMHGQÈZW\F]NÚM4XHU\
]NWöU\FKNDĝGDXĝ\ZDPHWRG\.ready()WRQLHPXVLV]
SRZWDU]DÊZ\PLHQLRQHM
PHWRG\.RGGODZV]\VWNLFK
ZW\F]HNPRĝQDXPLHĂFLÊ
ZMHGQHMPHWRG]LH.ready()
1. .RG-DYD6FULSW]QDMGXMHVLÚ
ZVNUöFLHGODPHWRG\M4XHU\
.ready()L]DZLHUDSROHFHQLD
SU]H]QDF]RQHGRNRQğJXUDFML
REXNRQWUROHNIRUPXODU]D
2. $E\]PLHQLÊSROHWHNVWRZH
ZNRQWURONÚZ\ERUXGDW\
WU]HEDMHG\QLHZ\EUDÊWRSROH
WHNVWRZHDQDVWÚSQLHZ\ZRïDÊ
PHWRGÚdatepicker()
3. %XIRURZDQLHGDQ\FK
ZHMĂFLRZ\FKZSRVWDFLFHQ\
4. 6XZDNXĝ\ZDQRWDFML
OLWHUDïXRELHNWXGRXVWDZLHQLD
ZïDĂFLZRĂFLPHWRG\.slider()
ĽSDWU]SRQLĝHM
c09/js/form-init.js
JAVASCRIPT
1
$(function() {
2
$(’#arrival’).datepicker();
3
var $amount = $(’#amount’);
var $range = $(’#price-range’);
4
5
=PLDQDSRODWHNVWRZHJRZNRQWURONÚ-48,GDWHSLFNHU
%XIRURZDQLHGDQ\FKZHMĂFLRZ\FK FHQD %XIRURZDQLHGLY!GOD]DNUHVXFHQ\
$(’#price-range’).slider({
=PLDQDSROD]DNUHVXFHQ\QDVXZDN
UDQJHWUXH-HĝHOLWR]DNUHVNRQLHF]QHVÈGZDXFKZ\W\
PLQ:DUWRĂÊPLQLPDOQD
PD[:DUWRĂÊPDNV\PDOQD
YDOXHV>@:DUWRĂFLXĝ\ZDQHSRGF]DVZF]\W\ZDQLDVWURQ\
VOLGHIXQFWLRQ HYHQWXL ^
3RXĝ\FLXVXZDNDQDOHĝ\XDNWXDOQLÊ
HOHPHQWDPRXQW
DPRXQWYDO XLYDOXHV>@ij]ïijXLYDOXHV>@ij]ïij }
});
$amount
8VWDZLHQLHZDUWRĂFLSRF]ÈWNRZ\FKGODHOHPHQWXDPRXQW
YDO UDQJHVOLGHU ijYDOXHVij ij]ïij
0QLHMV]DZDUWRĂÊ]DNUHVXDQDVWÚSQLHĴ]ïĵ
ijijUDQJHVOLGHU ijYDOXHVij ij]ïij :LÚNV]DZDUWRĂÊ]DNUHVXDQDVWÚSQLHĴ]ïĵ
});
5. 3RGF]DVZF]\W\ZDQLDIRUPXODU]DSROHWHNVWRZHZ\ĂZLHWOD
ZDUWRĂÊMDNRWHNVWDE\SRGDÊ
SRF]ÈWNRZ\]DNUHVVXZDND
:DUWRĂÊWHJRSRODWHNVWRZHJR
VNïDGDVLÚ]
a) PQLHMV]HMZDUWRĂFL]DNUHVX
SRNWöUHM]QDMGXMÈVLÚ]QDNL]ï
b) PLQXVDLZLÚNV]HMZDUWRĂFL
]DNUHVXSRNWöUHM]QDMGXMÈVLÚ
]QDNL]ï
6NU\SWQRVLQD]ZÚform-init.js
3URJUDPLĂFLEDUG]RF]ÚVWR
VWRVXMÈLQLWMDNRVNUöWRGLQLFMDFMLDRPDZLDQ\VNU\SWMHVW
Z\NRU]\VW\ZDQ\GRSRF]ÈWNRZHM
NRQğJXUDFMLIRUPXODU]D
.LHG\ZW\F]NDM4XHU\PDXVWDZLHQLDUöĝQLÈFHVLÚZWUDNFLHNDĝGHJR
Xĝ\FLDEDUG]RF]ÚVWRWDNLHXVWDZLHQLDVÈSU]HND]\ZDQHMDNROLWHUDï
RELHNWX0RĝHV]WR]REDF]\ÊZSU]\SDGNXPHWRG\.slider()NWöUD
RWU]\PXMHZLHOHSDUDPHWUöZ
:’$¥&,:2¥m OPIS
range
:DUWRĂÊERRORZVNDQDGDMÈFDVXZDNRZLGZDXFKZ\W\
DQLHSRMHG\QF]ÈZDUWRĂÊ min
:DUWRĂÊPLQLPDOQDGODVXZDND
max
:DUWRĂÊPDNV\PDOQDGODVXZDND
values
7DEOLFD]DZLHUDMÈFDGZLHZDUWRĂFLGRZVND]DQLDSRF]ÈWNRZHJR]DNUHVXVXZDNDSRSLHUZV]\PZF]\WDQLXVWURQ\
METODA
OPIS
slider()
8DNWXDOQLDSROHWHNVWRZHZ\ĂZLHWODMÈFHZDUWRĂFL
WHNVWRZHGODVXZDND RGSRZLHGQLHSU]\NïDG\]QDMG]LHV]
ZGRNXPHQWDFML API ANGULARJS
$QJXODU-6WRIUDPHZRUNXïDWZLDMÈF\WZRU]HQLHDSOLNDFMLVLHFLRZ\FK
:V]F]HJöOQRĂFLMHVWXĝ\WHF]Q\SRGF]DVWZRU]HQLDDSOLNDFMLNWöUH]DSLVXMÈ
RGF]\WXMÈXDNWXDOQLDMÈLXVXZDMÈGDQHZED]LHGDQ\FK]QDMGXMÈFHMVLÚ
ZVHUZHU]H
)UDPHZRUN$QJXODU-6RSDUWRQD
Z]RUFX09& DQJmodel-view-controllerF]\OLPRGHOZLGRNNRQWUROHU 7DNQDSUDZGÚMHVW
WRRGPLDQDZ]RUFD09&DQLH
ĂFLVï\09&$E\PöFXĝ\ZDÊ
$QJXODU-6ZSURMHNFLHQDMSLHUZ
WU]HEDGRGDÊVNU\SWangular.
jsGRVWURQ\NWöU\QDVWÚSQLH
XGRVWÚSQLDSHZQHQDU]ÚG]LD
SRGREQLHMDNZSU]\SDGNX
M4XHU\ WIDOK
:LGRN2]QDF]DWRFR
ZLG]LXĝ\WNRZQLN:DSOLNDFML
VLHFLRZHMMHVWWRVWURQD+70/
$QJXODU-6SR]ZDODQDWZRU]HQLHV]DEORQöZZUD]]PLHMVFDPL
SU]\JRWRZDQ\PLGODSHZQ\FK
URG]DMöZ]DZDUWRĂFL-HĝHOL
Xĝ\WNRZQLN]PLHQLZDUWRĂFL
ZZLGRNX]RVWDQÈZ\NRQDQH
SROHFHQLD (1)PDMÈFHQDFHOX
XDNWXDOQLHQLHPRGHOX
'ODW\FKVDP\FKGDQ\FK
PRJÈLVWQLHÊUöĝQHZLGRNLQD
SU]\NïDGRGG]LHOQHGODXĝ\WNRZQLNöZLDGPLQLVWUDWRUöZ
440 API
&HOHP]DVWRVRZDQLDZ]RUFD09&MHVWUR]G]LHOHQLHSRV]F]HJöOQ\FK
F]ÚĂFLDSOLNDFMLVLHFLRZHMWDNMDNSURJUDPLĂFLRGG]LHODMÈ]DZDUWRĂÊ
+70/ RGVSRVREXMHMSUH]HQWDFML &66 LVSRVREXG]LDïDQLD
-DYD6FULSW :WHMNVLÈĝFHQLHPDZ\VWDUF]DMÈFHMLORĂFLPLHMVFDQDGRNïDGQH
RPöZLHQLH$QJXODU-6DOHSU]HGVWDZLRQ\EÚG]LHSU]\NïDGVNU\SWX
]$3,DWDNĝHWDNLHNRQFHSFMHMDNSRGHMĂFLH09&Xĝ\FLHV]DEORQöZ
RUD]GRïÈF]DQLHGDQ\FK)UDPHZRUN$QJXODU-6RUD]GRNXPHQWDFMÚ
MHJRSHïQHJR$3,]QDMG]LHV]ZZLWU\QLHhttps://angularjs.org/
WidokMODEL
:LGRN0RGHO (kontroler).
.RQWUROHUMHVWRGSRZLHG]LDOQ\
]DXDNWXDOQLHQLHZLGRNXSRZ\VWÈSLHQLX]PLDQZPRGHOXRUD]
]DXDNWXDOQLHQLHPRGHOXJG\
Z\VWÈSLÈMDNLHNROZLHN]PLDQ\
ZZLGRNX=DGDQLH]DFKRZDQLD
V\QFKURQL]DFMLPLÚG]\ZLGRNLHP
LPRGHOHPQRVLQD]ZÚGRïÈF]DQLDGDQ\FK 1DSU]\NïDGXDNWXDOQLHQLHIRUPXODU]DVLHFLRZHJRZZLGRNX
SRZRGXMHRG]ZLHUFLHGOHQLHW\FK
]PLDQZZLGRNXRUD]XDNWXDOQLHQLHVHUZHUD
MODEL
0RGHO:DSOLNDFMLVLHFLRZHM
PRGHOMHVWQDMF]ÚĂFLHM
SU]HFKRZ\ZDQ\ZED]LH
GDQ\FKL]DU]ÈG]DQ\SU]H]NRG
G]LDïDMÈF\SRVWURQLHVHUZHUD
.RGWHQPRĝHX]\VNDÊGRVWÚS
LXDNWXDOQLDÊPRGHO
.LHG\GRMG]LHGRXDNWXDOQLHQLD
PRGHOXSRZLDGRPLHQLD
R]PLDQDFK VÈSU]HND]\ZDQHGRNRQWUROHUD7HLQIRUPDFMH
PRJÈE\ÊSU]HND]DQHWDNĝH
GRZLGRNXDE\]DSHZQLÊMHJR
DNWXDOQRĂÊ
UŻYCIE ANGULARJS
HTML
c09/angular-introduction.html
'2&7<3(KWPO!
<html ng-app>
<head> ...
VFULSWVUF ĵKWWSVDMD[JRRJOHDSLVFRPDMD[
OLEVDQJXODUMVDQJXODUPLQMVĵ!VFULSW!
</head>
ERG\!...
<form>
'REU!
<input ng-model=”name”W\SH ĵWH[Wĵ!EU!
:LDGRPRĂÊEU!
<textarea ng-model=”message”></textarea>
LQSXWW\SH ĵVXEPLWĵYDOXH ĵZ\ĂOLMZLDGRPRĂÊĵ!
</form> ...
<div class=”postcard”>
<div>{{ name }}</div>
<p>{{ message }}</p>
</div> ...
ERG\!
</html>
WYNIK
'RRWU]\PDQLDZ\PLHQLRQHJRHIHNWXQLHSRWU]HED
ĝDGQHJRGRGDWNRZHJRNRGX-DYD6FULSW1DWRPLDVW
X]\VNDQLHWHJRHIHNWXZM4XHU\Z\PDJDZ\NRQDQLDSRQLĝV]\FKF]WHUHFKNURNöZ
1. 8WZRU]HQLHSURFHGXU\REVïXJL]GDU]HñGOD
HOHPHQWöZIRUPXODU]DVLHFLRZHJR
:SU]HGVWDZLRQ\PSU]\NïDG]LHSRELHUDQDMHVW]DZDUWRĂÊHOHPHQWöZ
<input>L<textarea>DQDVWÚSQLH
]DSLV\ZDQDZLQQHMF]ÚĂFLVWURQ\
ZSOLNX+70/QRZHPLHMVFDVÈ
R]QDF]RQHSRGZöMQ\PLQDZLDVDPL
NODPURZ\PL 3U]HGHZV]\VWNLPWU]HEDGRGDÊ
VNU\SW$QJXODU-60RĝQDJR
SU]HFKRZ\ZDÊORNDOQLHOXEXĝ\Ê
ZHUVML]QDMGXMÈFHMVLÚZ*RRJOH
&'1'RSöNLQLHSR]QDV]OHSLHM
IUDPHZRUND$QJXODU-6VNU\SWWDNL
GRïÈF]DMZHOHPHQFLH<head>
=ZUöÊXZDJÚQDQRZH]QDF]QLNL
ZNRG]LH+70/6ÈWRDWU\EXW\
UR]SRF]\QDMÈFHVLÚRGng- VNUöW
R]QDF]DMÈF\$QJXODU-6 1RV]È
RQHQD]ZÚG\UHNW\Z3LHUZV]È
G\UHNW\ZÚ]QDMG]LHV]Z]QDF]QLNX
RWZLHUDMÈF\P<html>QDWRPLDVW
NROHMQHZHOHPHQWDFKIRUPXODU]D
:DUWRĂÊDWU\EXWXng-model
ZSRODFKWHNVWRZ\FKGRSDVRZXMH
ZDUWRĂFL]QDMGXMÈFHVLÚZSRGZöMQ\FKQDZLDVDFKNODPURZ\FK
$QJXODU-6automatycznieSRELHUD
]DZDUWRĂÊHOHPHQWöZIRUPXODU]D
LZVWDZLDMÈQDVWURQLHZPLHMVFX
ZNWöU\P]QDMGXMÈVLÚRGSRZLHGQLHQDZLDV\NODPURZH
2. 8ĝ\FLHSU]\JRWRZDQHMSURFHGXU\GRSREUDQLD
]DZDUWRĂFLHOHPHQWöZ
3. :\EöUZÚ]ïöZQRZ\FKHOHPHQWöZ
4. 8PLHV]F]HQLHGDQ\FK
QDVWURQLH
API 441
WIDOK I MODEL
:W\PSU]\NïDG]LH]ZUöÊXZDJÚQDSOLNangular-controller.js8ĝ\ZDRQIXQNFMLNRQVWUXNWRUD
GRXWZRU]HQLDRELHNWXRQD]ZLHBasketCtrl
2ELHNWWHQMHVWQD]\ZDQ\NRQWUROHUHP LQDF]HM
:LGRN0RGHO -DNRDUJXPHQWRWU]\PXMHLQQ\
RELHNW$scope:ïDĂFLZRĂFLRELHNWX$scopeVÈ
XVWDZLDQHZIXQNFMLNRQVWUXNWRUD
1. =ZUöÊXZDJÚĝHQD]ZDRELHNWX BasketCtrl)
MHVWGRSDVRZDQDGRZDUWRĂFLDWU\EXWX
ng-controllerZ]QDF]QLNXRWZLHUDMÈF\P
WDEOH!:RPDZLDQ\PSU]\NïDG]LHQLHNRU]\VWDP\]ED]\GDQ\FKDZLÚFNRQWUROHUEÚG]LHG]LDïDï
UöZQLHĝZFKDUDNWHU]HPRGHOXLZVSöïG]LHOLïGDQH
]ZLGRNLHP
3OLN+70/ ZLGRN SRELHUDGDQH]RELHNWX
BasketCtrlZNRQWUROHU]H-DYD6FULSW=DXZDĝĝH
ZNRG]LH+70/QD]Z\XMÚWHZSRGZöMQHQDZLDV\
NODPURZH QDSU]\NïDG{{ cost }}L{{ qty }})
VÈGRSDVRZDQHGRZïDĂFLZRĂFLRELHNWX$scope
Z-DYD6FULSW
3OLN+70/MHVWWHUD]QD]\ZDQ\V]DEORQHP
SRQLHZDĝZ\ĂZLHWOLGDQH]QDMGXMÈFHVLÚZRGSRZLDGDMÈF\PPXNRQWUROHU]H1D]Z\ZQDZLDVDFK
NODPURZ\FKVÈMDN]PLHQQHGRSDVRZXMÈFHGDQH
ZRELHNFLH*G\E\RELHNW-DYD6FULSWPLDïLQQH
ZDUWRĂFLWR]RVWDï\E\RQHZ\ĂZLHWORQHSU]H]NRG
ZSOLNX+70/
c09/angular-controller.html
1
2
3
'2&7<3(KWPO!
<html ng-app>
<head>
<title>-DYD6FULSW DPSM4XHU\UR]G]LDï</title>
VFULSWVUF ĵKWWSVDMD[JRRJOHDSLVFRPDQJXODUPLQMVĵ!VFULSW!
<script src=”js/angular-controller.js”></script>
<link rel=”stylesheet” href=”css/c09.css”>
</head>
ERG\!
WDEOHng-controller=”BasketCtrl”>
<tr><td>%LOHW</td><td>{{ description }}</td></tr>
<tr><td>.RV]W</td><td>${{ cost }}</td></tr>
<tr><td>,ORĂÊWG!WG!LQSXWW\SH ĵQXPEHUĵng-model=”qty”></td></tr>
<tr><td>:DUWRĂÊ</td><td>{{qty * cost | currency}}</td></tr>
WDEOH!...
ERG\!
</html>
c09/js/angular-controller.js
1
2
3
HTML
function BasketCtrl($scope) {
$scope.description = ’pojedynczy’;
VFRSHFRVW $scope.qty = 1;
}
442 API
JAVASCRIPT
ZAKRES I DOŁĄCZANIE
DANYCH
2. ,VWQLHMHUöZQLHĝPRĝOLZRĂÊREOLF]HQLDZDUWRĂFL
Z\UDĝHQLD]QDMGXMÈFHJRVLÚZHZQÈWU]QDZLDVöZ
NODPURZ\FK:NURNXZV]DEORQLHREOLF]RQD
]RVWDMHZDUWRĂÊF]ÚĂFLRZDNWöUDQDVWÚSQLHMHVW
IRUPDWRZDQDMDNRZDUWRĂÊSLHQLÚĝQD&RZLÚFHM
SRXDNWXDOQLHQLXNROXPQ\LORĂFLZIRUPXODU]X
PRGHOGDQ\FK ZRELHNFLH-DYD6FULSW ]RVWDQLH
XDNWXDOQLRQ\REOLF]RQÈZDUWRĂFLÈ6SUöEXM
]PLHQLÊZDUWRĂFLZSOLNX-DYD6FULSWDQDVWÚSQLH
RGĂZLHĝ\ÊGRNXPHQW+70/DE\]REDF]\ÊMDN
WRG]LDïD2WU]\PXMHV]SU]\NïDGWDN]ZDQHJR
GRïÈF]DQLDGDQ\FK'DQH]QDMGXMÈFHVLÚZSOLNX
-DYD6FULSWVÈGRïÈF]DQHGRGRNXPHQWX+70/LQD
RGZUöW-HĝHOLNRQWUROHUVLÚ]PLHQLZLGRN]RVWDQLH
XDNWXDOQLRQ\:SU]\SDGNX]PLDQ\ZLGRNX
QDVWÈSLXDNWXDOQLHQLHNRQWUROHUD
-DNPRĝHV]]REDF]\ÊIUDPHZRUN$QJXODU-6MHVW
V]F]HJöOQLHXĝ\WHF]Q\SRGF]DVZF]\W\ZDQLDGR
ZLGRNXGDQ\FKSRFKRG]ÈF\FK]RGG]LHOQHJRSOLNX
6WURQDPRĝHPLHÊZLHOHNRQWUROHUöZDNDĝG\
]QLFKZïDVQ\]DNUHV:NRG]LH+70/DWU\EXW
ng-controllerMHVWZ\NRU]\VW\ZDQ\ZHOHPHQFLH
GR]GHğQLRZDQLD]DNUHVXGDQHJRNRQWUROHUD
-HVWWRSRGREQHGRNRQFHSFML]DNUHVX]PLHQQHM
3RV]F]HJöOQHHOHPHQW\PRJÈPLHÊUöĝQHNRQWUROHU\ QDSU]\NïDGStoreCtrl NWöUHEÚGÈ]DZLHUDï\
ZïDĂFLZRĂÊRQD]ZLHdescription3RQLHZDĝ
]DNUHVGRW\F]\W\ONRGDQHJRHOHPHQWXZïDĂFLZRĂÊ
descriptionNRQWUROHUDPRĝHE\ÊXĝ\ZDQDW\ONR
Z]DNUHVLHWHJRNRQWUROHUD
WYNIK
API POBIERANIE DANYCH
Z ZEWNĄTRZ
:W\PSU]\NïDG]LHNRQWUROHU SOLN-DYD6FULSW SRELHUDPRGHO GDQH-621 ]SOLNX]QDMGXMÈFHJR
VLÚZVHUZHU]H:DSOLNDFMLVLHFLRZHMGDQH-621
]Z\NOHEÚGÈSRFKRG]Lï\]ED]\GDQ\FK'DQHWH
VïXĝÈGRXDNWXDOQLHQLDZLGRNXZ+70/
$E\SREUDÊGDQH$QJXODU-6Z\NRU]\VWXMHWDN
]ZDQÈXVïXJÚ $http:SOLNXangular.jsNRGXĝ\ZDRELHNWX;0/+WWS5HTXHVWGRZ\NRQDQLDĝÈGDñ
$MD[ SRGREQ\FKGRSRND]DQ\FKZUR]G]LDOH 1. ¥FLHĝNDGRVWÚSXGRSOLNX-621MHVWZ]JOÚGQD
GODV]DEORQX+70/DnieSOLNX-DYD6FULSW SRPLPRIDNWXMHVW]DSLVDQLDZNRG]LH-DYD6FULSW 3RGREQLHMDNPHWRGD.ajax()ZM4XHU\WDNĝHGOD
XVïXJL$httpLVWQLHMÈSHZQHVNUöW\XïDWZLDMÈFH
Z\NRQ\ZDQLHĝÈGDñ:FHOXSREUDQLDGDQ\FK
Z\NRU]\VW\ZDQHVÈPHWRG\get()post()Ljsonp()
GRXVXQLÚFLDGDQ\FKVïXĝ\PHWRGDdelete()DGR
XWZRU]HQLDQRZ\FKUHNRUGöZPHWRGDput():RPDZLDQ\PSU]\NïDG]LHXĝ\ZDQDMHVWPHWRGDget()
c09/angular-external-data.html
5
WDEOHQJFRQWUROOHU ĵ7LPHWDEOH&WUOĵ>
<tr><th>godzina</th><th>W\WXï</th><th>opis</th></tr>
<tr ng-repeat=”session in sessions”>
<td>{{ session.time }}</td>
<td>{{ session.title }}</td>
<td>{{ session.detail }}</td>
</tr>
WDEOH!
c09/js/angular-external-data.js
1
2
3
JAVASCRIPT
IXQFWLRQ7LPHWDEOH&WUO VFRSHKWWS ^
$http.get(’js/items.json’)
.success(function(data) { $scope.sessions = data.sessions; })
.error(function(data) { console.log(’error’) });
:\VWÈSLïEïÈGZDUWRZ\ĂZLHWOLÊXĝ\WNRZQLNRZLSU]\MD]Q\NRPXQLNDW
}
c09/js/items.json
4
HTML
JAVASCRIPT
{
ĴVHVVLRQVĵ>
^ĴWLPHĵĴĵĴWLWOHĵĴ:SURZDG]HQLHGRPRGHORZDQLD'ĵĴGHWDLOĵĴ3U]\MGěĵ`
^ĴWLPHĵĴĵĴWLWOHĵĴ&LUFXLW+DFNLQJĵĴGHWDLOĵĴ:(OHFWUR7HQWĵ`
^ĴWLPHĵĴĵĴWLWOHĵĴ=DEDZ\]$UGXLQRĵĴGHWDLOĵĴ3U]HNRQDMVLÚĵ`
]
}
444 API
ITERACJA PRZEZ WYNIK
2. -HĝHOLĝÈGDQLH]SRZRG]HQLHPSRELHU]HGDQH
WR]RVWDQLHZ\ZRïDQDIXQNFMDsuccess():WDNLP
SU]\SDGNXR]QDF]DWRĝHRELHNW$scopeRWU]\PD
GDQHSRFKRG]ÈFH]RELHNWXJSON3R]ZDODWR
V]DEORQRZLZ\ĂZLHWOLÊGDQH
3. -HĝHOLĝÈGDQLH]DNRñF]\VLÚQLHSRZRG]HQLHP
]RVWDQLHZ\ZRïDQDIXQNFMDerror()-HM]DGDQLHPMHVWZ\ĂZLHWOHQLHNRPXQLNDWXREïÚG]LH
:RPDZLDQ\PSU]\NïDG]LHIXQNFMDWD SR]QDV]MÈ
ZUR]G]LDOHZSRGUR]G]LDOHķ1DU]ÚG]LDSURJUDPLVW\F]QHZSU]HJOÈGDUNDFKLNRQVROD-DYD6FULSWĵ LPSOLNXMHXPLHV]F]HQLHNRPXQLNDWXZNRQVROL
4. 'DQH-621]DZLHUDMÈZLHOHRELHNWöZZ\ĂZLHWODQ\FKQDVWURQLH=ZUöÊXZDJÚQDEUDNSÚWOL
-DYD6FULSWZNRQWUROHU]H=DPLDVWWHJRLWHUDFMD
SU]H]RELHNW\MHVWSU]HSURZDG]DQDZV]DEORQLH
+70/ ZLGRNX 5. '\UHNW\ZDng-repeatZ]QDF]QLNXRWZLHUDMÈF\P<tr>ZVND]XMHĝHZLHUV]WDEHOLSRZLQLHQ
G]LDïDÊMDNSÚWOD2]QDF]DWRLWHUDFMÚSU]H]ZV]\VWNLHRELHNW\WDEOLF\sessionsRUD]XWZRU]HQLH
QRZHJRZLHUV]DWDEHOLGODNDĝGHJR]QLFK
:NRG]LH+70/ZDUWRĂFLÈG\UHNW\Z\ng-repeat
MHVWsession in sessions:
• sessionsGRSDVRZXMHGDQH-621RGSRZLDGD
•
-HĝHOLDWU\EXWng-repeatXĝ\ZD]XSHïQLHLQQ\FK
QD]ZQLĝsessionWRZDUWRĂÊZQDZLDVDFKNODPURZ\FKZNRG]LH+70/EÚG]LHPXVLDïDE\Ê]PLHQLRQDDE\RG]ZLHUFLHGOLÊWÚQD]ZÚ-HĂOLPDP\
QDSU]\NïDGSROHFHQLHlecture in sessions
NRGZQDZLDVDFKNODPURZ\FKSRZLQLHQPLHÊ
QDVWÚSXMÈFÈSRVWDÊ
{{ lecture.time }}, {{ lecture.title }} itd.
7RW\ONREDUG]RNUöWNLHZSURZDG]HQLHGR$QJXODU-6DOHGHPRQVWUXMHSHZQHSRSXODUQHWHFKQLNL
VWRVRZDQHSRGF]DVXĝ\FLD-DYD6FULSWGRWZRU]HQLD
DSOLNDFMLLQWHUQHWRZ\FK
• Z\NRU]\VWDQLHV]DEORQöZSRELHUDMÈF\FK
•
•
WYNIK
QD]ZLHRELHNWX
sessionWRLGHQW\ğNDWRUZ\NRU]\VW\ZDQ\
ZV]DEORQLHGRZVND]DQLDQD]Z\SRMHG\QF]HJR
RELHNWXZRELHNFLHsessions.
]DZDUWRĂÊ]NRGX-DYD6FULSWLXDNWXDOQLDMÈF\FK
VWURQÚ+70/
Xĝ\FLHIUDPHZRUNöZRSDUW\FKQDZ]RUFX
09&LSU]H]QDF]RQ\FKGRWZRU]HQLDDSOLNDFML
VLHFLRZ\FK
Xĝ\FLHELEOLRWHNFRSR]ZDODSURJUDPLVWRP
XQLNQÈÊNRQLHF]QRĂFLWZRU]HQLDGXĝHMLORĂFL
NRGX
:LÚFHMLQIRUPDFMLQDWHPDW
IUDPHZRUND$QJXODU-6]QDMG]LHV]
ZZLWU\QLHhttps://angularjs.org/.
3RSXODUQÈDOWHUQDW\ZÈGOD
$QJXODU-6MHVW%DFNERQH
http://backbonejs.org/.
API 445
API PLATFORM
:LHOHGXĝ\FKZLWU\QLQWHUQHWRZ\FKXGRVWÚSQLD$3,SR]ZDODMÈFHQDX]\VNDQLH
GRVWÚSXGRGDQ\FKZLWU\Q\LLFKXDNWXDOQLHQLH'RW\F]\WRPLÚG]\LQQ\PL
VHUZLVöZ)DFHERRN*RRJOHL7ZLWWHU
CO MOŻNA ZROBIĆ?
JAK UZYSKAĆ DOSTĘP?
SKŁADNIA
.DĝGDZLWU\QDRIHUXMHLQQ\
]HVWDZPRĝOLZRĂFLQDSU]\NïDG
:LQWHUQHFLHPRĝHV]X]\VNDÊ
GRVWÚSGRZLHOX$3,SODWIRUP
SU]H]XPLHV]F]HQLHQDVWURQLH
VNU\SWöZGRVWDUF]DQ\FKSU]H]
WZöUFöZSODWIRUP\7DNLVNU\SW
]Z\NOHWZRU]\RELHNW SRGREQLH
MDNVNU\SWM4XHU\GRGDMHRELHNW
jQuery 1RZ\RELHNWRIHUXMH
PHWRG\LZïDĂFLZRĂFLNWöUH
PRĝQDZ\NRU]\VWDÊZFHOX
X]\VNDQLDGRVWÚSXGRGDQ\FK
QDSODWIRUPLHDF]DVHPWDNĝH
GRLFKXDNWXDOQLHQLD
6NïDGQLDVWRVRZDQDZ$3,
]DOHĝ\RGSODWIRUP\=UHJXï\
MHVWXGRNXPHQWRZDQDWDEHODPL
RELHNWöZPHWRGLZïDĂFLZRĂFL
SRGREQLHMDNQDSRF]ÈWNXWHJR
UR]G]LDïX&]DVDPLGRVWDUF]DQH
VÈUöZQLHĝSU]\NïDGRZH
IUDJPHQW\NRGXNWöUHGHPRQVWUXMÈ]DGDQLDZ\NRQ\ZDQH]D
SRPRFÈGDQHJR$3, SRGREQLH
MDNZF]HĂQLHMSRND]DQRZW\P
UR]G]LDOH • )DFHERRNXGRVWÚSQLDWDNLH
•
•
IXQNFMHMDNXPRĝOLZLHQLH
Xĝ\WNRZQLNRPSROXELHQLDZLWU\Q\GRGDZDQLHNRPHQWDU]\
RUD]SURZDG]HQLHG\VNXVML
ZZLGĝHFLH)DFHERRNDQDWHM
ZLWU\QLH
0DS\*RRJOHSR]ZDODMÈXĝ\WNRZQLNRPQDXPLHV]F]DQLH
ZLHOXUöĝQ\FKURG]DMöZPDS
QDLFKZïDVQ\FKVWURQDFK
7ZLWWHUSR]ZDODXĝ\WNRZQLNRPQDZ\ĂZLHWODQLH
QDMQRZV]\FKNRPXQLNDWöZ
WZHHWöZ QDLFKZïDVQ\FK
VWURQDFKOXEWHĝQDZ\V\ïDQLH
QRZ\FKNRPXQLNDWöZ
3U]H]XGRVWÚSQLHQLHIXQNFMRQDOQRĂFLZïDVQ\FKSODWIRUP
WZRU]ÈFHMHğUP\UHNODPXMÈ
VZRMHZLWU\Q\DWDNĝHVWDUDMÈ
VLÚSU]\FLÈJDÊXĝ\WNRZQLNöZ
7R]NROHLR]QDF]DZ]URVW
DNW\ZQRĂFLZZLWU\QLHFR
SU]HNïDGDVLÚQDZLÚNV]H]\VNL
]MHMIXQNFMRQRZDQLD
0XVLV]PLHÊĂZLDGRPRĂÊĝH
ğUP\PRJÈ]PLHQLÊVSRVöE
X]\VNDQLDGRVWÚSXGR$3,OXE
MHJRPRĝOLZRĂFL
446 API
:LÚNV]RĂÊZLWU\QXGRVWÚSQLDMÈF\FK$3,RIHUXMHWDNĝH
GRNXPHQWDFMÚREMDĂQLDMÈFÈ
]SURVW\PLSU]\NïDGDPL Xĝ\FLH
RELHNWöZPHWRGLZïDĂFLZRĂFL
:SU]\SDGNXZLÚNV]\FKZLWU\Q
F]DVHPGRVWÚSQHVÈVWURQ\
]NWöU\FKPRĝHV]VNRSLRZDÊ
NRGDQDVWÚSQLHZNOHLÊJRQD
VZRLFKVWURQDFKQDZHWEH]
NRQLHF]QRĂFLDQDOL]RZDQLD$3,
)DFHERRN*RRJOHL7ZLWWHU
ZSURZDG]Lï\]PLDQ\ZVSRVREDFKGRVWÚSXGR$3,orazMHJR
Xĝ\FLD
$3,QLHNWöU\FKSODWIRUPMHVW
RIHURZDQHZZLHOXMÚ]\NDFKFR
SR]ZDODQDSUDFÚ]QLP]Z\NRU]\VWDQLHPMÚ]\NDG]LDïDMÈFHJR
SRVWURQLHVHUZHUD QDSU]\NïDG
3+3OXE& DWDNĝHMÚ]\ND
SRVWURQLHNOLHQWD QDSU]\NïDG
-DYD6FULSW :SR]RVWDïHMF]ÚĂFLUR]G]LDïX
VNRQFHQWUXMHP\VLÚQD$3,0DS
*RRJOH%ÚG]LHWRSU]\NïDGWHJR
FRPRĝQD]URELÊ]Z\NRU]\VWDQLHP$3,WHMSODWIRUP\
-HĝHOLSUDFXMHV]QDGZLWU\QÈGOD
NOLHQWDXSHZQLMVLÚĝHPDRQ
ĂZLDGRPRĂÊPRĝOLZRĂFLZ\VWÈSLHQLD]PLDQZ$3, FRPRĝH
SöěQLHMZ\PDJDÊZSURZDG]HQLD
]PLDQZZLWU\QLHQLH]EÚGQ\FK
GRNRQW\QXRZDQLDNRU]\VWDQLD
]GDQHJR$3, API MAP GOOGLE
2EHFQLHMHGQ\P]QDMSRSXODUQLHMV]\FK$3,ZLQWHUQHFLHMHVW$3,0DS*RRJOH
NWöUHSR]ZDODQDXPLHV]F]DQLHPDSQDZïDVQ\FKVWURQDFK
NA CZYM POLEGA
DZIAŁANIE API MAP
GOOGLE?
$3,0DS*RRJOHZ-DYD6FULSW
SR]ZDODQDPQDZ\ĂZLHWODQLH
PDS]WHJRVHUZLVXQDQDV]\FK
VWURQDFKLQWHUQHWRZ\FK
3RQDGWRPRĝHP\GRVWRVRZDÊ
GRVZRLFKSRWU]HEZ\JOÈGPDS
RUD]Z\ĂZLHWODQHSU]H]QLH
LQIRUPDFMH
:DUWR]DSR]QDÊVLÚ]GRNXPHQWDFMÈ$3,0DS*RRJOHZNWöUHM
]QDMGXMÈVLÚWDNĝHSU]\NïDG\
'RNXPHQWDFMDSRND]XMHUöĝQH
PRĝOLZRĂFLRIHURZDQHSU]H]
$3,=QDMG]LHV]MÈQDVWURQLH
https://developers.google.com/
maps/
JAKI UZYSKASZ EFEKT?
KLUCZ API
2PöZLP\WXW\ONRNLOND
SU]\NïDGöZIXQNFML$3,0DS*RRJOHNWöUHSRZLQQ\&LSRPöF
ZUR]SRF]ÚFLXSUDF\
:SU]\SDGNXSHZQ\FK$3,
SURJUDPLVWDPXVLX]\VNDÊNOXF]
SR]ZDODMÈF\QDSRELHUDQLH
GDQ\FK]VHUZHUD.OXF]$3,WR
FLÈJOLWHULF\IUXQLNDOQLHLGHQW\ğNXMÈF\SURJUDPLVWÚZZLWU\QLH
ZïDĂFLFLHOD$3,:WHQVSRVöE
ZïDĂFLFLHO$3,]\VNXMHPRĝOLZRĂÊPRQLWRURZDQLDSR]LRPX
LFHOXXĝ\FLDWHJR$3,
1DMSLHUZ]REDF]\V]MDNGRGDÊ
QDVWURQLHLQWHUQHWRZHMPDSÚ
1DVWÚSQLHGRZLHV]VLÚMDN
]PLHQLDÊNRQWURONL1DNRQLHF
GRGDP\]QDF]QLNLQDPDSLH
L]PLHQLP\LFKNRORU\
*G\SRZVWDZDïDWDNVLÈĝND
VHUZLV*RRJOHSR]ZDODï
ZLWU\QRPQDZ\ZRï\ZDQLH$3,
PDSGRUD]\QDGREÚ
EH]NRQLHF]QRĂFLX]\VNLZDQLD
NOXF]D$3,:ïDĂFLFLHOHZLWU\Q
NWöUHZ\NRQXMÈZLÚNV]ÈOLF]EÚ
Z\ZRïDñPXV]ÈX]\VNDÊNOXF]
$3,L]DSïDFLÊ]DXVïXJÚ
-HĝHOLSU]\JRWRZXMHV]ZLWU\QÚ
NRPHUF\MQÈOXEPDSDVWDQRZL
ZDĝQ\VNïDGQLNDSOLNDFMLGREUÈ
SUDNW\NÈEÚG]LHXĝ\FLHNOXF]D
$3,SRQLHZDĝ
PRĝHV]SU]HNRQDÊVLÚLOH
UD]\ZLWU\QDĝÈGDïD$3,
*RRJOHPRĝHVLÚ]7REÈ
VNRQWDNWRZDÊJG\]PLDQLH
XOHJQÈZDUXQNLXĝ\FLD$3,
OXEWU]HEDEÚG]LHZQLHĂÊ
RSïDWÚ]DNRU]\VWDQLH
]XVïXJL
$E\X]\VNDÊNOXF]$3,SU]HMGě
QDVWURQÚhttps://cloud.google.
com/console
•
•
API 447
PODSTAWOWE USTAWIENIA
MAPY
*G\GRïÈF]\V]GRZLWU\Q\VNU\SW0DS*RRJOHEÚG]LHV]PöJïNRU]\VWDÊ
QDQLHM]RELHNWXmapsNWöU\XPRĝOLZLDZ\ĂZLHWODQLHPDS
UTWORZENIE MAPY
OPCJE MAPY
2ELHNWmapsMHVWSU]HFKRZ\ZDQ\ZRELHNFLHRQD
]ZLHgoogleNWöU\WZRU]\]DNUHVGODZV]\VWNLFK
RELHNWöZ*RRJOH
$E\GRGDÊPDSÚQDVWURQLHQDOHĝ\XWZRU]\ÊQRZ\
RELHNWPDS\]DSRPRFÈNRQVWUXNWRUDMap()NWöU\
MHVWF]ÚĂFLÈRELHNWXmapsLPDGZDSDUDPHWU\
HOHPHQWZNWöU\PPD]RVWDÊZ\ĂZLHWORQD
PDSD
OLWHUDïRELHNWX]DZLHUDMÈF\]HVWDZRSFMLPDS\
NWöUHNRQWUROXMÈVSRVöEMHMZ\ĂZLHWODQLD
8VWDZLDQLDZ\JOÈGXPDS\VÈSU]HFKRZ\ZDQH
ZHZQÈWU]LQQHJRRELHNWX-DYD6FULSWĽRQD]ZLH
mapOptions2ELHNWWHQMHVWWZRU]RQ\SU]\Xĝ\FLX
QRWDFMLOLWHUDïXRELHNWXMHV]F]HSU]HGZ\ZRïDQLHP
NRQVWUXNWRUDMap():NRG]LH-DYD6FULSWSU]HG
VWDZLRQ\PQDVWURQLHSRSUDZHMPRĝQD]REDF]\Ê
ĝHRELHNWmapOptionsZ\NRU]\VWXMHWU]\HOHPHQW\
LQIRUPDFML
ZVSöïU]ÚGQHJHRJUDğF]QHĂURGNDPDS\
SR]LRPSU]\EOLĝHQLDPDS\
URG]DMZ\ĂZLHWODQHMPDS\
3R]LRPSU]\EOLĝHQLDMHVW]Z\NOHXVWDZLDQ\
]Z\NRU]\VWDQLHPOLF]E\]]DNUHVXRG FDïD
=LHPLD GR ZQLHNWöU\FKPLDVWDFKPRĝHE\Ê
ZLÚNV]\ 2EUD]\WZRU]ÈFHPDSÚVÈQD]\ZDQHNDIHONDPL
'RVWÚSQHVÈF]WHU\URG]DMHPDS
Poziom przybliżenia: 0
Poziom przybliżenia: 4
Mapa drogowa
Mapa satelitarna
Poziom przybliżenia: 8
Poziom przybliżenia: 16
Mapa hybrydowa
Mapa terenu
•
•
448 API
•
•
•
PROSTY PRZYKŁAD UŻYCIA
MAP GOOGLE
c09/google-map.html
HTML
<div id=”map”></div>
<script src=”js/google-map.js”></script>
ERG\!
c09/js/google-map.js
JAVASCRIPT
3
4
function init() {
var mapOptions = {
.RQğJXUDFMDRSFMLPDS\
FHQWHUQHZJRRJOHPDSV/DW/QJ PDS7\SH,GJRRJOHPDSV0DS7\SH,G52$'0$3
]RRP
};
var venueMap;
0HWRGD0DS SRZRGXMHZ\JHQHURZDQLHPDS\
YHQXH0DS QHZJRRJOHPDSV0DS GRFXPHQWJHW(OHPHQW%\,G ijPDSij PDS2SWLRQV }
2
function loadScript() {
var script = document.createElement(’script’); 8WZRU]HQLHHOHPHQWXVFULSW!
VFULSWVUF ijKWWSPDSVJRRJOHDSLVFRPPDSVDSLMV"
VHQVRU IDOVH FDOOEDFN LQLWLDOL]Hij
GRFXPHQWERG\DSSHQG&KLOG VFULSW 8PLHV]F]HQLHHOHPHQWXQDVWURQLH
}
1
ZLQGRZRQORDG ORDG6FULSW:\ZRïDQLH]GDU]HQLDRQORDG
WYNIK
1. 5R]SRF]\QDP\RGNRñFDVNU\SWXJG\VWURQD]RVWDïD
ZF]\WDQDD]GDU]HQLHonloadZ\ZRïDïRIXQNFMÚ
loadScript()
2. )XQNFMDloadScript()WZRU]\HOHPHQW<script>
SU]H]QDF]RQ\GRZF]\WDQLD$3,0DS*RRJOH
3RZF]\WDQLX$3,QDVWÚSXMHZ\ZRïDQLHPHWRG\init()
ZFHOXLQLFMDFMLPDS\
3. 0HWRGDinit()ZF]\WXMHPDSÚQDVWURQLH+70/
1DSRF]ÈWNXWZRU]\RELHNWmapOptionsZUD]]WU]HPD
ZïDĂFLZRĂFLDPL
4. 1DVWÚSQLHXĝ\ZDNRQVWUXNWRUDMap()GRXWZRU]HQLD
PDS\LZ\ĂZLHWOHQLDMHMQDVWURQLH.RQVWUXNWRUSRELHUD
GZDSDUDPHWU\
HOHPHQWZHZQÈWU]NWöUHJRPD]RVWDÊZ\ĂZLHWORQD
PDSD
RELHNWmapOptions
•
•
API 449
ZMIANA KONTROLEK
WIDOCZNOŚĆ KONTROLEK MAPY
POŁOŻENIE KONTROLEK MAPY
TOP_LEFT
2
4
TOP_CENTER
TOP_RIGHT
LEFT_TOP
RIGHT_TOP
CENTER_LEFT
CENTER_RIGHT
LEFT_BOTTOM
RIGHT_BOTTOM
5
1
3
BOTTOM_LEFT
BOTTOM_CENTER
BOTTOM_RIGHT
:FHOXZ\ĂZLHWOHQLDOXEXNU\FLDNRQWURONLQDOHĝ\Xĝ\ÊMHMQD]Z\RUD]ZDUWRĂFLtrue Z\ĂZLHWOHQLH OXE
false XNU\FLH :SUDZG]LH0DS\*RRJOHSUöEXMÈXQLNQÈÊQDNïDGDQLDVLÚNRQWUROHNDOHLWDNZDUWR
]DFKRZDÊRVWURĝQRĂÊSRGF]DVLFKUR]PLHV]F]DQLD
.21752/.$
OPIS
:$572¥m'20<¥/1$
zoomControl (1)
8VWDZLDSR]LRPSU]\EOLĝHQLDGODPDS\'RWHJR
VïXĝÈVXZDN GXĝHPDS\ OXESU]\FLVNL+L–
PDïHPDS\ :ïÈF]RQD
panControl (2)
3R]ZDODQDSDQRUDPRZDQLHPDS\
:ïÈF]RQDZXU]ÈG]HQLDFK
QLHZ\SRVDĝRQ\FKZHNUDQ
GRW\NRZ\
scaleControl (3)
:\ĂZLHWODVNDOÚPDS\
:\ïÈF]RQD
PDS7\SH&RQWURO 3R]ZDODQD]PLDQÚURG]DMXPDS\ QDSU]\NïDG
52$'0$3OXE6$7(//,7( :ïÈF]RQD
VWUHHW9LHZ&RQWURO ,NRQDSU]HGVWDZLDMÈFDĝöïWÈSRVWDÊNWöUDPRĝH
E\ÊSU]HFLÈJDQDLXSXV]F]DQDQDVWURQLHZFHOX
SU]HMĂFLDGRWU\EX6WUHHW9LHZ
:ïÈF]RQD
rotateControl
5RWDFMDPDSGODNWöU\FKLVWQLHMÈGRGDWNRZH
]GMÚFLD QLHSRND]DQR :ïÈF]RQDJG\LVWQLHMHWDND
PRĝOLZRĂÊ
RYHUYLHZ0DS&RQWURO
0LQLDWXUDSRND]XMÈFDGXĝ\REV]DU1DZLÚNV]\P
REV]DU]HRG]ZLHUFLHGODPLHMVFHSRND]\ZDQH
SU]H]ELHĝÈFÈPDSÚ QLHSRND]DQR :ïÈF]RQDJG\PDSDMHVW
VFKRZDQDQDSU]\NïDGZWU\ELH
6WUHHW9LHZ
API
MAPA GOOGLE Z WŁASNYMI
KONTROLKAMI
WYGLĄD KONTROLEK
POŁOŻENIE KONTROLKI
:FHOX]PLDQ\Z\JOÈGXLSRïRĝHQLDNRQWUROHN
PDS\QDOHĝ\GRGDÊRELHNWmapOptions
1. $E\SRND]DÊOXEXNU\ÊNRQWURONÚZ\NRU]\VWXMH
VLÚQD]ZÚNRQWURONLRUD]SU]\SLVDQÈMHMZDUWRĂÊ
ERRORZVNÈ trueZ\ĂZLHWODNRQWURONÚfalse
XNU\ZDMÈ 2. .DĝGDNRQWURONDPDZïDVQ\RELHNWRSFML
Xĝ\ZDQ\GR]GHğQLRZDQLDMHMVW\OXLSRïRĝHQLD
1D]ZDRELHNWXMHVWWZRU]RQDSU]H]GRGDQLH
VïRZDOptionsSRQD]ZLHNRQWURONLQDSU]\NïDG
zoomControlOptions6W\OH]RVWDQÈRPöZLRQH
SRQLĝHM'LDJUDPSRND]DQ\QDVWURQLHSR
OHZHMZVND]XMHRSFMHGRVWÚSQHGODZïDĂFLZRĂFL
position
c09/js/google-map-controls.js
JAVASCRIPT
var mapOptions = {
]RRP
FHQWHUQHZJRRJOHPDSV/DW/QJ PDS7\SH,GJRRJOHPDSV0DS7\SH,G52$'0$3
1
1
3
2
1
3
2
1
2
1
1
SDQ&RQWUROIDOVH
]RRP&RQWUROWUXH
]RRP&RQWURO2SWLRQV^
VW\OHJRRJOHPDSV=RRP&RQWURO6W\OH60$//
SRVLWLRQJRRJOHPDSV&RQWURO3RVLWLRQ723B5,*+7
},
PDS7\SH&RQWUROWUXH
PDS7\SH&RQWURO2SWLRQV^
VW\OHJRRJOHPDSV0DS7\SH&RQWURO6W\OH'523'2:1B0(18
SRVLWLRQJRRJOHPDSV&RQWURO3RVLWLRQ723B/()7
},
VFDOH&RQWUROWUXH
VFDOH&RQWURO2SWLRQV^
SRVLWLRQJRRJOHPDSV&RQWURO3RVLWLRQ723B&(17(5
},
VWUHHW9LHZ&RQWUROIDOVH
RYHUYLHZ0DS&RQWUROIDOVH
};
STYLE KONTROLEK MAPY
3. :\JOÈGSR]LRPXSU]\EOLĝHQLDLURG]DMNRQWUROHNPDS\PRĝQD]PLHQLÊ]DSRPRFÈQDVWÚSXMÈF\FKRSFML
zoomControlStyle
60$//ĽPDïHSU]\FLVNL+L–
/$5*(ĽVXZDNSLRQRZ\
'()$8/7ĽXVWDZLHQLDGRP\ĂOQHGODGDQHJR
XU]ÈG]HQLD
0DS7\SH&RQWURO6W\OH
+25,=217$/B%$5ĽSU]\FLVNLRERNVLHELH
'523'2:1B0(18ĽUR]ZLMDQDOLVWDRSFML
'()$8/7ĽXVWDZLHQLDGRP\ĂOQHGODGDQHJR
XU]ÈG]HQLD
API NADAWANIE STYLU MAPIE
$E\QDGDÊVW\OPDSLHWU]HEDSRGDÊWU]\URG]DMH
LQIRUPDFML
IHDWXUH7\SHVĽHOHPHQWPDS\NWöUHPX
FKFHV]QDGDÊVW\OQDSU]\NïDGXOLFHSDUNL
GURJLZRGQHWUDQVSRUWSXEOLF]Q\
HOHPHQW7\SHVĽNRQNUHWQDFHFKDHOHPHQWX
NWöUDPD]RVWDÊ]PRG\ğNRZDQDQDSU]\NïDG
MHJRJHRPHWULD NV]WDïW\ OXEHW\NLHW\
stylersZïDĂFLZRĂFLSR]ZDODMÈFHQDGRVWRVRZDQLHNRORUöZLZLGRF]QRĂFLHOHPHQWöZQD
PDSLH
•
•
•
:ïDĂFLZRĂÊstylesZRELHNFLHmapOptions
SR]ZDODQDXVWDZLHQLHVW\OXPDS\:DUWRĂFLÈMHVW
WDEOLFDRELHNWöZDSRV]F]HJöOQHRELHNW\ZSï\ZDMÈ
QDIXQNFMHPDS\
c09/js/google-map-styled.js
:ïDĂFLZRĂÊstylersMHVWWDEOLFÈRELHNWöZ
LSR]ZDODQD]PLDQÚNRORUöZPDS\MDNRFDïRĂFL
ZïDĂFLZRĂÊhue]PLHQLDNRORUMHJRZDUWRĂÊMHVW
SRGDZDQDZSRVWDFLOLF]E\V]HVQDVWNRZHM
ZïDĂFLZRĂFLlighneessLsaturationPRJÈ
SU]\MPRZDÊZDUWRĂFLRG-100GR100
•
•
3RV]F]HJöOQHIXQNFMHPDS\PRJÈPLHÊZïDVQH
RELHNW\LW\PVDP\PZïDVQHZïDĂFLZRĂFLstylers
:ïDĂFLZRĂÊYLVLELOLW\PRĝHZQLFKSU]\MÈÊ
MHGQÈ]WU]HFKZDUWRĂFL
onZ\ĂZLHWODGDQÈIXQNFMÚ
offXNU\ZDWÚIXQNFMÚ
VLPSOLğHGZ\ĂZLHWODSRGVWDZRZÈZHUVMÚ
IXQNFML
•
•
•
JAVASCRIPT
sW\OHV>:ïDĂFLZRĂÊVW\OHVWRWDEOLFDRELHNWöZ
{
VW\OHUV>:ïDĂFLZRĂÊVW\OHUVSU]HFKRZXMHWDEOLFÚRELHNWöZ
^KXHĴIIIĵ`2JöOQHNRORU\PDS\
^VDWXUDWLRQ`2JöOQHQDV\FHQLHPDS\
]
}, {
IHDWXUH7\SHĴURDGĵ0RG\ğNDFMHGRW\F]ÈFHGUöJ
HOHPHQW7\SHĴJHRPHWU\ĵ*HRPHWULDZ\ĂZLHWODQHJRHOHPHQWX OLQLH VW\OHUV>
^OLJKWQHVV`-DVQRĂÊGUöJ
^YLVLELOLW\ĴVLPSOLğHGĵ`3R]LRPV]F]HJöïRZRĂFLGUöJ
]
}, {
IHDWXUH7\SHĴWUDQVLWĵ0RG\ğNDFMHGRW\F]ÈFHWUDQVSRUWXSXEOLF]QHJR
HOHPHQW7\SHĴJHRPHWU\ĵ*HRPHWULDZ\ĂZLHWODQHJRHOHPHQWX OLQLH VW\OHUV>
^KXHĴIIĵ`.RORUGODWUDQVSRUWXSXEOLF]QHJR
^VDWXUDWLRQ`1DV\FHQLHGODWUDQVSRUWXSXEOLF]QHJR
]
}, {
IHDWXUH7\SHĴWUDQVLWĵ0RG\ğNDFMHGRW\F]ÈFHWUDQVSRUWXSXEOLF]QHJR
HOHPHQW7\SHĴODEHOVĵ(W\NLHW\GODZ\ĂZLHWODQHJRHOHPHQWX
VW\OHUV>
^KXHĴIIĵ`.RORUHW\NLHW\
^VDWXUDWLRQ`1DV\FHQLHHW\NLHW\
]
} ...
:LÚFHMVW\OöZ]QDMGXMHVLÚZPDWHULDïDFKGRïÈF]RQ\FKGRNVLÈĝNL
API
DODANIE ZNACZNIKÓW
:W\PSU]\NïDG]LHSRND]DQRMDNPRĝQDGRGDÊ
]QDF]QLNGRPDS\8WZRU]\OLĂP\PDSÚLQDGDOLĂP\MHMQD]ZÚvenueMap
1. 3LHUZV]\PNURNLHPMHVWXWZRU]HQLHRELHNWX
/DW/QJZNWöU\PEÚGÈSU]HFKRZ\ZDQHGDQH
RNUHĂODMÈFHSRïRĝHQLH]QDF]QLND8ĝ\WD]RVWDïD
VNïDGQLDNRQVWUXNWRUDRELHNWX2ELHNWQRVLQD]ZÚ
SLQ/RFDWLRQ
2. .RQVWUXNWRUMarker()WZRU]\RELHNWmarker
0DW\ONRMHGHQSDUDPHWURELHNW]DZLHUDMÈF\
XVWDZLHQLDXWZRU]RQ\]Z\NRU]\VWDQLHPQRWDFML
OLWHUDïXRELHNWX
2ELHNWsettings]DZLHUDWU]\ZïDĂFLZRĂFL
3. positionĽRELHNWSU]HFKRZXMÈF\SRïRĝHQLH
]QDF]QLND SLQ/RFDWLRQ 4. mapĽPDSDQDNWöUHMSRZLQLHQSRMDZLÊVLÚ
]QDF]QLN QDVWURQLHPRĝH]QDMGRZDÊVLÚZLÚFHM
PDSQLĝW\ONRMHGQD 5. iconĽĂFLHĝNDGRVWÚSXGRREUD]XZ\ĂZLHWODQHJRMDNR]QDF]QLNQDPDSLH ĂFLHĝNDSRZLQQD
E\ÊZ]JOÚGQDGODVWURQ\+70/ JAVASCRIPT
c09/js/google-map-styled.js
1
YDUSLQ/RFDWLRQ QHZJRRJOHPDSV/DW/QJ 2
3
4
5
YDUVWDUW3RVLWLRQ QHZJRRJOHPDSV0DUNHU ^8WZRU]HQLHQRZHJR]QDF]QLND
SRVLWLRQSLQ/RFDWLRQ=GHğQLRZDQLHMHJRSRïRĝHQLD
PDSYHQXH0DS:VND]DQLHPDS\
LFRQĴLPJJRSQJĵ¥FLHĝNDGRVWÚSXGRREUD]XZ]JOÚGQDGOD+70/
});
WYNIK
API PODSUMOWANIE
API
f $3,MHVWXĝ\ZDQHZSU]HJOÈGDUNDFKLQWHUQHWRZ\FK
VNU\SWDFKRUD]ZZLWU\QDFKLQWHUQHWRZ\FKNWöUH
ZVSöïG]LHOÈSHZQHIXQNFMRQDOQRĂFL]SURJUDPDPLOXE
LQQ\PLZLWU\QDPL
f $3,SR]ZDODQDWZRU]HQLHNRGXZ\NRQXMÈFHJRĝÈGDQLH
ZNWöU\PLQQ\SURJUDPOXEVNU\SWMHVWSURV]RQ\
RZ\NRQDQLHSHZQHJR]DGDQLD
f $3,RNUHĂODWDNĝHIRUPDWZMDNLPRF]HNXMHRGSRZLHG]L
DE\PRJïDE\ÊRQD]UR]XPLDQD f $E\]DVWRVRZDÊ$3,ZZLWU\QLHLQWHUQHWRZHMQDMHM
VWURQDFKNRU]\VWDMÈF\FK]WHJR$3,NRQLHF]QHMHVW
GRïÈF]HQLHRGSRZLHGQLHJRVNU\SWX
f :GRNXPHQWDFML$3,]Z\NOH]QDMGXMÈVLÚWDEHOH
RELHNWöZPHWRGLZïDĂFLZRĂFL
f -HĝHOLZLHV]MDNWZRU]\ÊRELHNWZ\ZRï\ZDÊMHJR
PHWRG\X]\VNLZDÊGRVWÚSGRMHJRZïDĂFLZRĂFL
LWZRU]\ÊNRGUHDJXMÈF\QD]GDU]HQLDWRQLHSRZLQLHQHĂ
PLHÊSUREOHPX]RSDQRZDQLHPGRZROQHJR$3,
-DYD6FULSW
API
10
OBSŁUGA
BŁĘDÓW
I DEBUGOWANIE
-Ú]\N-DYD6FULSWPRĝHE\ÊWUXGQ\ZQDXFHSRQDGWRNDĝG\
SRSHïQLDEïÚG\SRGF]DVWZRU]HQLDNRGX:W\PUR]G]LDOH
GRZLHV]VLÚMDNZ\V]XNLZDÊEïÚG\ZNRG]LH=REDF]\V]
WHĝMDNWZRU]\ÊVNU\SW\NWöUH]QDNRPLFLHSRUDG]ÈVRELH
]HZHQWXDOQ\PLEïÚGDPL
.LHG\WZRU]\V]NRG-DYD6FULSWQLHPRĝHV]RF]HNLZDÊĝHRGUD]XEÚG]LHRQGRVNRQDï\
3URJUDPRZDQLHWRUR]ZLÈ]\ZDQLHSUREOHPöZ3U]\SRPLQDWRV\WXDFMÚZNWöUHMRWU]\PXMHV]
SX]]OHLmusiszQLHW\ONRMHXïRĝ\ÊDOHWHĝSU]\JRWRZDÊLQVWUXNFMHSR]ZDODMÈFHWDNĝH
komputerowiQDLFKXïRĝHQLH
*G\WZRU]\P\GïXJLVNU\SWQLHSRZVWDMHRGUD]XGRVNRQDï\NRG*HQHURZDQHSU]H]SU]HJOÈGDUNÚ
LQWHUQHWRZÈNRPXQLNDW\REïÚGDFKQDSRF]ÈWNXZ\GDMÈVLÚ]DZLïHDOHSRPDJDMÈZXVWDOHQLX
GODF]HJRNRG-DYD6FULSWQLHG]LDïDSUDZLGïRZRLMDNPRĝQDJRQDSUDZLÊ:W\PUR]G]LDOH
]RVWDQÈSRUXV]RQHQDVWÚSXMÈFH]DJDGQLHQLD
KONSOLA I NARZĘDZIA
PROGRAMISTYCZNE
NAJCZĘŚCIEJ
WYSTĘPUJĄCE BŁĘDY
1DU]ÚG]LDZEXGRZDQH
ZSU]HJOÈGDUNÚLQWHUQHWRZÈ
NWöUHSRPDJDMÈSURJUDPLĂFLH
Z\V]XNLZDÊEïÚG\
1DMF]ÚVWV]HěUöGïDEïÚGöZ
RUD]VSRVRE\SRSUDZLDQLD
EïÚGöZ
456 2%6’8*$%’}'™:,'(%8*2:$1,(
OBSŁUGA BŁĘDÓW
:\MDĂQLHQLHMDNNRGPRĝH
UDG]LÊVRELH]SRWHQFMDOQ\PL
EïÚGDPL
2%6’8*$%’}'™:,'(%8*2:$1,( 457
KOLEJNOŚĆ WYKONYWANIA
$E\]QDOHěÊěUöGïREïÚGXZDUWRZLHG]LHÊMDNZ\JOÈGDSURFHVSU]HWZDU]DQLD
VNU\SWöZ.ROHMQRĂÊZ\NRQ\ZDQLDSROHFHñPRĝHE\ÊVNRPSOLNRZDQD
DQLHNWöUH]DGDQLDQLHPRJÈE\ÊXNRñF]RQH]DQLPQLH]RVWDQLHXUXFKRPLRQH
LQQHSROHFHQLHOXEIXQNFMD
2
function greetUser() {
return ’Witaj, ’ + getName();
}
function getName() {
var name = ’Marta’;
3
return name;
}
1 var greeting = greetUser();
4 alert(greeting);
3U]HGVWDZLRQ\SRZ\ĝHMVNU\SWWZRU]\NRPXQLNDW
]SRZLWDQLHPDQDVWÚSQLHZ\ĂZLHWODJRZRNQLH
GLDORJRZ\P QDVWURQLHSRSUDZHM :FHOXSU]\JRWRZDQLDWHJRNRPXQLNDWX]SRZLWDQLHP]RVWDï\
Xĝ\WHGZLHIXQNFMHgreetUser()LgetName()
%\ÊPRĝHVÈG]LV]ĝHWDN]ZDQDNROHMQRĂÊ
wykonywania NROHMQRĂÊSU]HWZDU]DQLDSROHFHñ EÚG]LH]JRGQD]SU]HGVWDZLRQ\PLQXPHUDPLRG
GR-HGQDNRND]XMHVLÚWR]QDF]QLHEDUG]LHM
VNRPSOLNRZDQH
$E\XNRñF]\ÊNURNLQWHUSUHWHUSRWU]HEXMH
Z\QLNXZ\NRQDQLDIXQNFMLZNURNDFKoraz
SRQLHZDĝNRPXQLNDW]DZLHUDZDUWRĂFL]ZUDFDQH
SU]H]WHIXQNFMH.ROHMQRĂÊZ\NRQ\ZDQLDEÚG]LH
ZLÚFQDVWÚSXMÈFD
=PLHQQDgreetingSRELHUDZDUWRĂÊ]IXQNFML
greetUser()
2.)XQNFMDgreetUser()WZRU]\NRPXQLNDW
SU]H]SRïÈF]HQLHFLÈJXWHNVWRZHJR’Witaj, ’
]Z\QLNLHPZ\ZRïDQLDgetName()
3.)XQNFMDgetName()SU]HND]XMHLPLÚIXQNFML
greetUser()
:IXQNFMLgreetUser()]QDQHMHVWWHUD]LPLÚ
Xĝ\WNRZQLND]RVWDMHRQRZVWDZLRQHZSU]\JRWRZ\ZDQ\PFLÈJXWHNVWRZ\P1DVWÚSQLHIXQNFMD
]ZUDFDNRPXQLNDWGRSROHFHQLDNWöUHZNURNX
Z\ZRïDïRWÚIXQNFMÚ
:DUWRĂÊ]PLHQQHMgreetingMHVWSU]HFKRZ\ZDQDZSDPLÚFL
:DUWRĂÊ]PLHQQHMgreeting]RVWDMHZ\ĂZLHWORQDZRNQLHGLDORJRZ\P
458 2%6’8*$%’}'™:,'(%8*2:$1,(
KONTEKST WYKONYWANIA
,QWHUSUHWHU-DYD6FULSWZ\NRU]\VWXMHNRQFHSFMÚNRQWHNVWXZ\NRQ\ZDQLD
-HVWWRMHGHQJOREDOQ\NRQWHNVWZ\NRQ\ZDQLDNDĝGDIXQNFMDWZRU]\QRZ\
NRQWHNVWZ\NRQ\ZDQLD2GSRZLDGDMÈRQH]DNUHVRP]PLHQQ\FK
KONTEKST WYKONYWANIA
ZAKRES ZMIENNEJ
.DĝGHSROHFHQLHVNU\SWXPRĝQD]QDOHěÊZMHGQ\P
]WU]HFKNRQWHNVWöZZ\NRQ\ZDQLD
3LHUZV]HGZDNRQWHNVW\RGSRZLDGDMÈQRWDFML
]DNUHVX SR]QDïHĂJRZUR]G]LDOHZSRGUR]
G]LDOHķ=DNUHV]PLHQQHMĵ KONTEKST GLOBALNY
.RG]QDMGXMÈF\VLÚZVNU\SFLHDOHQLH
ZIXQNFML1DNDĝGHMVWURQLH]QDMGXMHVLÚW\ONR
MHGHQNRQWHNVWJOREDOQ\
KONTEKST FUNKCJI
.RGXUXFKDPLDQ\ZHZQÈWU]IXQNFML.DĝGD
IXQNFMDPDZïDVQ\NRQWHNVW
KONTEKST EVAL (NIEPOKAZANY)
7HNVWMHVWZ\NRQ\ZDQ\MDNNRGZIXQNFML
ZHZQÚWU]QHMRQD]ZLHeval()1LHEÚG]LHWR
RPöZLRQHZWHMNVLÈĝFH
ZAKRES GLOBALNY
-HĝHOL]PLHQQDMHVW]DGHNODURZDQDQD
]HZQÈWU]IXQNFMLPRĝHE\ÊVWRVRZDQDJG]LH
NROZLHNSRQLHZDĝPD]DNUHVJOREDOQ\-HĝHOL
SRGF]DVWZRU]HQLD]PLHQQHMQLH]RVWDïRXĝ\WH
VïRZRNOXF]RZHvarEÚG]LHRQDXPLHV]F]RQD
Z]DNUHVLHJOREDOQ\P
ZAKRES NA POZIOMIE FUNKCJI
.LHG\]PLHQQD]RVWDMH]DGHNODURZDQDZH
ZQÈWU]IXQNFMLPRĝHE\ÊXĝ\ZDQDW\ONRZWHM
IXQNFMLSRQLHZDĝPD]GHğQLRZDQ\]DNUHVQD
SR]LRPLHIXQNFML
2%6’8*$%’}'™:,'(%8*2:$1,( 459
STOS
,QWHUSUHWHU-DYD6FULSWMHGQRUD]RZRSU]HWZDU]DW\ONRMHGHQZLHUV]NRGX
.LHG\SROHFHQLHZ\PDJDGDQ\FK]LQQHMIXQNFMLQDstosieXPLHV]F]D
Z\ZRïDQLHQRZHMIXQNFMLSU]\NU\ZDMÈFQLPELHĝÈFH]DGDQLH
.LHG\SROHFHQLHPXVLZ\ZRïDÊ
LQQ\NRGZFHOXZ\NRQDQLD
VZRMHJR]DGDQLDQRZH]DGDQLH
MHVWXPLHV]F]DQHQDJöU]HVWRVX
]DGDñGRZ\NRQDQLD
3RZ\NRQDQLXQRZHJR]DGDQLD
LQWHUSUHWHUPRĝHSRZUöFLÊGR
SRSU]HGQLHJR
Funkcja greetUser()
zwraca ’Witaj, ’ oraz
wynik wywołania
getName()
=DNDĝG\PUD]HPJG\QDVWRVLH
MHVWXPLHV]F]DQ\QRZ\HOHPHQW
QDVWÚSXMHXWZRU]HQLHQRZHJR
NRQWHNVWXZ\NRQ\ZDQLD
=PLHQQH]GHğQLRZDQHZIXQNFML
OXENRQWHNĂFLHZ\NRQ\ZDQLD VÈGRVWÚSQHMHG\QLHZWHM
IXQNFML
Utworzenie zmiennej
greeting i wywołanie
funkcji greetUser()
w celu otrzymania
wartości
-HĝHOLIXQNFMDEÚG]LHZ\ZRïDQD
SRUD]GUXJL]PLHQQHPRJÈ
PLHÊLQQHZDUWRĂFL
1DGLDJUDPLHSRSUDZHMVWURQLH
PRĝHV]]REDF]\ÊMDNNRG
SU]HGVWDZLRQ\GRWÈGZUR]G]LDOHEÚG]LHZ\NRQ\ZDQ\SU]H]
XPLHV]F]HQLHSRV]F]HJöOQ\FK
]DGDñQDVWRVLH
.RGMHVWSRND]DQ\ZSUDZ\P
JöUQ\PURJXQDVWURQLHSR
SUDZHM :DUWRĂÊ]PLHQQHMgreeting
MHVWSRELHUDQDSU]H]Z\ZRïDQLH
IXQNFMLgreetUser()'ODWHJR
WHĝ]PLHQQHMQLHPRĝQDSU]\SLVDÊZDUWRĂFLGRSöNLIXQNFMD
greetUser()QLH]DNRñF]\
G]LDïDQLD
460 2%6’8*$%’}'™:,'(%8*2:$1,(
Oczekiwanie…
:SUDNW\FHR]QDF]DWR
ZVWU]\PDQLH]DGDQLDDQD
JöU]HVWRVX]RVWDMHXPLHV]F]RQH
Z\ZRïDQLHIXQNFMLgreetUser()
-HGQDNIXQNFMDgreetUser()
QLHPRĝH]ZUöFLÊZDUWRĂFL
GRSöNLIXQNFMDgetName()QLH
Z\NRQDswojego]DGDQLD
function greetUser() {
return ’Witaj, ’ + getName();
}
function getName() {
var name = ’Marta’;
return name;
}
var greeting = greetUser();
alert(greeting);
Funkcja getName()
przekazuje wartość
’Marta’ funkcji
greetUser()
Oczekiwanie…
Funkcja greetUser()
przypisuje wartość
’Witaj, Marta’
zmiennej greeting
Oczekiwanie…
Oczekiwanie…
7DNZLÚFZ\ZRïDQLHIXQNFML
getName()MHVWXPLHV]F]RQHQD
JöU]HVWRVXQDGZ\ZRïDQLHP
IXQNFMLgreetUser()-DN
ZLG]LV]VWRVZ\ZRïDñ]DF]\QD
SRZROLSRZVWDZDÊ.LHG\
IXQNFMDgetName()]DNRñF]\
G]LDïDQLHMHMZDUWRĂÊ]ZURWQD
EÚG]LHSU]HND]DQD]SRZURWHP
IXQNFMLgreetUser()
3RQLHZDĝIXQNFMDgetName()
Z\NRQDïDVZRMH]DGDQLH
]RVWDMHXVXQLÚWD]HVWRVX
7HUD]IXQNFMDgreetUser()
PRĝH]DNRñF]\ÊVZRMH]DGDQLH
LSU]HND]DÊRGSRZLHGQLÈ
ZDUWRĂÊ]PLHQQHMgreeting
Zmienna greeting
przechowuje wartość
’Witaj, Marta’
)XQNFMDgreetUser()NRñF]\
]DGDQLHLMHVWXVXZDQD]HVWRVX
2GSRZLHGQLDZDUWRĂÊ]RVWDMH
ZUHV]FLHSU]\SLVDQD]PLHQQHM
greeting
2%6’8*$%’}'™:,'(%8*2:$1,( 461
KONTEKST WYKONYWANIA
I PRZENIESIENIE W GÓRĘ
=DNDĝG\PUD]HPJG\VNU\SWZFKRG]LGRQRZHJRNRQWHNVWXZ\NRQ\ZDQLD
PRĝHP\Z\UöĝQLÊGZLHID]\DNW\ZQRĂFL
1. PRZYGOTOWANIE
2. WYKONANIE
ľ7ZRU]RQ\MHVWQRZ\]DNUHV
ľ7ZRU]RQHVÈ]PLHQQHIXQNFMHLDUJXPHQW\
ľ2NUHĂODQDMHVWZDUWRĂÊVïRZDNOXF]RZHJRthis
ľ1DVWÚSXMHSU]\SLVDQLHZDUWRĂFL]PLHQQ\P
ľ2GZRïDQLDGRIXQNFMLLZ\NRQDQLHLFKNRGX
ľ:\NRQDQLHSROHFHñ
3R]QDQLHWHJRFRG]LHMHVLÚZGZöFKZ\PLHQLRQ\FKID]DFKSRPDJDZ]UR]XPLHQLXNRQFHSFML
RNUHĂODQHMPLDQHPSU]HQLHVLHQLDZJöUÚ DQJ
hoist -DNSHZQLH]DXZDĝ\ïHĂmaszZ\PLHQLRQH
SRQLĝHMPRĝOLZRĂFL
%\ÊPRĝHVSRG]LHZDV]VLÚĝHZ\NRQDQLHSRQLĝV]HJRIUDJPHQWXNRGX]DNRñF]\VLÚQLHSRZRG]HQLHPSRQLHZDĝZ\ZRïDQLHIXQNFMLgreetUser()
QDVWÚSXMHSU]HGMHM]GHğQLRZDQLHP
ľ
:\ZRïDQLDIXQNFMLSU]HGLFK]DGHNODURZDQLHP
MHĝHOL]RVWDï\XWZRU]RQH]Z\NRU]\VWDQLHPGHNODUDFMLIXQNFMLDQLHZ\UDĝHñIXQNFMLĽSDWU]
UR]G]LDïSRGUR]G]LDïķ)XQNFMHDQRQLPRZH
LIXQNFMHZ\UDĝHQLDĵ 3U]\SLVDQLDZDUWRĂFL]PLHQQHMNWöUDMHV]F]HQLH
]RVWDïD]DGHNODURZDQD
ľ
:\QLNDWR]IDNWXĝHZV]\VWNLH]PLHQQHLIXQNFMH
ZLFKNRQWHNĂFLHZ\NRQ\ZDQLDVÈWZRU]RQH
]DQLPEÚGÈZ\NRQDQH
)D]DSU]\JRWRZDQLDMHVWF]ÚVWRRNUHĂODQD
MDNRZ]LÚFLHZV]\VWNLFK]PLHQQ\FK
LIXQNFMLDQDVWÚSQLHSU]HQLHVLHQLHLFKQDJöUÚ
NRQWHNVWXZ\NRQ\ZDQLD0RĝHV]WRX]QDÊ]D
przygotowywanieZ\PLHQLRQ\FKNRPSRQHQWöZ
.DĝG\NRQWHNVWZ\NRQDQLDWZRU]\WDNĝHZïDVQ\
RELHNW]PLHQQ\FK:W\PRELHNFLH]QDMGXMÈVLÚ
LQIRUPDFMHV]F]HJöïRZHGRW\F]ÈFHZV]\VWNLFK
]PLHQQ\FKIXQNFMLLSDUDPHWUöZGODGDQHJR
NRQWHNVWXZ\NRQ\ZDQLD
2%6’8*$%’}'™:,'(%8*2:$1,(
var greeting = greetUser();
function greetUser() {
// Utworzenie komunikatu z powitaniem.
}
-HGQDNSRZ\ĝV]\IUDJPHQWNRGXG]LDïDJG\ĝ
IXQNFMDLSLHUZV]HSROHFHQLH]QDMGXMÈVLÚZW\P
VDP\PNRQWHNĂFLHZ\NRQDQLDLNRGPRĝQD
SRWUDNWRZDÊWDNMDNSU]HGVWDZLRQRSRQLĝHM
function greetUser() {
// Utworzenie komunikatu z powitaniem.
}
var greeting = greetUser();
=NROHLZ\NRQDQLHQDVWÚSXMÈFHJRNRGX]DNRñF]\
VLÚQLHSRZRG]HQLHPSRQLHZDĝIXQNFMD
greetUser()MHVWWZRU]RQDZNRQWHNĂFLHIXQNFML
getName()
var greeting = greetUser();
function getName() {
function greetUser() {
// Utworzenie komunikatu z powitaniem.
}
8ĝ\FLHLPLHQLDZNRPXQLNDFLH
// z powitaniem.
}
POZNAJEMY ZAKRES
:LQWHUSUHWHU]HNDĝG\NRQWHNVWZ\NRQ\ZDQLDPDZïDVQ\RELHNWvariables
3U]HFKRZXMHRQ]PLHQQHIXQNFMHLSDUDPHWU\GRVWÚSQHZGDQ\P]DNUHVLH
3RQDGWRNDĝG\NRQWHNVWZ\NRQ\ZDQLDPRĝHX]\VNDÊGRVWÚSGRQDGU]ÚGQHJR
RELHNWXvariables
0öZLVLÚĝHIXQNFMHZ-DYD6FULSWPDMÈ]DNUHV
leksykalny6ÈSRïÈF]RQH]RELHNWHPNWöU\]RVWDï
]GHğQLRZDQ\ZHZQÈWU]'ODWHJRWHĝGODNDĝGHJR
NRQWHNVWXZ\NRQ\ZDQLD]DNUHVEÚG]LHVNïDGDïVLÚ
]RELHNWXvariablesELHĝÈFHJRNRQWHNVWXZ\NRQ\ZDQLDDWDNĝH]RELHNWöZvariablesZHZV]\VWNLFKQDGU]ÚGQ\FKNRQWHNVWDFKZ\NRQ\ZDQLD
var greeting = (function() {
var d = new Date();
var time = d.getHours();
var greeting = greetUser();
function greetUser() {
if (time < 12) {
YDUPVJ ij']LHñGREU\ij
} else {
var msg = ’Witaj, ’;
}
return = msg + getName();
function getName() {
var name = ’Marta’;
return name;
}
}
});
alert(greeting);
:\REUDěVRELHNDĝGÈIXQNFMÚMDNRPDWULRV]NLF]\OL
ODONLZïRĝRQHMHGQDZGUXJÈ=DNUHVSRWRPQ\PRĝH
SRSURVLÊ]DNUHV\QDGU]ÚGQHRLQIRUPDFMH]QDMGXMÈFHVLÚZLFK]PLHQQ\FK-HGQDN]DNUHV\QDGU]ÚGQH
QLHPRJÈSRELHUDÊ]PLHQQ\FK]]DNUHVöZSRWRPQ\FK.DĝG\]DNUHVSRWRPQ\RWU]\PDWÚVDPÈ
RGSRZLHGěRGWHJRVDPHJR]DNUHVXQDGU]ÚGQHJR
-HĝHOL]PLHQQDQLH]RVWDQLH]QDOH]LRQDZRELHNFLH
variablesELHĝÈFHJRNRQWHNVWXZ\NRQ\ZDQLD
WRPRĝQDMHMSRV]XNDÊZRELHNFLHvariables
QDGU]ÚGQHJRNRQWHNVWXZ\NRQ\ZDQLD:DUWR
MHGQDNSDPLÚWDÊĝHRSHUDFMDSU]HV]XNLZDQLD
ZJöUÚVWRVXPRĝHPLHÊQHJDW\ZQ\ZSï\ZQD
Z\GDMQRĂÊ'ODWHJRWHĝLGHDOQ\PUR]ZLÈ]DQLHP
EÚG]LHWZRU]HQLH]PLHQQ\FKZHZQÈWU]IXQNFML
NWöUHMHZ\NRU]\VWXMÈ
6SöMU]QDVWURQÚSROHZHMĽZHZQÚWU]QDIXQNFMD
PRĝHX]\VNDÊGRVWÚSGRIXQNFML]HZQÚWU]Q\FK
LLFK]PLHQQ\FK1DSU]\NïDGIXQNFMDgreetUser()
PRĝHX]\VNDÊGRVWÚSGR]PLHQQHMtime]DGHNODURZDQHMZ]HZQÚWU]QHMIXQNFMLgreeting()
:WUDNFLHNDĝGHJRZ\ZRïDQLDIXQNFMLRWU]\PXMH
RQDZïDVQ\NRQWHNVWZ\NRQ\ZDQLDLRELHNW
variables
:WUDNFLHNDĝGHJRZ\ZRïDQLDIXQNFMLZHZQÚWU]QHM
SU]H]IXQNFMÚ]HZQÚWU]QÈIXQNFMDZHZQÚWU]QD
EÚG]LHPLDïDQRZ\RELHNWvariables-HGQDN
]PLHQQHZIXQNFML]HZQÚWU]QHMSR]RVWDQÈWHVDPH
8ZDJD=SR]LRPXNRGXQLHPRĝHV]X]\VNDÊ
GRVWÚSXGRRELHNWXvariables2ELHNWWHQMHVW
WZRU]RQ\SU]H]LQWHUSUHWHULXĝ\ZDQ\ZWOH-HGQDN
]UR]XPLHQLHWHJRFRVLÚG]LHMHZWOHQDSHZQR
SRPRĝHZSR]QDQLXVSRVREXG]LDïDQLD]DNUHVX
2%6’8*$%’}'™:,'(%8*2:$1,( POZNAJEMY BŁĘDY
-HĝHOLSROHFHQLH-DYD6FULSWZ\JHQHUXMHEïÈGQDVWÚSXMH]JïRV]HQLHZ\MÈWNX
1DW\PHWDSLHLQWHUSUHWHU]DWU]\PXMHZ\NRQ\ZDQLHNRGXLV]XNDNRGX
SU]H]QDF]RQHJRGRREVïXJLZ\MÈWNöZ
-HĝHOLSU]HZLGXMHV]ĝHFRĂZNRG]LHPRĝH
VSRZRGRZDÊEïÈGPRĝHV]Xĝ\Ê]HVWDZXSROHFHñ
ZFHOXREVïXJLWHJREïÚGX SROHFHQLDWHSR]QDV]
ZSRGUR]G]LDOHķ2EVïXJDZ\MÈWNöZĵ 7REDUG]R
ZDĝQHSRQLHZDĝMHĝHOLEïÈGQLH]RVWDQLHREVïXĝRQ\VNU\SWSRSURVWX]DWU]\PDSU]HWZDU]DQLH
DXĝ\WNRZQLNQLHEÚG]LHQDZHW]QDïSU]\F]\Q\
SU]HUZDQLDG]LDïDQLDVNU\SWX'ODWHJRWHĝNRG
SU]H]QDF]RQ\GRREVïXJLZ\MÈWNöZSRZLQLHQ
ZVND]\ZDÊXĝ\WNRZQLNRPěUöGïRSUREOHPX
function greetUser() {
2 ,QWHUSUHWHUG]LDïDWXWDM
}
function getName() {
:\REUDěVRELHEïÈGWXWDM
3
VSRZRGRZDQ\SU]H]JUHHW8VHU
}
1 var greeting = greetUser();
4 alert(greeting);
.LHG\LQWHUSUHWHUQDSRWNDEïÈGUR]SRF]\QD
Z\V]XNLZDQLHNRGXSU]H]QDF]RQHJRGRREVïXJL
EïÚGöZ:SRND]DQ\PRERNGLDJUDPLHNRGPD
GRNïDGQLHWDNÈVDPÈVWUXNWXUÚMDNZGLDJUDPDFK
QDSRF]ÈWNXUR]G]LDïX3ROHFHQLHZNURNX
Xĝ\ZDIXQNFML]NURNXNWöUD]NROHLZ\NRU]\VWXMHIXQNFMÚ]NURNX:\REUDěVRELHZ\VWÈSLHQLH
EïÚGXZNURNX
3R]JïRV]HQLXZ\MÈWNXLQWHUSUHWHU]DWU]\PXMH
G]LDïDQLHLVSUDZG]DELHĝÈF\NRQWHNVWZ\NRQ\ZDQLDSRGNÈWHPNRGXSU]H]QDF]RQHJRGRREVïXJL
EïÚGöZ-HĝHOLEïÈGZ\VWÈSLZIXQNFMLgetName()
(3)LQWHUSUHWHUEÚG]LHV]XNDïZWHMZïDĂQLHIXQNFML
NRGXREVïXJXMÈFHJREïÚG\
-HĝHOLEïÈGZ\VWÈSLZIXQNFMLDGDQDIXQNFMDQLH
]DZLHUDSURFHGXU\REVïXJLZ\MÈWNöZWRLQWHUSUHWHU
SU]HFKRG]LGRZLHUV]DNRGXNWöU\Z\ZRïDïWÚ
IXQNFMÚ:RPDZLDQ\PSU]\NïDG]LHIXQNFMD
getName()]RVWDïDZ\ZRïDQDSU]H]greetUser()
LLQWHUSUHWHUEÚG]LHV]XNDïNRGXREVïXJLZ\MÈWNöZ
ZGUXJLHM]Z\PLHQLRQ\FKIXQNFML(2)-HĝHOL
QLH]QDMG]LHWHJRNRGXZ\V]XNLZDQLHEÚG]LH
NRQW\QXRZDQHQDNROHMQ\PSR]LRPLH,QWHUSUHWHU
VSUDZG]LF]\ZVNU\SFLH]QDMGXMHVLÚNRG
SU]H]QDF]RQ\GRREVïXJLEïÚGöZZW\PNRQWHNĂFLH
Z\NRQ\ZDQLD2SHUDFMDEÚG]LHNRQW\QXRZDQDDĝ
GRRVLÈJQLÚFLDNRQWHNVWXJOREDOQHJRZNWöU\P
QDVWÈSLSU]HUZDQLHZ\NRQ\ZDQLDVNU\SWX
LXWZRU]HQLHRELHNWXError
-DNZLG]LV]SRGF]DVZ\V]XNLZDQLDNRGXSU]H]QDF]RQHJRGRREVïXJLEïÚGöZPDP\GRF]\QLHQLD
]SU]HMĂFLHPZJöUÚVWRVXDĝGRRVLÈJQLÚFLD
NRQWHNVWXJOREDOQHJR-HĝHOLPLPRWHJRQDGDOQLH
]RVWDQLH]QDOH]LRQ\NRGSU]H]QDF]RQ\GRREVïXJL
EïÚGöZVNU\SW]DWU]\PXMHG]LDïDQLHLWZRU]RQ\
MHVWRELHNWError
464 2%6’8*$%’}'™:,'(%8*2:$1,(
OBIEKT ERROR
2ELHNWErrorPRĝHSRPöFZZ\V]XNDQLXSRSHïQLRQ\FKEïÚGöZ
DSU]HJOÈGDUNLLQWHUQHWRZHPDMÈQDU]ÚG]LDSRPDJDMÈFHZLFKRGF]\FLH
8WZRU]RQ\RELHNWErrorEÚG]LH]DZLHUDïZ\PLHQLRQHSRQLĝHMZïDĂFLZRĂFL
:-DYD6FULSWLVWQLHMHVLHGHPZEXGRZDQ\FKW\SöZ
RELHNWXEïÚGX]REDF]\V]MHQDGZöFKNROHMQ\FK
VWURQDFK
:’$¥&,:2¥m
23,6
2%,(.7
23,6
name
7\SZ\NRQ\ZDQLD
Error
message
2SLV
%ïÈGRJöOQ\ZV]\VWNLHSR]RVWDïH
EïÚG\RSDUWHVÈQDW\PEïÚG]LH
ğOH1XPEHU
1D]ZDSOLNX-DYD6FULSW
6\QWD[(UURU
%ïÈGVNïDGQL
1XPHUZLHUV]DZNWöU\P
Z\VWÈSLïEïÈG
ReferenceError
3UöEDRGZRïDQLDGR]PLHQQHM
NWöUDQLH]RVWDïD]DGHNODURZDQD
Z]DNUHVLH
7\SH(UURU
1LHRF]HNLZDQ\W\SGDQ\FKNWöU\
QLHPRĝHE\ÊXVWDORQ\
RangeError
/LF]E\VSR]DDNFHSWRZDQHJR
]DNUHVX
URIError
1LHSUDZLGïRZHXĝ\FLHPHWRG
encodeURI()decodeURI()
LSRGREQ\FK
EvalError
1LHSUDZLGïRZHXĝ\FLHPHWRG\
eval()
lineNumber
.LHG\Z\VWÈSLEïÈGZV]\VWNLH]ZLÈ]DQH]QLP
LQIRUPDFMHPRĝQDRGF]\WDÊZNRQVROL-DYD6FULSW
RIHURZDQHMSU]H]SU]HJOÈGDUNÚLQWHUQHWRZÈ
:LÚFHMLQIRUPDFMLRNRQVROL]QDMG]LHV]ZSRGUR]G]LDOHķ1DU]ÚG]LDSURJUDPLVW\F]QHZSU]HJOÈGDUNDFKLNRQVROD-DYD6FULSWĵQDWRPLDVWMHMSU]\NïDG
ZSU]HJOÈGDUFH&KURPHSRND]DQRQDU\VXQNX
SRQLĝHM
1
1.:NRORU]HF]HUZRQ\PSROHZHMVWURQLH
SRND]DQRSU]\NïDGEïÚGXVNïDGQL 6\QWD[(UURU =QDOH]LRQRQLHRF]HNLZDQ\]QDN
2
2.3RSUDZHMVWURQLHZLG]LV]ĝHEïÈGZ\VWÈSLï
ZZLHUV]XF]ZDUW\PSOLNXRQD]ZLHerrors.js
2%6’8*$%’}'™:,'(%8*2:$1,( 465
OBIEKT ERROR —
CIĄG DALSZY
3U]HGVWDZLRQHWXWDMNRPXQLNDW\REïÚGDFKVÈJHQHURZDQH
SU]H]&KURPH.RPXQLNDW\WH
ZLQQ\FKSU]HJOÈGDUNDFKPRJÈ
Z\JOÈGDÊLQDF]HM
6\QWD[(UURU
ReferenceError
NIEPRAWIDŁOWA SKŁADNIA
ZMIENNA NIE ISTNIEJE
7HQEïÈGMHVWVSRZRGRZDQ\SU]H]QLHSUDZLGïRZH
Xĝ\FLHUHJXïMÚ]\ND1DMF]ÚĂFLHMWRHIHNW]Z\NïHM
OLWHUöZNL
7HQEïÈGMHVWVSRZRGRZDQ\SU]H]]PLHQQÈNWöUD
QLH]RVWDïD]DGHNODURZDQDOXENWöUHMZDUWRĂÊMHVW
VSR]D]DNUHVX
NIEDOPASOWANE LUB BRAKUJĄCE ZNAKI
NIEZADEKLAROWANA ZMIENNA
CYTOWANIA
var width = 12;
var area = width * height ;
document.write(“Witaj ’ );
6\QWD[(UURU8QH[SHFWHG(2)
BRAKUJĄCY NAWIAS ZAMYKAJĄCY
GRFXPHQWJHW(OHPHQW%\,G ijSDJHij
6\QWD[(UURU([SHFWHGWRNHQij ij
BRAKUJĄCY PRZECINEK W TABLICY
5HIHUHQFH(UURU&DQijWğQGYDULDEOH
height
NIEZDEFINIOWANA NAZWANA FUNKCJA
document.write(UDQGRP)XQFWLRQ
);
5HIHUHQFH(UURU&DQijWğQGYDULDEOH
UDQGRP)XQFWLRQ
7HQVDPEïÈGZ\VWÈSLJG\QDNRñFXSROHFHQLD
]DEUDNQLHQDZLDVX]
var list = [’Element 1’, ’Element 2’
’Element 3’];
6\QWD[(UURU([SHFWHGWRNHQij@ij
NIEPRAWIDŁOWA NAZWA WŁAŚCIWOŚCI
:SUDZG]LHZQD]ZLH]QDMGXMHVLÚVSDFMDDOH
QD]ZDQLH]RVWDïDXMÚWDZFXG]\VïöZ
XVHU ^ğUVW QDPHĴ%DUWHNĵODVW1DPH
Ĵ1RZDNĵ`
6\QWD[(UURU([SHFWHGDQLGHQWLğHUEXW
found ’name’ instead
EvalError
NIEPRAWIDŁOWE UŻYCIE FUNKCJI EVAL()
)XQNFMDeval()SU]HSURZDG]DRV]DFRZDQLH
WHNVWX]DSRPRFÈLQWHUSUHWHUDLXUXFKDPLDJR
MDNRNRG WRQLHEÚG]LHRPDZLDQHZNVLÈĝFH %DUG]RU]DGNRVSRWNDV]VLÚ]EïÚGHPWHJRURG]DMX
SRQLHZDĝSU]HJOÈGDUNLF]ÚVWR]JïDV]DMÈLQQHEïÚG\
]DPLDVWEvalError
466 2%6’8*$%’}'™:,'(%8*2:$1,(
URIError
NIEPRAWIDŁOWE UŻYCIE FUNKCJI URI
-HĝHOLNWöU\NROZLHN]Z\PLHQLRQ\FK]QDNöZQLH
]RVWDQLHSUDZLGïRZR]QHXWUDOL]RZDQ\ZDGUHVLH
85/VSRZRGXMHWRZ\JHQHURZDQLHEïÚGX
" ZNAK NIE ZOSTAŁ PRAWIDŁOWO
ZNEUTRALIZOWANY
GHFRGH85, ijKWWSEEFFRPQHZVSKS ? a=1’);
85,(UURU85,HUURU
1DW\FKGZöFKVWURQDFKSRND]DQRVLHGHPUöĝQ\FKW\SöZRELHNWXEïÚGX
Z-DYD6FULSWRUD]SHZQHQDMF]ÚĂFLHMVSRW\NDQHSU]\NïDG\WHJRURG]DMX
EïÚGöZ-DNPRĝHV]]REDF]\ÊNRPXQLNDW\REïÚGDFKZ\ĂZLHWODQHSU]H]
SU]HJOÈGDUNLF]ÚVWRE\ZDMÈ]DZLïH
7\SH(UURU
RangeError
WARTOŚĆ JEST NIEOCZEKIWANEGO TYPU
LICZBA SPOZA ZAKRESU
DANYCH
7HQURG]DMEïÚGXZ\VWÈSLMHĝHOLVSUöEXMHV]Xĝ\Ê
OLF]E\VSR]DDNFHSWRZDQHJR]DNUHVX
7HQEïÈGSRMDZLDVLÚQDMF]ÚĂFLHMJG\SUöEXMHV]
Xĝ\ÊQLHLVWQLHMÈFHJRRELHNWXOXEPHWRG\
NIE MOŻNA UTWORZYĆ TABLICY ZAWIERAJĄCEJ
NIEPRAWIDŁOWA WIELKOŚĆ ZNAKU W NAZWIE
–1 ELEMENTÓW
OBIEKTU DOCUMENT
YDUDQ$UUD\ QHZ$UUD\ -1 );
D RFXPHQWZULWH ij8SVij 5DQJH(UURU$UUD\VL]HLVQRWDVPDOO
HQRXJKSRVLWLYHLQWHJHU
7\SH(UURUijXQGHğQHGijLVQRWDIXQFWLRQ
HYDOXDWLQJij'RFXPHQWZULWH ij8SVij ij
NIEPRAWIDŁOWA WIELKOŚĆ ZNAKU W NAZWIE
METODY WRITE()
document. W ULWH ij8SVij 7\SH(UURUijXQGHğQHGijLVQRWDIXQFWLRQ
HYDOXDWLQJijGRFXPHQW:ULWH ij8SVij ij
METODA NIE ISTNIEJE
YDUER[ ^`
ER[ getArea() ;
8WZRU]HQLHSXVWHJR
RELHNWX
3UöEDX]\VNDQLD
GRVWÚSXGRJHW$UHD 7\SH(UURUijXQGHğQHGijLVQRWDIXQFWLRQ
HYDOXDWLQJijER[JHW$UHD ij
GDY UŻYWANA JEST FUNKCJA TOFIXED(),
PO PRZECINKU DZIESIĘTNYM MOŻE BYĆ
MAKSYMALNIE 20 CYFR
YDUSULFH SULFHWR)L[HG 21 );
5DQJH(UURUWR)L[HG DUJXPHQWPXVWEH
between 0 and 20
GDY UŻYWANA JEST FUNKCJA TOPRECISION(),
LICZBA CYFR MOŻE WYNOSIĆ OD 1 DO 21
num = 2.3456;
num.toPrecision( 22 );
5DQJH(UURUWR3UHFLVLRQ DUJXPHQWPXVW
be between 1 and 21
WĘZEŁ MODELU DOM NIE ISTNIEJE
YDUHO GRFXPHQWJHW(OHPHQW%\,G ’z’);
el.innerHTML = ’Mango’;
7\SH(UURUijQXOOijLVQRWDQREMHFW
(evaluating ’el.innerHTML = ’Mango’’)
NaN
TO NIE JEST BŁĄD
Error
OGÓLNY OBIEKT BŁĘDU
7HQRJöOQ\RELHNWEïÚGXMHVWV]DEORQHP SURWRW\SHP QDSRGVWDZLHNWöUHJRWZRU]RQHVÈZV]\VWNLH
SR]RVWDïHRELHNW\EïÚGX
8ZDJD-HĝHOLSU]HSURZDG]DV]RSHUDFMHPDWHPDW\F]QHQDZDUWRĂFLQLHEÚGÈFHMOLF]EÈWRPRĝHV]
RWU]\PDÊZDUWRĂÊNaNDQLHW\SEïÚGX
TO NIE JEST LICZBA
var total = 3 * ij,Y\ij ;
2%6’8*$%’}'™:,'(%8*2:$1,( 467
JAK RADZIĆ SOBIE Z BŁĘDAMI?
6NRURZLHV]F]\PMHVWEïÈGLMDNMHVWWUDNWRZDQ\SU]H]SU]HJOÈGDUNÚ
PDV]GZDVSRVRE\QDMDNLHPRĝHV]VRELHUDG]LÊ]EïÚGDPL
1. DEBUGOWANIE SKRYPTU W CELU
USUNIĘCIA BŁĘDÓW
-HĝHOLEïÈGQDSRWNDV]SRGF]DVWZRU]HQLDVNU\SWX
OXENWRĂ]JïRVLMHJRLVWQLHQLH PXVLV]GHEXJRZDÊ
NRGZ\ĂOHG]LÊěUöGïREïÚGXDQDVWÚSQLH
XVXQÈÊJR
3U]HNRQDV]VLÚĝHGRVWÚSQHZNDĝGHMQRZRF]HVQHMSU]HJOÈGDUFHLQWHUQHWRZHMQDU]ÚG]LDSURJUDPLVW\F]QHQLH]Z\NOHSRPDJDMÈZW\P]DGDQLX
:UR]G]LDOHSR]QDV]QDU]ÚG]LDSURJUDPLVW\F]QH
RIHURZDQHSU]H]SU]HJOÈGDUNL&KURPHL)LUHIR[
1DU]ÚG]LDGRVWÚSQHZ&KURPHVÈLGHQW\F]QH
]RIHURZDQ\PLSU]H]2SHUÚ 3U]HJOÈGDUNL,(L6DIDULWDNĝHPDMÈZEXGRZDQH
QDU]ÚG]LDSURJUDPLVW\F]QH ZNVLÈĝFHQLHPDP\
Z\VWDUF]DMÈFHMLORĂFLPLHMVFDQDLFKRPöZLHQLH 468 2%6’8*$%’}'™:,'(%8*2:$1,(
2. ELEGANCKA OBSŁUGA BŁĘDÓW
%ïÚG\PRĝQDHOHJDQFNRREVïXĝ\Ê]DSRPRFÈ
SROHFHñWU\catchthrowLğQDOO\
&]DVDPLEïÈGZVNU\SFLHPRĝHZ\VWÈSLÊ
]SRZRGXNWöU\SR]RVWDMHSR]D7ZRMÈNRQWUROÈ
1DSU]\NïDGZ\NRQXMHV]ĝÈGDQLHGDQ\FK]ğUP\
WU]HFLHMDOHMHMVHUZHUQLHRGSRZLDGD:WDNLP
SU]\SDGNXV]F]HJöOQLHZDĝQHMHVWSRVLDGDQLHNRGX
SU]H]QDF]RQHJRGRREVïXJLEïÚGöZ
:GDOV]HMF]ÚĂFLUR]G]LDïXGRZLHV]VLÚMDNPRĝQD
VSUDZG]LÊF]\SHZLHQNRPSRQHQWG]LDïDDWDNĝH
MDN]DRIHURZDÊUR]ZLÈ]DQLHDOWHUQDW\ZQHJG\
ZVSRPQLDQ\NRPSRQHQWQLHG]LDïD
PROCES DEBUGOWANIA
3URFHVGHEXJRZDQLDSU]\SRPLQDGHGXNFMÚF]\OLHOLPLQRZDQLHSRWHQFMDOQ\FK
SU]\F]\QEïÚGX2WRRJöOQ\RSLVWHFKQLNNWöUHEÚG]LHP\DQDOL]RZDÊ
QDNROHMQ\FKVWURQDFK6SUöEXM]DZÚ]LÊPLHMVFHZ\VWÚSRZDQLDEïÚGX
DQDVWÚSQLHSRV]XNDMZVND]öZHN
GDZIE WYSTĘPUJE PROBLEM?
NA CZYM DOKŁADNIE POLEGA PROBLEM?
3U]HGHZV]\VWNLPVSUöEXM]DZÚ]LÊREV]DUQD
NWöU\PZ\VWÚSXMHSUREOHP7RMHVWV]F]HJöOQLH
ZDĝQHZGïXJLFKVNU\SWDFK
.LHG\VÈG]LV]ĝH]QDOD]ïHĂREV]DUZNWöU\P
Z\VWÚSXMHEïÈGPRĝHV]VSUöERZDÊRNUHĂOLÊ
U]HF]\ZLVW\ZLHUV]NRGXSRZRGXMÈF\WHQEïÈG
2GF]\WDMNRPXQLNDWREïÚG]LH
6SUDZGěMDNDMHVWQD]ZDVNU\SWXNWöU\
VSRZRGRZDïEïÈG
8VWDOQXPHUZLHUV]DNRGXZNWöU\PLVWQLHQLH
EïÚGXVWDïRVLÚRF]\ZLVWHGODLQWHUSUHWHUD -DN
]REDF]\V]przyczynaEïÚGXPRĝH]QDMGRZDÊ
VLÚZHZF]HĂQLHMV]HMF]ÚĂFLVNU\SWXZVND]DQ\
ZLHUV]WRSXQNWRGNWöUHJRNRQW\QXRZDQLH
VNU\SWXMHVWQLHPRĝOLZH 2NUHĂOW\SEïÚGX SU]\F]\QDEïÚGXPRĝHE\Ê
LQQD .LHG\]GHğQLXMHV]SXQNW\NRQWUROQHPRĝHV]
VSUDZG]LÊF]\]QDMGXMÈFHVLÚZSREOLĝX]PLHQQH
PDMÈRF]HNLZDQHZDUWRĂFL-HĂOLQLHVSUDZGě
ZF]HĂQLHMV]ÈF]ÚĂÊVNU\SWX
6SUDZGěGRMDNLHJRPLHMVFDMHVWZ\NRQ\ZDQ\
VNU\SW
:\NRU]\VWDMQDU]ÚG]LDGRZ\ĂZLHWODQLDZNRQVROL
NRPXQLNDWöZSRND]XMÈF\FKPLHMVFHGRNWöUHJR
MHVWZ\NRQ\ZDQ\VNU\SW
ľ
ľ
ľ
ľ
3RG]LHONRGQDPQLHMV]HIUDJPHQW\DE\
SU]HWHVWRZDÊPQLHMV]HEORNLSRV]F]HJöOQ\FK
IXQNFMRQDOQRĂFL
:DUWRĂFL]PLHQQ\FKZ\ĂZLHWOZNRQVROL
=SR]LRPXNRQVROLZ\ZRïXMIXQNFMHDE\
VSUDZG]LÊF]\LFKZDUWRĂFL]ZURWQHVÈ]JRGQH
]RF]HNLZDQLDPL
6SUDZGěF]\LVWQLHMÈRELHNW\LPDMÈRF]HNLZDQH
PHWRG\RUD]ZïDĂFLZRĂFL
ľ
ľ
6SUDZGěOLF]EÚSDUDPHWUöZIXQNFMLOXEOLF]EÚ
HOHPHQWöZ]QDMGXMÈF\FKVLÚZWDEOLF\
:PLHMVFDFKSRWHQFMDOQHJRZ\VWÚSRZDQLD
EïÚGöZXĝ\MSXQNWöZNRQWUROQ\FK
6SRZRGXMÈRQHZVWU]\PDQLHZ\NRQ\ZDQLDVNU\SWX
LSR]ZROÈQDSU]HMU]HQLHZDUWRĂFLSU]HFKRZ\ZDQ\FKZ]PLHQQ\FK
3RQDGWRPXVLV]E\ÊSU]\JRWRZDQ\QDSRZWöU]HQLH
FDïHJRSRZ\ĝV]HJRSURFHVXMHĂOLXVXQÈïHĂMHGHQ
EïÈGLW\PVDP\PRGNU\ïHĂNROHMQ\Į
-HĝHOLXWNQÈïHĂUR]ZLÈ]XMÈFSHZQ\SUREOHP
SRGHMPLMMDNVXJHUXMHZLHOXSURJUDPLVWöZ
SUöEÚRSLVDQLD RSRZLHG]HQLDQDJïRV FDïHM
V\WXDFMLLQQHPXSURJUDPLĂFLH:\MDĂQLMMDNLHMHVW
RF]HNLZDQH]DFKRZDQLHDWDNĝHZVNDĝPLHMVFH
ZNWöU\PSRMDZLDVLÚEïÈG0RĝHWRE\ÊHIHNW\ZQ\
VSRVöEZ\V]XNLZDQLDEïÚGöZZHZV]\VWNLFK
MÚ]\NDFKSURJUDPRZDQLD -HĝHOLQLHPRĝHV]
VNRU]\VWDÊ]SRPRF\SURJUDPLVW\VSUöEXMRSLVDÊ
WÚV\WXDFMÚGODVDPHJRVLHELH *G\SUREOHPMHVWWUXGQ\GRZ\ĂOHG]HQLDEDUG]R
ïDWZRVWUDFLÊUDFKXEÚFR]RVWDïRDFRQLH]RVWDïR
VSUDZG]RQH'ODWHJRWHĝRGFKZLOLUR]SRF]ÚFLD
SURFHVXGHEXJRZDQLDQRWXMFR]RVWDïR]URELRQH
LMDNLRWU]\PDïHĂHIHNW1LH]DOHĝQLHRGWHJRMDN
EDUG]RVWUHVXMÈFDEÚG]LHV\WXDFMDMHĂOLW\ONR
]DFKRZDV]VSRNöML]DVWRVXMHV]PHWRG\F]QH
SRGHMĂFLHSUREOHPZ\GDVLÚPQLHMSU]\WïDF]DMÈF\
LV]\EFLHMJRUR]ZLÈĝHV]
2%6’8*$%’}'™:,'(%8*2:$1,( 469
NARZĘDZIA
PROGRAMISTYCZNE
W PRZEGLĄDARKACH
I KONSOLA JAVASCRIPT
']LÚNLNRQVROL-DYD6FULSWPRĝQDGRZLHG]LHÊVLÚĝHZVNU\SFLHLVWQLHMH
SUREOHPJG]LHV]XNDÊSUREOHPXDWDNĝH]MDNLHJRURG]DMXSUREOHPHP
PDP\GRF]\QLHQLD
1DW\FKGZöFKVWURQDFKSU]HGVWDZLRQHVÈ
SROHFHQLDVïXĝÈFHGRZ\ĂZLHWODQLDNRQVROLZH
ZV]\VWNLFKQDMZDĝQLHMV]\FKSU]HJOÈGDUNDFK MHGQDNZSR]RVWDïHMF]ÚĂFLUR]G]LDïXVNRQFHQWUXMHP\
VLÚQD&KURPLHL)LUHIRNVLH CHROME I OPERA
:NRPSXWHUDFK3&QDFLĂQLMNODZLV]F12OXE
3U]HMGěGRPHQXRSFML LNRQDSU]HGVWDZLDMÈFD
WU]\OLQLH :\ELHU]RSFMÚ1DU]ÚG]LDOXE:LÚFHMQDU]ÚG]L
:\ELHU]Konsola JavaScriptOXE1DU]ÚG]LDGOD
programistów
:NRPSXWHUDFK0DFQDFLĂQLMNODZLV]H
$OW&PG-OXE
3U]HMGěGRPHQX:LGRN
:\ELHU]RSFMÚProgramista
:\ELHU]Konsola JavaScriptOXE1DU]ÚG]LDGOD
programistówDQDVWÚSQLHConsole
INTERNET EXPLORER
1DFLĂQLMNODZLV]F12OXE
3U]HMGěGRPHQXXVWDZLHñZSUDZ\PJöUQ\P
URJX
:\ELHU]RSFMÚ1DU]ÚG]LDGHZHORSHUVNLH)
470
2%6’8*$%’}'™:,'(%8*2:$1,(
3URGXFHQFLSU]HJOÈGDUHNF]DVDPL]PLHQLDMÈ
VSRVöEX]\VNDQLDGRVWÚSXGRQDU]ÚG]LSURJUDPLVW\F]Q\FK-HĝHOLSU]HGVWDZLRQHWXWDMLQVWUXNFMH
RNDĝÈVLÚQLHSU]\GDWQHSU]HV]XNDMSOLNLSRPRF\
SU]HJOÈGDUNLSRGNÈWHPKDVïDkonsola
.RQVROD-DYD6FULSWWRMHGQR]ZLHOXQDU]ÚG]LSURJUDPLVW\F]Q\FKRIHURZDQ\FK
SU]H]ZV]\VWNLHQRZRF]HVQHSU]HJOÈGDUNLLQWHUQHWRZH
.LHG\SU]HSURZDG]DV]SURFHVGHEXJRZDQLD
SRPRFQHPRĝHE\ÊVSUDZG]HQLHF]\GDQ\EïÈG
Z\VWÚSXMHZUöĝQ\FKSU]HJOÈGDUNDFKSRQLHZDĝ
JHQHUXMÈRQHUöĝQHNRPXQLNDW\REïÚGDFK
-HĝHOLSOLNerror.htmlRWZRU]\V]ZSU]HJOÈGDUFH
DQDVWÚSQLHSU]HMG]LHV]GRNRQVROLWR]REDF]\V]
Z\ĂZLHWORQ\NRPXQLNDWREïÚG]LH
FIREFOX
:NRPSXWHUDFK3&QDFLĂQLMNODZLV]H
Ctrl+Shift+KOXE
3U]HMGěGRPHQX1DU]ÚG]LD
:\ELHU]Dla twórców witryn
2WZöU]Konsola WWW
:NRPSXWHUDFK0DFQDFLĂQLMNODZLV]H
$OW&PG.OXE
3U]HMGěGRPHQX1DU]ÚG]LD
:\ELHU]Dla twórców witryn
2WZöU]Konsola WWW
SAFARI
1DFLĂQLMNODZLV]H$OW&PG.OXE
3U]HMGěGRPHQXProgramowanie
:\ELHU]RSFMÚ3RNDĝNRQVROÚEïÚGöZ
-HĝHOLPHQXProgramowanieQLHMHVWZ\ĂZLHWODQH
3U]HMGěGRPHQXSafari
:\ELHU]Preferencje…
:\ELHU]Zaawansowane
=D]QDF]SROHZ\ERUXPokazuj menu
Programowanie na pasku menu
2%6’8*$%’}'™:,'(%8*2:$1,(
471
JAK WYSZUKIWAĆ
BŁĘDY ZA POMOCĄ
PRZEGLĄDARKI CHROME?
.RQVROD]RVWDQLHZ\ĂZLHWORQDJG\ZNRG]LH-DYD6FULSWZ\VWÈSLEïÈG
.RQVRODEÚG]LHZ\ĂZLHWODïDZLHUV]ZNWöU\PLVWQLHQLHEïÚGXVWDïRVLÚ
RF]\ZLVWHGODLQWHUSUHWHUD
1
3
2
=D]QDF]RQRRSFMÚConsole
7\SEïÚGXRUD]NRPXQLNDW
REïÚG]LHVÈZ\ĂZLHWORQH
ZNRORU]HF]HUZRQ\P
1D]ZDSOLNXLQXPHUZLHUV]D
VÈZ\ĂZLHWORQHSRSUDZHM
VWURQLHNRQVROL
3DPLÚWDMĝHSRGDQ\QXPHU
ZLHUV]DQLH]DZV]HZVND]XMH
ZLHUV]ZNWöU\PIDNW\F]QLH
LVWQLHMHEïÈG=DPLDVWWHJRRNUHĂODZLHUV]ZNWöU\PLVWQLHQLH
EïÚGXVWDïRVLÚRF]\ZLVWHGOD
LQWHUSUHWHUD
2%6’8*$%’}'™:,'(%8*2:$1,(
-HĝHOLEïÈGXQLHPRĝOLZLGDOV]H
Z\NRQ\ZDQLHVNU\SWXNRQVROD
EÚG]LH]DZLHUDïDLQIRUPDFMH
W\ONRRMHGQ\PEïÚG]LH
3RXVXQLÚFLXEïÚGXPRĝHVLÚ
RND]DÊĝHZVNU\SFLHLVWQLHMÈ
MHV]F]HLQQH
JAK WYSZUKIWAĆ
BŁĘDY ZA POMOCĄ
PRZEGLĄDARKI FIREFOX?
1
2
3
=D]QDF]RQRRSFMÚConsole
:ïÈF]RQHPXV]ÈE\ÊMHG\QLH
RSFMHJavaScriptLLogging
1DWRPLDVWRSFMHNetCSS
LSecurityGRVWDUF]DMÈLQQH
LQIRUPDFMH
4
7\SEïÚGXRUD]NRPXQLNDW
REïÚG]LHVÈZ\ĂZLHWODQHSR
OHZHMVWURQLH
3RSUDZHMVWURQLHNRQVROL
MHVWZ\ĂZLHWODQDQD]ZDSOLNX
-DYD6FULSWRUD]QXPHUZLHUV]D
ZNWöU\PLVWQLHQLHEïÚGXVWDïR
VLÚRF]\ZLVWH
=ZUöÊXZDJÚĝHSRGF]DVGHEXJRZDQLD]PLQLPDOL]RZDQHJR
NRGX-DYD6FULSWRSHUDFMDEÚG]LH
ïDWZLHMV]DMHĝHOLNRG]RVWDQLH
QDMSLHUZUR]ZLQLÚW\
2%6’8*$%’}'™:,'(%8*2:$1,( WYDAWANIE POLECEŃ
W KONSOLI PRZEGLĄDARKI
CHROME
:NRQVROLPRĝQDUöZQLHĝZ\GDZDÊSROHFHQLD
LREVHUZRZDÊZ\QLNLLFKZ\NRQ\ZDQLD
1
3RZ\ĝHMPRĝHV]]REDF]\Ê
SU]\NïDGNRGX-DYD6FULSW
ZSURZDG]DQHJREH]SRĂUHGQLR
ZNRQVROL7RMHVWVSRVöEQD
V]\ENLHLïDWZHWHVWRZDQLHNRGX
474
*G\ZSURZDG]DV]ZLHUV]
NRGXLQWHUSUHWHUPRĝHXG]LHOLÊ
RGSRZLHG]L:RPDZLDQ\P
SU]\NïDG]LHWRZ\ĂZLHWOHQLH
ZDUWRĂFLNDĝGHMXWZRU]RQHM
]PLHQQHM
2%6’8*$%’}'™:,'(%8*2:$1,(
:V]\VWNLH]PLHQQHXWZRU]RQH
ZNRQVROLEÚGÈ]DFKRZDQHDĝ
GRFKZLOLXVXQLÚFLD]DZDUWRĂFL
NRQVROL
:SU]HJOÈGDUFH&KURPH]QDN
ķ]DND]ZMD]GXĵMHVWXĝ\ZDQ\
GRXVXQLÚFLD]DZDUWRĂFLNRQVROL
WYDAWANIE POLECEŃ
W KONSOLI PRZEGLĄDARKI
FIREFOX
1
2
:SU]HJOÈGDUFH)LUHIR[
SU]\FLVNClearMHVWXĝ\ZDQ\
GRXVXQLÚFLD]DZDUWRĂFLNRQVROL
-HJRNOLNQLÚFLHLQIRUPXMH
LQWHUSUHWHUĝHQLHPXVLGïXĝHM
SDPLÚWDÊ]PLHQQ\FKXWZRU]RQ\FKGRWÈGZNRQVROL
6WU]DïNLZOHZRLSUDZR
SRND]XMÈZLHUV]HZSURZDG]RQH
SU]H]SURJUDPLVWÚRUD]ZLHUV]H
Z\JHQHURZDQHSU]H]LQWHUSUHWHU
2%6’8*$%’}'™:,'(%8*2:$1,(
475
WYŚWIETLANIE PRZEZ SKRYPT
INFORMACJI W KONSOLI
3U]HJOÈGDUNLLQWHUQHWRZHZ\SRVDĝRQHZNRQVROÚPDMÈRELHNWconsole
RIHUXMÈF\NLONDPHWRG]DSRPRFÈNWöU\FKVNU\SWPRĝHZ\ĂZLHWODÊGDQH
ZNRQVROL7HQRELHNWMHVWXGRNXPHQWRZDQ\Z$3,&RQVROH
1
2
3
0HWRGDconsole.log()
PRĝHZ\ĂZLHWODÊZNRQVROL
GDQHSRFKRG]ÈFH]HVNU\SWX
-HĝHOLRWZRU]\V]SOLN
console-log.html]REDF]\V]
ĝHSRZF]\WDQLXVWURQ\
ZNRQVROL]RVWDQLHZ\ĂZLHWORQ\
WHNVW
476
:VSRPQLDQ\WHNVWPRĝH
ZVND]DÊGRNWöUHJRPLHMVFD
MHVWZ\NRQ\ZDQ\VNU\SWRUD]
MDNLHRWU]\PXMHZDUWRĂFL
:RPDZLDQ\PSU]\NïDG]LH
]GDU]HQLHblurSRZRGXMHĝH
ZDUWRĂÊZSURZDG]DQDZSROX
WHNVWRZ\PMHVWZ\ĂZLHWODQD
ZNRQVROL
2%6’8*$%’}'™:,'(%8*2:$1,(
:\ĂZLHWOHQLH]PLHQQ\FK
SR]ZDODQDVSUDZG]HQLHMDNLH
VÈLFKZDUWRĂFLZLGRF]QHGOD
LQWHUSUHWHUD:RPDZLDQ\P
SU]\NïDG]LHZDUWRĂFL]PLHQQ\FK
VÈZ\ĂZLHWODQHZNRQVROLSR
Z\VïDQLXIRUPXODU]DVLHFLRZHJR
WYŚWIETLANIE DANYCH
W KONSOLI
:SU]HGVWDZLRQ\PSU]\NïDG]LH
SRND]DQRZLHOHZ\ZRïDñ
PHWRG\console.log()
.LHG\Xĝ\WNRZQLNZ\ĂOH
IRUPXODU]VLHFLRZ\Z\ĂZLHWORQH
EÚGÈF]WHU\ZDUWRĂFL
:LHUV]SLHUZV]\ZVND]XMHĝH
VNU\SW]RVWDïXUXFKRPLRQ\
1DVWÚSQLHSURFHGXUDREVïXJL
]GDU]HñF]HNDDĝXĝ\WNRZQLN
ZSURZDG]LGDQHZSROXWHNVWRZ\PZSURZDG]RQDZIRUPXODU]XVLHFLRZ\PZDUWRĂÊEÚG]LH
Z\ĂZLHWORQDZNRQVROL
8ĝ\WNRZQLNNOLNQÈïSU]\FLVN
Z\V\ïDMÈF\IRUPXODU]
:DUWRĂÊZSURZDG]RQD
ZSROX'ïXJRĂÊ
:DUWRĂÊZSURZDG]RQD
ZSROX:\VRNRĂÊ
:DUWRĂÊ]PLHQQHMarea
0HWRGDconsole.log()PRĝH
MHGQRF]HĂQLHZ\ĂZLHWODÊZLHOH
ZDUWRĂFLZNRQVROL0XV]ÈE\Ê
RQHUR]G]LHORQHSU]HFLQNDPL
MDNSRND]DQRSRGF]DVZ\ĂZLHWODQLDZ\VRNRĂFL(5)
']LÚNLZ\ĂZLHWOHQLXZ\PLHQLRQ\FKGDQ\FKPRĝQDVSUDZG]LÊ
JAVASCRIPT
1
2
F]\ZDUWRĂFLVÈ]JRGQH
]RF]HNLZDQLDPL
3U]HGXĝ\FLHPVNU\SWX
ZU]HF]\ZLVWHMZLWU\QLHWHJR
URG]DMXNRGGHEXJXMÈF\]DZV]H
QDOHĝ\XVXZDÊ
c10/js/console-log.js
FRQVROHORJ ij,RWRMHVWHĂP\ij :VND]XMHĝHVNU\SW]RVWDïXUXFKRPLRQ\
var $form, width, height, area;
$form = $(’#calculator’);
ijIRUPLQSXW>W\SH ĵWH[Wĵ@ij RQ ijEOXUijIXQFWLRQ ^
.LHG\SROHSU]HVWDMHE\ÊDNW\ZQH
FRQVROHORJ ij:SURZDG]LïHĂijWKLVYDOXH :\ĂZLHWOHQLHZDUWRĂFLZNRQVROL
});
3
$(’#calculator’).on(’submit’, function(e) {
.LHG\Xĝ\WNRZQLNQDFLĂQLHSU]\FLVNZ\V\ïDMÈF\IRUPXODU]
HSUHYHQW'HIDXOW 8QLHPRĝOLZLHQLHZ\VïDQLDIRUPXODU]D
FRQVROHORJ ij.OLNQÈïHĂSU]\FLVNij :VND]XMHNOLNQLÚFLHSU]\FLVNX
4
width = $(’#width’).val();
FRQVROHORJ ij'ïXJRĂÊijZLGWK :\ĂZLHWOHQLHZNRQVROLZDUWRĂFLGïXJRĂFL
5
height = $(’#height’).val();
FRQVROHORJ ij:\VRNRĂÊijKHLJKW :\ĂZLHWOHQLHZNRQVROLZDUWRĂFLZ\VRNRĂFL
6
area = width * height;
console.log(area);
:\ĂZLHWOHQLHZNRQVROLZDUWRĂFLSROD
IRUPDSSHQG ijS!ijDUHDijS!ij
});
2%6’8*$%’}'™:,'(%8*2:$1,( 477
WIĘCEJ METOD KONSOLI
:FHOXUR]UöĝQLHQLDURG]DMöZ
NRPXQLNDWöZZ\ĂZLHWODQ\FK
ZNRQVROLPRĝQDXĝ\ÊWU]HFK
UöĝQ\FKPHWRG:\NRU]\VWXMÈ
RQHRGPLHQQHNRORU\LLNRQ\
0HWRGDconsole.info()
PRĝHE\ÊXĝ\ZDQDGRZ\ĂZLHWODQLDLQIRUPDFMLRJöOQ\FK
0HWRGDconsole.warn()
PRĝHE\ÊXĝ\ZDQDGRZ\ĂZLHWODQLDRVWU]HĝHñ
0HWRGDconsole.error()
PRĝHE\ÊXĝ\ZDQDGRZ\ĂZLHWODQLDNRPXQLNDWöZREïÚGDFK
c10/js/console-methods.js
1
7HFKQLNDWDV]F]HJöOQLH
SU]\GDMHVLÚGRZVND]\ZDQLD
QDWXU\LQIRUPDFMLZ\ĂZLHWODQ\FK
QDHNUDQLH :SU]\SDGNX
SU]HJOÈGDUNL)LUHIR[XSHZQLM
VLÚĝHZ\EUDQD]RVWDïDRSFMD
Logging JAVASCRIPT
FRQVROHLQIR ij,RWRMHVWHĂP\ij ,QIRVNU\SW]RVWDïXUXFKRPLRQ\
var $form, width, height, area;
$form = $(’#calculator’);
2
ijIRUPLQSXW>W\SH ĵWH[Wĵ@ij RQ ijEOXUijIXQFWLRQ ^
3RZ\VWÈSLHQLX]GDU]HQLDEOXU
FRQVROHZDUQ ij:SURZDG]LïHĂijWKLVYDOXH 2VWU]HĝHQLHZSURZDG]RQHGDQH
});
$(’#calculator’).on(’submit’, function(e) {
HSUHYHQW'HIDXOW 3RZ\VïDQLXIRUPXODU]DVLHFLRZHJR
width = $(’#width’).val();
height = $(’#height’).val();
3
area = width * height;
console.error(area);
%ïÈGZ\ĂZLHWOHQLHREOLF]RQHJRSROD
IRUPDSSHQG ijSFODVV ĵUHVXOWĵ!ijDUHDijS!ij 478
2%6’8*$%’}'™:,'(%8*2:$1,(
GRUPOWANIE KOMUNIKATÓW
-HĝHOLZNRQVROLFKFHV]
Z\ĂZLHWOLÊ]ELöUSRZLÈ]DQ\FK]HVREÈLQIRUPDFML
PRĝHV]Z\NRU]\VWDÊPHWRGÚ
FRQVROHJURXS ZFHOXJUXSRZDQLDNRPXQLNDWöZ1DVWÚSQLH
UR]ZLMDV]LZ\ĂZLHWODV]Z\QLNL
0HWRGDSRELHUDMHGHQSDUDPHWU
QD]ZÚXĝ\ZDQÈGODJUXS\
NRPXQLNDWöZ=DZDUWRĂÊJUXS\
PRĝQDUR]ZLMDÊLXNU\ZDÊ
NOLNDMÈFWUöMNÈWZ\ĂZLHWODQ\
RERNQD]Z\JUXS\MDNSRND]DQRQDU\VXQNXSRQLĝHM
JAVASCRIPT
3R]DNRñF]HQLXJUXSRZDQLD
Z\QLNöZNRQLHFJUXS\MHVW
V\JQDOL]RZDQ\Z\ZRïDQLHP
PHWRG\FRQVROHJURXS(QG FMVFRQVROHJURXSMV
var $form = $(’#calculator’);
$form.on(’submit’, function(e) {
.RGZ\NRQ\ZDQ\SRZ\VïDQLXIRUPXODU]D
HSUHYHQW'HIDXOW FRQVROHORJ ij.OLNQÈïHĂSU]\FLVNij :\ĂZLHWOHQLHLQIRUPDFMLRNOLNQLÚW\PSU]\FLVNX
var width, height, area;
width = $(’#width’).val();
height = $(’#height’).val();
area = width * height;
1
2
FRQVROHJURXS ij2EOLF]HQLHSRODij 3RF]ÈWHNJUXSRZDQLD
FRQVROHLQIR ij6]HURNRĂÊijZLGWK :\ĂZLHWOHQLHGïXJRĂFL
FRQVROHLQIR ij:\VRNRĂÊijKHLJKW :\ĂZLHWOHQLHZ\VRNRĂFL
console.log(area);
:\ĂZLHWOHQLHSROD
FRQVROHJURXS(QG .RQLHFJUXSRZDQLD
IRUPDSSHQG ijS!ijDUHDijS!ij });
2%6’8*$%’}'™:,'(%8*2:$1,(
479
WYŚWIETLENIE DANYCH
TABELARYCZNYCH
:SU]HJOÈGDUNDFKREVïXJXMÈF\FKPHWRGÚconsole.table()
PRĝQDZ\ĂZLHWOLÊGDQH
Z\MĂFLRZHZSRVWDFLWDEHOL
]DZLHUDMÈFH
RELHNW\
WDEOLFH]DZLHUDMÈFHLQQH
RELHNW\OXEWDEOLFH
ľ
ľ
3U]HGVWDZLRQ\SRQLĝHMSU]\NïDG
SRND]XMHGDQHSRFKRG]ÈFH
]RELHNWXcontacts:\ĂZLHWODQHVÈQDVWÚSXMÈFHGDQH
PLDVWRQXPHUWHOHIRQXLNUDM
7RUR]ZLÈ]DQLHV]F]HJöOQLH
Xĝ\WHF]QHZSU]\SDGNXGDQ\FK
SRFKRG]ÈF\FK]ğUPWU]HFLFK
1DU\VXQNXSRQLĝHMSRND]DQR
Z\QLNX]\VNDQ\ZSU]HJOÈGDUFH
&KURPH Z2SHU]HEÚG]LH
LGHQW\F]Q\ 6DIDULZ\ĂZLHWOL
UR]ZLMDQHSDQHOH*G\SRZVWDZDïDWDNVLÈĝNDSU]HJOÈGDUNL
)LUHIR[L,(QLHREVïXJLZDï\WHM
PHWRG\
c10/js/console-table.js
JAVASCRIPT
var contacts = {
,QIRUPDFMHVÈSU]HFKRZ\ZDQHZSRVWDFLOLWHUDïXRELHNWX
Ĵ/RQG\Qĵ^
Ĵ7HOĵĴ ĵ
Ĵ.UDMĵĴ8.ĵ`
Ĵ6\GQH\ĵ^
Ĵ7HOĵĴ ĵ
Ĵ.UDMĴĴ$XVWUDOLDĵ`
Ĵ1RZ\-RUNĵ^
Ĵ7HOĵĴ ĵ
Ĵ.UDMĴĴ86$ĵ`
}
1
console.table(contacts);
:\ĂZLHWOHQLHGDQ\FKZNRQVROL
YDUFLW\FRQWDFW'HWDLOV=DGHNODURZDQLH]PLHQQ\FKGODVWURQ\
contactDetails = ’’;
=PLHQQDSU]H]QDF]RQDQDGDQHZ\ĂZLHWODQHQDVWURQLH
HDFK FRQWDFWVIXQFWLRQ FLW\FRQWDFWV ^,WHUDFMDSU]H]GDQH
FRQWDFW'HWDLOV FLW\ijijFRQWDFWV7HOijEU!ij
});
ijKij DIWHU ijS!ijFRQWDFW'HWDLOVijS!ij 8PLHV]F]HQLHGDQ\FKQDVWURQLH
480 2%6’8*$%’}'™:,'(%8*2:$1,(
WYŚWIETLANIE WARUNKOWE
=DSRPRFÈPHWRG\
console.assert()PRĝQD
VSUDZG]LÊF]\SRGDQ\ZDUXQHN
]RVWDïVSHïQLRQ\LZ\ĂZLHWOLÊ
NRPXQLNDWW\ONRZWHG\JG\
ZDUWRĂFLÈZ\UDĝHQLDMHVWtrue
:SU]HGVWDZLRQ\PSRQLĝHM
SU]\NïDG]LHJG\Xĝ\WNRZQLN
ZSURZDG]LGDQHZHMĂFLRZHNRG
VSUDZG]LF]\ZDUWRĂÊZ\QRVL
10OXEZLÚFHM-HĝHOLQLHQD
HNUDQLH]RVWDQLHZ\ĂZLHWORQ\
NRPXQLNDW
JAVASCRIPT
'UXJDRSHUDFMDVSUDZG]HQLD
GRW\F]\REOLF]RQHJRSRODNWöUH
SRZLQQRE\ÊZDUWRĂFLÈOLF]ERZÈ-HĝHOLQLHMHVWR]QDF]D
WRĝHXĝ\WNRZQLNZSURZDG]Lï
ZDUWRĂÊLQQÈQLĝOLF]ERZD
c10/js/console-assert.js
var $form, width, height, area;
$form = $(’#calculator’);
1
ijIRUPLQSXW>W\SH ĵWH[Wĵ@ij RQ ijEOXUijIXQFWLRQ ^
7HQNRPXQLNDW]RVWDQLHZ\ĂZLHWORQ\W\ONRZWHG\JG\ZDUWRĂÊZSURZDG]RQD
SU]H]Xĝ\WNRZQLNDMHVWPQLHMV]DQLĝ
FRQVROHDVVHUW WKLVYDOXH!ij8ĝ\WNRZQLNZSURZDG]LïZDUWRĂÊPQLHMV]ÈQLĝij });
$(’#calculator’).on(’submit’, function(e) {
HSUHYHQW'HIDXOW FRQVROHORJ ij.OLNQÈïHĂSU]\FLVNij 2
width = $(’#width’).val();
height = $(’#height’).val();
area = width * height;
7HQNRPXQLNDW]RVWDQLHZ\ĂZLHWORQ\W\ONRZWHG\JG\ZDUWRĂÊZSURZDG]RQD
SU]H]Xĝ\WNRZQLNDQLHMHVWOLF]ERZD
FRQVROHDVVHUW LV1XPHULF DUHD ij8ĝ\WNRZQLNZSURZDG]LïZDUWRĂÊQLHOLF]ERZÈij IRUPDSSHQG ijS!ijDUHDijS!ij });
2%6’8*$%’}'™:,'(%8*2:$1,( 481
PUNKTY KONTROLNE
:\NRQ\ZDQLHVNU\SWXPRĝHV]]DWU]\PDÊZGRZROQ\PZLHUV]X]DSRPRFÈ
SXQNWXNRQWUROQHJR1DVWÚSQLHPDV]PRĝOLZRĂÊVSUDZG]HQLDZDUWRĂFL
SU]HFKRZ\ZDQ\FKSU]H]]PLHQQHZGDQHMFKZLOL
1
CHROME
4
2
3
1.:\ELHU]RSFMÚSources
2.:SDQHOXSROHZHMVWURQLH
Z\ELHU]VNU\SW]NWöU\P
SUDFXMHV].RGVNU\SWX]RVWDQLH
Z\ĂZLHWORQ\ZSDQHOXSR
SUDZHMVWURQLH
3.:\V]XNDMQXPHUZLHUV]D
ZNWöU\PPD]RVWDÊ]DWU]\PDQ\
VNU\SW.OLNQLMWHQZLHUV]
4.3RXUXFKRPLHQLXVNU\SWX
MHJRG]LDïDQLH]RVWDQLH]DWU]\
PDQHZHZVND]DQ\PZLHUV]X
*G\XPLHĂFLV]NXUVRUP\V]\
QDGQD]ZÈGRZROQHM]PLHQQHM
PRĝHV]VSUDZG]LÊMHMZDUWRĂÊ
ZWUDNFLHZ\NRQ\ZDQLDVNU\SWX
1
FIREFOX
4
2
3
2%6’8*$%’}'™:,'(%8*2:$1,(
1.:\ELHU]RSFMÚ'HEXJJHU
2.:SDQHOXSROHZHMVWURQLH
Z\ELHU]VNU\SW]NWöU\P
SUDFXMHV].RGVNU\SWX]RVWDQLH
Z\ĂZLHWORQ\ZSDQHOXSR
SUDZHMVWURQLH
3.:\V]XNDMQXPHUZLHUV]D
ZNWöU\PPD]RVWDÊ]DWU]\PDQ\
VNU\SW.OLNQLMWHQZLHUV]
4.3RXUXFKRPLHQLXVNU\SWX
MHJRG]LDïDQLH]RVWDQLH]DWU]\
PDQHZHZVND]DQ\PZLHUV]X
*G\XPLHĂFLV]NXUVRUP\V]\
QDGQD]ZÈGRZROQHM]PLHQQHM
EÚG]LHV]PöJïVSUDZG]LÊMHM
ZDUWRĂÊZWUDNFLHZ\NRQ\ZDQLD
VNU\SWX
PRZEJŚCIE PRZEZ KOD
-HĝHOLXVWDZLV]NLONDSXQNWöZNRQWUROQ\FKWRPRĝHV]VLÚPLÚG]\QLPL
SRUXV]DÊDE\VSUDZG]LÊJG]LHZDUWRĂFLXOHJDMÈ]PLDQLHLJG]LHPRJÈ
SRMDZLDÊVLÚSUREOHP\
3RXVWDZLHQLXSXQNWöZNRQ
WUROQ\FK]REDF]\V]ĝHGHEXJHU
SR]ZDODQDSU]HMĂFLHSU]H]NRG
ZLHUV]SRZLHUV]XLSRGJOÈGDQLH
ZDUWRĂFL]PLHQQ\FKZWUDNFLH
Z\NRQ\ZDQLDVNU\SWX
-HĝHOLZWUDNFLHWHMRSHUDFML
GHEXJHUGRWU]HGRIXQNFMLWR
SU]HFKRG]LGRSLHUZV]HJRZLHU
V]DSRWHMIXQNFML 1LHSU]HFKR
G]LGRPLHMVFD]GHğQLRZDQLD
IXQNFML 7DNLH]DFKRZDQLHMHVW
F]DVHPRNUHĂODQHPLDQHP
VWHSSLQJRYHU
,VWQLHMHWHĝPRĝOLZRĂÊQDND
]DQLDGHEXJHURZLZHMĂFLDGR
IXQNFMLLVSUDZG]HQLDFRVLÚ
G]LHMHZMHMZQÚWU]X
3U]HJOÈGDUNL&KURPHL)LUHIR[RIHUXMÈSRGREQHQDU]ÚG]LDSU]H]QDF]R
QHGRSRUXV]DQLDVLÚPLÚG]\SXQNWDPLNRQWUROQ\PL
1
2
3
4
1
2
3
4
3DX]DMHVWZ\ĂZLHWODQDGRSöNLLQWHUSUHWHUQLHGRWU]HGRSXQNWX
NRQWUROQHJR*G\LQWHUSUHWHU]DWU]\PDVLÚZSXQNFLHNRQWUROQ\P
Z\ĂZLHWODQ\MHVWSU]\FLVNPlay.OLNDMÈFJRPRĝHV]QDND]DÊ
LQWHUSUHWHURZLZ]QRZLHQLHZ\NRQ\ZDQLDNRGX
3U]\FLVNWHQSRZRGXMHSU]HMĂFLHGRNROHMQHJRZLHUV]DNRGX
LSU]HMĂFLHSU]H]NRGZLHUV]SRZLHUV]X ]DPLDVWZ\NRQ\ZDÊNRG
QDMV]\EFLHMMDNWRPRĝOLZH :HMĂFLHGRZQÚWU]DIXQNFML'HEXJHUSU]HMG]LHGRSLHUZV]HJR
ZLHUV]DZWHMIXQNFML
:\MĂFLH]ELHĝÈFHMIXQNFML3R]RVWDïDF]ÚĂÊIXQNFML]RVWDQLH
Z\NRQDQDJG\GHEXJHUSU]HMG]LHGRNRPSRQHQWXQDGU]ÚGQHJRGDQHM
IXQNFML
2%6’8*$%’}'™:,'(%8*2:$1,( WARUNKOWE PUNKTY
KONTROLNE
0RĝQDRNUHĂOLÊE\GDQ\SXQNWNRQWUROQ\E\ïZ\ZRï\ZDQ\W\ONRZWHG\
JG\VSHïQLRQ\]RVWDQLHSRGDQ\ZDUXQHN:HZVSRPQLDQ\PZDUXQNX
PRĝQDXĝ\ZDÊLVWQLHMÈF\FK]PLHQQ\FK
CHROME
3UDZ\PSU]\FLVNLHPP\V]\
NOLNQLMQXPHUZLHUV]D
:\ELHU]RSFMÚ$GG&RQGLWLR
nal Breakpoint…
:Z\ĂZLHWORQ\PRNQLH
ZSURZDGěZDUXQHN
.LHG\XUXFKRPLV]VNU\SW
ZW\PZLHUV]XMHJRZ\NRQ\ZD
QLH]DWU]\PDVLÚW\ONRZWHG\
JG\ZDUXQHNSU]\MPLHZDUWRĂÊ
true QDSU]\NïDGMHĂOLZDUWRĂÊ
]PLHQQHMareaEÚG]LHPQLHMV]D
QLĝ20 FIREFOX
3UDZ\PSU]\FLVNLHPP\V]\
NOLNQLMQXPHUZLHUV]D
:\ELHU]RSFMÚ$GG&RQGLWLR
nal Breakpoint
:Z\ĂZLHWORQ\PRNQLH
ZSURZDGěZDUXQHN
.LHG\XUXFKRPLV]VNU\SW
ZW\PZLHUV]XMHJRZ\NRQ\ZD
QLH]DWU]\PDVLÚW\ONRZWHG\
JG\ZDUXQHNSU]\MPLHZDUWRĂÊ
true QDSU]\NïDGMHĂOLZDUWRĂÊ
]PLHQQHMareaEÚG]LHPQLHMV]D
QLĝ20 484 2%6’8*$%’}'™:,'(%8*2:$1,(
SŁOWO KLUCZOWE DEBUGGER
3XQNWNRQWUROQ\ZNRG]LH
PRĝQDXWZRU]\Ê]DSRPRFÈ
VïRZDNOXF]RZHJRdebugger
.LHG\QDU]ÚG]LDSURJUDPL
VW\F]QHVÈXUXFKRPLRQHWR
SXQNWNRQWUROQ\WZRU]RQ\MHVW
DXWRPDW\F]QLH
,VWQLHMHUöZQLHĝPRĝOLZRĂÊ
XPLHV]F]HQLDVïRZDNOXF]RZHJR
debuggerZSROHFHQLXZDUXQ
NRZ\PDE\SXQNWNRQWUROQ\E\ï
WZRU]RQ\MHG\QLHSRVSHïQLHQLX
ZVND]DQHJRZDUXQNX7DNLH
UR]ZLÈ]DQLH]DVWRVRZDQR
ZSU]HGVWDZLRQ\PSRQLĝHM
NRG]LH
JAVASCRIPT
6]F]HJöOQLHZDĝQHMHVWXVXQLÚ
FLHW\FKSROHFHñSU]HGXPLHV]
F]HQLHPNRGXZU]HF]\ZLVWHM
ZLWU\QLHLQWHUQHWRZHMSRQLHZDĝ
PRJÈRQH]DWU]\PDÊG]LDïDQLH
VNU\SWXMHĂOLXĝ\WNRZQLNEÚG]LH
PLDïXUXFKRPLRQHQDU]ÚG]LD
SURJUDPLVW\F]QH
FMVEUHDNSRLQWVMV
var $form, width, height, area;
$form = $(’#calculator’);
$(’#calculator’).on(’submit’, function(e) {
HSUHYHQW'HIDXOW FRQVROHORJ ij.OLNQÈïHĂSU]\FLVNij width = $(’#width’).val();
height = $(’#height’).val();
area = (width * height);
if (area < 100) {
debugger;
3XQNWNRQWUROQ\EÚG]LHXVWDZLRQ\MHĂOL
XUXFKRPLRQHVÈQDU]ÚG]LDSURJUDPLVW\F]QH
}
IRUPDSSHQG ijS!ijDUHDijS!ij });
-HĝHOLG\VSRQXMHV]VHUZHUHP
URERF]\PNRGGHEXJXMÈF\
PRĝQDXPLHĂFLÊZSROHFHQLX
ZDUXQNRZ\PNWöUHVSUDZG]D
F]\VNU\SW]RVWDïXUXFKRPLRQ\
]RNUHĂORQHJRVHUZHUD .RG
GHEXJXMÈF\EÚG]LHZ\NRQDQ\
W\ONRSRXUXFKRPLHQLXVNU\SWX
]HZVND]DQHJRVHUZHUD 2%6’8*$%’}'™:,'(%8*2:$1,( 485
OBSŁUGA WYJĄTKÓW
-HĝHOLVSRG]LHZDV]VLÚDZDULLNRGXXĝ\MSROHFHñWU\catchLğQDOO\
.DĝGH]W\FKSROHFHñPDZïDVQ\EORNNRGX
WU\^
3UöEDZ\NRQDQLDWHJRNRGX
`FDWFK H[FHSWLRQ ^
-HĝHOLQDVWÈSL]JïRV]HQLHZ\MÈWNXXUXFKRPWHQNRG
`ğQDOO\^
7HQNRG]DZV]HEÚG]LHZ\NRQDQ\
}
TRY
CATCH
FINALLY
:EORNXWU\QDOHĝ\XPLHĂFLÊ
NRGNWöU\ZHGïXJ&LHELHPRĝH
]JïRVLÊZ\MÈWHN
-HĝHOLEORNWU\]JïRVLZ\MÈWHN
GRJU\ZFKRG]LEORNcatchZUD]
]DOWHUQDW\ZQ\PNRGHP
=DZDUWRĂÊEORNXğQDOO\EÚG]LH
Z\NRQDQDQLH]DOHĝQLHRGWHJR
MDNLPZ\QLNLHP]DNRñF]\ïRVLÚ
Z\NRQDQLHNRGXZEORNXWU\
-HĝHOLZ\MÈWHN]RVWDQLH
]JïRV]RQ\ZW\PEORNXNRGX
NRQWUROD]RVWDQLHDXWRPDW\F]QLH
SU]HND]DQDGRRGSRZLHGQLHJR
EORNXcatch
7XWDMZ\VWÚSXMHW\ONRMHGHQ
SDUDPHWURELHNWEïÚGX
:SUDZG]LHMHVWRSFMRQDOQ\DOH
QLHREVïXĝ\V]EïÚGXMHĂOLWHJR
EïÚGXQLHSU]HFKZ\FLV]
.ODX]XODWU\PXVLE\ÊXĝ\WD
ZWHJRURG]DMXNRG]LHSU]H]QDF]RQ\PGRREVïXJLEïÚGöZ
L]DZV]HSRZLQLHQWRZDU]\V]\Ê
MHMEORNcatchDOERğQDOO\OXE
REDMHGQRF]HĂQLH
0RĝOLZRĂÊSU]HFKZ\FHQLDEïÚGX
PRĝHE\ÊEDUG]RXĝ\WHF]QD
MHĂOLZ\VWÚSXMÈSUREOHP\
ZZLWU\QLHLQWHUQHWRZHMXGRVWÚSQLRQHMSXEOLF]QLH
-HĝHOLZEORNXWU\]RVWDQLH]DVWRVRZDQHSROHFHQLHcontinue
EUHDNOXEreturnWRQDVWÈSL
SU]HMĂFLHGREORNXğQDOO\
:WHQVSRVöE]\VNXMHV]
PRĝOLZRĂÊSRLQIRUPRZDQLD
Xĝ\WNRZQLNöZRHZHQWXDOQ\FK
SUREOHPDFK ]DPLDVW]XSHïQHJR
EUDNXLQIRUPDFMLRW\PĝHZLWU\QDSU]HVWDïDIXQNFMRQRZDÊ 486 2%6’8*$%’}'™:,'(%8*2:$1,(
%ORNğQDOO\EÚG]LHZ\NRQDQ\
QDZHWMHĂOLZEORNXWU\OXE
catchXĝ\WRSROHFHQLDreturn
&]DVDPLEORNğQDOO\MHVW
Z\NRU]\VW\ZDQ\GRSU]HSURZDG]DQLDRSHUDFMLF]\V]F]ÈF\FKSR
NRG]LHZ\NRQ\ZDQ\PZGZöFK
SRSU]HGQLFKEORNDFK
2PDZLDQHWXWDMEORNLVÈSRGREQHGRPHWRG.done().fail()
LDOZD\V RIHURZDQ\FKSU]H]
M4XHU\
:SUDZG]LHPRĝQD]DJQLHĝGĝDÊRSHUDFMHVSUDZG]DQLD
ZSRV]F]HJöOQ\FKEORNDFK QD
SU]\NïDGNROHMQHSROHFHQLHWU\
ZEORNXcatch DOHSDPLÚWDM
ĝHWRPRĝHPLHÊQHJDW\ZQ\
ZSï\ZQDZ\GDMQRĂÊG]LDïDQLD
VNU\SWX
POLECENIA TRY, CATCH
I FINALLY
:W\PSU]\NïDG]LHXĝ\WNRZQLNRZLVÈZ\ĂZLHWODQHGDQH-621
3U]\MPXMHP\]DïRĝHQLHĝHGDQH
SRFKRG]È]ğUP\WU]HFLHMLF]DVDPLZ\VWÚSXMÈSUREOHP\]MHM
VHUZHUDPLFRXQLHPRĝOLZLD
SUDZLGïRZHZF]\WDQLHVWURQ\
-HĝHOLSROHFHQLHWU\]JïRVLEïÈG
]SRZRGXEUDNXPRĝOLZRĂFL
SU]HWZRU]HQLDGDQ\FK WR
Z\NRQDQ\]RVWDQLHNRGZEORNX
catchDEïÈGQLHSU]HV]NRG]L
ZZ\NRQDQLXSR]RVWDïHMF]ÚĂFL
VNU\SWX
=DSRPRFÈEORNXWU\VNU\SW
VSUDZG]DF]\LVWQLHMHPRĝOLZRĂÊSU]HWZRU]HQLDGDQ\FK
-6212GE\ZDVLÚWRSU]HG
Z\ĂZLHWOHQLHPLQIRUPDFML
Xĝ\WNRZQLNRZL
:EORNXcatchGODXĝ\WNRZQLNDWZRU]RQ\MHVWNRPXQLNDW
RSDUW\QDZïDĂFLZRĂFLDFKname
LmessageRELHNWXError
JAVASCRIPT
.RPXQLNDWWHQ]RVWDQLHZ\ĂZLHWORQ\ZNRQVROLQDWRPLDVW
QDVWURQLHSRMDZLVLÚSU]\MD]Q\
NRPXQLNDWGODXĝ\WNRZQLND
.RPXQLNDWREïÚG]LHPRĝQD
UöZQLHĝ]DSRPRFÈWHFKQRORJLL
$MD[Z\VïDÊGRVHUZHUDDE\
]RVWDïWDP]DUHMHVWURZDQ\
:EORNXğQDOO\GRGDZDQHMHVW
ïÈF]HSR]ZDODMÈFHXĝ\WNRZQLNRZLQDRGĂZLHĝHQLHZ\ĂZLHWODQ\FKGDQ\FK
FMVWU\FDWFKğQDOO\MV
UHVSRQVH ij^ĴGHDOVĵ>^ĴWLWOHĵĴ6NOHS)DUURZL%DOOĵij// Dane JSON.
LI UHVSRQVH ^
WU\^
YDUGHDO'DWD -621SDUVH UHVSRQVH 3UöEDSU]HWZRU]HQLD-621
VKRZ&RQWHQW GHDO'DWD :\ĂZLHWOHQLHGDQ\FK-621
} catch(e) {
var errorMessage = e.name + ’ ’ + e.message; // Utworzenie komunikatu
REïÚG]LH
console.log(errorMessage);
:\ĂZLHWOHQLHNRPXQLNDWöZ
ZNRQVROL
IHHGLQQHU+70/ ijHP!3U]HSUDV]DP\QLH]QDOH]LRQRSURPRFMLijHP!
.RPXQLNDWGODXĝ\WNRZQLNöZ
`ğQDOO\^
YDUOLQN GRFXPHQWFUHDWH(OHPHQW ijDij 'RGDQLHïÈF]D
RGĂZLHĝDMÈFHJRGRNXPHQW
OLQNLQQHU+70/ ijDKUHI ĵWU\FDWFKğQDOO\KWPOĵ!RGĂZLHĝD!ij
IHHGDSSHQG&KLOG OLQN }
}
2%6’8*$%’}'™:,'(%8*2:$1,( 487
ZGŁASZANIE BŁĘDÓW
-HĝHOLZLHV]ĝHSHZLHQIUDJPHQWNRGXPRĝHVSRZRGRZDÊSUREOHP
ZVNU\SFLHPRĝHV]Z\JHQHURZDÊZïDVQHEïÚG\]DQLP]URELWRLQWHUSUHWHU
:FHOXXWZRU]HQLDZïDVQHJREïÚGXQDOHĝ\Xĝ\Ê
SRQLĝV]HJRZLHUV]DNRGX
throw new Error(’message’);
0RĝOLZRĂÊ]JïRV]HQLDEïÚGXZFKZLOLJG\ZLHV]
ĝHPRĝHZ\VWÈSLÊSUREOHPMHVW]QDF]QLHOHSV]\P
UR]ZLÈ]DQLHPQLĝ]JRGDQDWRDE\GDQHVSRZRGRZDï\Z\VWÈSLHQLHEïÚGXZGDOV]HMF]ÚĂFLVNU\SWX
-HĝHOLSUDFXMHV]]GDQ\PLSRFKRG]ÈF\PL]]HZQÈWU]PRĝHV]QDWNQÈÊVLÚQDUöĝQHSUREOHP\
QDSU]\NïDG
ľQLHSUDZLGïRZRVIRUPDWRZDQHGDQH-621
ľGDQHOLF]ERZHNWöUHF]DVDPL]DZLHUDMÈGDQH
QLHOLF]ERZH
EïÈGVSRZRGRZDQ\SU]H]]GDOQ\VHUZHU
]ELöULQIRUPDFMLZNWöU\PEUDNXMHMHGQHM
ZDUWRĂFL
ľ
ľ
%ïÚGQHGDQHPRJÈRGUD]XVSRZRGRZDÊZ\VWÈSLHQLHEïÚGXZVNU\SFLHOXEWHĝVWDQRZLÊSU]\F]\QÚSUREOHPöZZGDOV]HMF]ÚĂFLZ\NRQ\ZDQLD
VNU\SWX'ODWHJRWHĝQDMOHSV]\PUR]ZLÈ]DQLHPMHVW
QDW\FKPLDVWRZH]JïRV]HQLHSUREOHPX2GV]XNDQLH
ěUöGïDSUREOHPXPRĝHE\Ê]QDF]QLHWUXGQLHMV]H
MHĂOLGDQHVSRZRGRZDï\Z\VWÈSLHQLHEïÚGXZLQQHM
F]ÚĂFLVNU\SWX
488 2%6’8*$%’}'™:,'(%8*2:$1,(
3RZRGXMHRQXWZRU]HQLHQRZHJRRELHNWXError
QDSRGVWDZLHGRP\ĂOQHJRRELHNWXError 3DUDPHWUHPMHVWNRPXQLNDWNWöU\PDE\ÊSRZLÈ]DQ\
]EïÚGHP.RPXQLNDWWHQSRZLQLHQE\ÊMDVQ\GOD
Xĝ\WNRZQLND
-HĂOLXĝ\WNRZQLNZSURZDG]LQDSU]\NïDGFLÈJ
WHNVWRZ\ZPLHMVFXZNWöU\PRF]HNLZDQHMHVW
SRGDQLHOLF]E\QLHWU]HEDRGUD]X]JïDV]DÊEïÚGX
-HGQDNMHĂOLZLHV]ĝHDSOLNDFMDEÚG]LHSUöERZDïD
Z\NRU]\VWDÊWÚZDUWRĂÊZRSHUDFMLPDWHPDW\F]QHM
QDSHZQ\PHWDSLHG]LDïDQLDVNU\SWXWRPXVLV]
]GDZDÊVRELHVSUDZÚ]SUREOHPöZMDNLHPRĝH
VSRZRGRZDÊZDUWRĂÊQLHRF]HNLZDQHJRW\SX
-HĝHOLGRGDMHV]OLF]EÚGRFLÈJXWHNVWRZHJRZ\QLNLHPEÚG]LHFLÈJWHNVWRZ\1DWRPLDVWXĝ\FLHFLÈJX
WHNVWRZHJRZGRZROQHMRSHUDFMLPDWHPDW\F]QHM
R]QDF]DĝHZ\QLNLHPEÚG]LHNaNWRQLHMHVWEïÈG
OHF]ZDUWRĂÊVSHFMDOQDNWöUDQLHMHVWOLF]EÈ
'ODWHJRWHĝMHĝHOL]JïRVLV]EïÈGJG\Xĝ\WNRZQLN
ZSURZDG]LZDUWRĂÊNWöUHMSöěQLHMQLHEÚG]LH
PRĝQDXĝ\ÊWRRFKURQLV]VNU\SWSU]HGSUREOHPDPLZSU]\V]ïRĂFL0RĝHV]SU]\JRWRZDÊNRPXQLNDW
REïÚG]LHZ\MDĂQLDMÈF\SUREOHP]DQLPXĝ\WNRZQLN
SU]HMG]LHGRGDOV]HMF]ÚĂFLVNU\SWX
ZGŁASZANIE BŁĘDU DLA NaN
-HĝHOLZRSHUDFMLPDWHPDW\F]QHMVSUöEXMHV]Xĝ\ÊFLÈJX
WHNVWRZHJR LQQHJRQLĝ]QDN
GRGDZDQLD WRQLHRWU]\PDV]
EïÚGXOHF]ZDUWRĂÊVSHFMDOQÈ
NaN DQJQRWDQXPEHUĽķWR
QLHMHVWOLF]EDĵ :SU]HGVWDZLRQ\PSU]\NïDG]LH
ZEORNXWU\SRGHMPRZDQDMHVW
SUöEDREOLF]HQLDSRODSURVWRNÈWD-HĝHOLSRGDQH]RVWDQÈOLF]E\
NRGG]LDïD]JRGQLH]RF]HNLZDQLDPL:SU]\SDGNXSRGDQLD
ZDUWRĂFLLQQ\FKQLĝOLF]E\
QDVWÈSL]JïRV]HQLHZïDVQHJR
EïÚGXDZEORNXcatch
]RVWDQLHZ\ĂZLHWORQ\NRPXQLNDW
REïÚG]LH
']LÚNLVSUDZG]HQLXF]\
Z\QLNLHPREOLF]HñMHVWOLF]ED
VNU\SWPRĝHZ\JHQHURZDÊEïÈG
ZRNUHĂORQHMFKZLOLLZ\ĂZLHWOLÊ
Xĝ\WNRZQLNRZLGRNïDGQH
LQIRUPDFMHRSU]\F]\QLH
SUREOHPX ]DPLDVWSR]ZROLÊ
DE\VSRZRGRZDïRWRSUREOHP\
ZGDOV]HMF]ÚĂFLVNU\SWX c10/js/throw.js
JAVASCRIPT
var width = 12;
var height = ’test’;
=PLHQQDZLGWK
=PLHQQDKHLJKW
function calculateArea(width, height) {
WU\^
var area = width * height;
3UöEDREOLF]HQLDSROD
LI LV1D1 DUHD ^-HĝHOLZ\QLNMHVWOLF]EÈ
return area;
]ZUDFDQHMHVWREOLF]RQHSROH
} else {
:SU]HFLZQ\PUD]LH]JïDV]DP\EïÈG
WKURZQHZ(UURU ij)XQNFMDFDOFXODWH$UHD RWU]\PDïDQLHSUDZLGïRZHGDQHij }
} catch(e) {
-HĝHOLZ\VWÈSLïEïÈG
console.log(e.name + ’ ’ + e.message);
:\ĂZLHWOHQLHZNRQVROLNRPXQLNDWX
REïÚG]LH
UHWXUQij1LHPRĝQDREOLF]\ÊSRODij
:\ĂZLHWOHQLHNRPXQLNDWXREïÚG]LH
Xĝ\WNRZQLNRZL
}
}
3UöEDZ\ĂZLHWOHQLDQDVWURQLHREOLF]RQHJRSROD
GRFXPHQWJHW(OHPHQW%\,G ijDUHDij LQQHU+70/ FDOFXODWH$UHD ZLGWKKHLJKW :\ĂZLHWODQHVÈGZDRGPLHQQH
NRPXQLNDW\REïÚGDFKĽSLHUZV]\ZNRQVROLSU]H]QDF]RQ\GOD
SURJUDPLVWöZQDWRPLDVWGUXJL
ZRNQLHSU]HJOÈGDUNLSU]H]QDF]RQ\GODXĝ\WNRZQLNöZ
:WHQVSRVöEQLHW\ONR
SU]HFKZ\WXMHP\EïÈGNWöU\
ZSU]HFLZQ\PUD]LHZRJöOH
PöJïE\QLHE\Ê]JïRV]RQ\DOH
UöZQLHĝ]DSHZQLDP\Z\ĂZLHWOHQLHGRNïDGQ\FKLQIRUPDFML
RSU]\F]\QLHEïÚGX
:LGHDOQHMV\WXDFMLWHJRURG]DMX
SUREOHP\UR]ZLÈĝHZHU\ğNDFMD
IRUPXODU]DRF]\PGRZLHV]VLÚ
ZUR]G]LDOH3UDZGRSRGRELHñVWZRZ\VWÚSRZDQLDWDNLFK
EïÚGöZMHVWZLÚNV]HJG\GDQH
SRFKRG]È]]HZQÈWU]
2%6’8*$%’}'™:,'(%8*2:$1,( 489
PODPOWIEDZI DOTYCZĄCE
DEBUGOWANIA
2WR]ELöUSUDNW\F]Q\FKSRGSRZLHG]L]NWöU\FKPRĝHV]VNRU]\VWDÊSRGF]DV
GHEXJRZDQLDVNU\SWöZ
INNA PRZEGLĄDARKA
INTERNETOWA
3HZQHSUREOHP\VÈĂFLĂOH
]ZLÈ]DQH]NRQNUHWQÈSU]HJOÈGDUNÈ:\SUöEXMNRGZLQQHM
SU]HJOÈGDUFHDE\SU]HNRQDÊ
VLÚF]\WDNĝHZQLHMVSUDZLD
SUREOHP\
DODAWAJ LICZBY
:\ĂZLHWODMOLF]E\ZNRQVROL
DE\]REDF]\ÊNWöUHHOHPHQW\
]RVWDï\]DUHMHVWURZDQH:WHQ
VSRVöEPRĝHV]VSUDZG]LÊ
GRNWöUHJRPLHMVFDVNU\SWE\ï
Z\NRQ\ZDQ\]DQLPZ\VWÈSLï
EïÈG
SKRACAJ KOD
8VXZDMIUDJPHQW\NRGX
LVNUDFDMJRGRQLH]EÚGQHJR
PLQLPXP:W\PFHOXPRĝHV]
IDNW\F]QLHXVXZDÊIUDJPHQW\
NRGXEÈGěXPLHV]F]DÊMHZNRPHQWDU]DFKZLHORZLHUV]RZ\FK
:V]\VWNRPLÚG]\W\PL
]QDNDPLMHVWX]QDZDQH
za komentarz. */
OBJAŚNIAJ KOD
3URJUDPLĂFLEDUG]RF]ÚVWR
]QDMGXMÈUR]ZLÈ]DQLHSUREOHPX
SRGF]DVREMDĂQLDQLDNRGX
LQQ\P
NARZĘDZIA
DO WERYFIKACJI
,VWQLHMHZLHOHUöĝQ\FKQDU]ÚG]L
LQWHUQHWRZ\FKSU]H]QDF]RQ\FK
GRZHU\ğNDFMLNRGXFRSRPDJD
ZZ\V]XNDQLXEïÚGöZZNRG]LH
SZUKAJ
6WDFN2YHUĠRZWRZLWU\QD
]DZLHUDMÈFDS\WDQLDLRGSRZLHG]LGODSURJUDPLVWöZ
0RĝHV]VNRU]\VWDÊWDNĝH
]WUDG\F\MQ\FKZ\V]XNLZDUHN
LQWHUQHWRZ\FKWDNLFKMDN
*RRJOH%LQJ'XFN'XFN*RLWG
JAVASCRIPT
http://www.jslint.com/
http://www.jshint.com/
JSON
http://jsonlint.com/
JQUERY
WYPRÓBUJ KOD
-HĝHOLS\WDQLHGRW\F]ÈFHSUREOHPDW\F]QHJRNRGX]DGDMHV]
QDIRUXP]DPLHĂÊWHQNRG
QLHW\ONRZSRĂFLHOHF]WDNĝH
ZZLWU\QLHW\SXSOD\JURXQG
QDSU]\NïDGKWWSMVELQFRP
KWWSMVğGGOHFRP
OXEKWWSGDEEOHWFRP Ľ
GRGDMïÈF]HGRSRVWXSXEOLNRZDQHJRQDIRUXP
,QQHSRSXODUQHZLWU\Q\W\SX
SOD\JURXQGWRKWWSFVVGHFN
com/LKWWSFRGHSHQFRP
ĽZ\PLHQLRQHZLWU\Q\NïDGÈ
ZLÚNV]\QDFLVNQDSRND]\ZDQLH
LREMDĂQLDQLHNRGX 490 2%6’8*$%’}'™:,'(%8*2:$1,(
'ODSU]HJOÈGDUNL&KURPH
LVWQLHMHZW\F]NDGHEXJHUDGOD
M4XHU\=QDMG]LHV]MÈZVNOHSLH
&KURPH:HE6WRUH
NAJCZĘŚCIEJ
WYSTĘPUJĄCE BŁĘDY
7XWDMSU]HGVWDZLRQROLVWÚEïÚGöZQDMF]ÚĂFLHMZ\VWÚSXMÈF\FKZVNU\SWDFK
POWRÓT DO PODSTAW
:LHONRĂÊOLWHUZMÚ]\NX-DYD6FULSWPD]QDF]HQLHDZLÚF
VSUDZGěZLHONRĂÊOLWHUZNRG]LH
-HĝHOLGR]DGHNODURZDQLD
]PLHQQHMQLHXĝ\MHV]VïRZD
NOXF]RZHJRvarSRZVWDQLH
]PLHQQDJOREDOQDNWöUHM
ZDUWRĂÊEÚG]LHPRĝQDQDGSLVDÊ
ZV]ÚG]LH ZGRZROQ\PPLHMVFX
VNU\SWXOXEQDZHWSU]H]LQQ\
VNU\SWGRïÈF]RQ\QDVWURQLH BRAKUJĄCE LUB
NADMIAROWE ZNAKI
KWESTIE ZWIĄZANE
Z TYPAMI DANYCH
1DNRñFXNDĝGHJRSROHFHQLD
SRZLQLHQ]QDMGRZDÊVLÚ
ĂUHGQLN
8ĝ\FLHRSHUDWRUD=]DPLDVW==
VSRZRGXMHSU]\SLVDQLHZDUWRĂFL
]PLHQQHMDQLHVSUDZG]HQLH
F]\ZDUWRĂÊ]RVWDïDGRSDVRZDQD
6SUDZGěF]\QLHEUDNXMH
QDZLDVöZ]DP\NDMÈF\FK}
OXE)
6SUDZGěF]\ZQDZLDVDFK}
OXE)QLH]RVWDï\SU]\SDGNRZR
XPLHV]F]RQHSU]HFLQNL
-HĝHOLQLHPRĝQDX]\VNDÊ
GRVWÚSXGRZDUWRĂFL]PLHQQHM
VSUDZGěF]\QLHZ\NUDF]DRQD
SR]D]DNUHV F]\QDSU]\NïDG
QLH]RVWDïD]DGHNODURZDQD
ZLQQHMIXQNFML 7HVWRZDQ\ZDUXQHN]DZV]H
XPLHV]F]DMZQDZLDVLH
:QD]ZDFK]PLHQQ\FKQLH
Xĝ\ZDMVïöZ]DUH]HUZRZDQ\FK
OXEP\ĂOQLNöZ
:DUWRĂÊXQGHğQHGQLHRGSRZLDGDnullĽnullMHVWSU]H]QDF]RQDGODRELHNWöZSRGF]DV
JG\XQGHğQHGGODZïDĂFLZRĂFL
PHWRGL]PLHQQ\FK
6SUDZGěF]\SRSUDZQLH
]DVWRVRZDQHLGRSDVRZDQH
]RVWDï\DSRVWURI\LFXG]\VïöZ
6SUDZGěF]\ZZDUWRĂFLDFK
]PLHQQ\FK]QDNLF\WRZDQLD
VÈSUDZLGïRZRSRSU]HG]RQH
]QDNDPL]PLHQLDMÈF\PLLFK
]QDF]HQLH
6SUDZGěF]\ZNRG]LH+70/
ZDUWRĂFLDWU\EXWöZidVÈ
XQLNDOQH
-HĝHOLVSUDZG]DV]F]\ZDUWRĂÊ
]RVWDïDGRSDVRZDQDXĝ\ZDM
ĂFLVïHJRSRUöZQDQLDFRSRZRGXMHMHGQRF]HVQHVSUDZG]HQLH
W\SXGDQ\FK 6WRVXMZLÚF===
]DPLDVW== :HZQÈWU]NRQVWUXNFMLswitch
ZDUWRĂFLQLHPDMÈOXěQRRNUHĂORQHJRW\SX DZLÚFLFKW\SQLH
EÚG]LHXVWDODQ\ 6SUDZGěF]\ZWUDNFLH
Z\ZRï\ZDQLDIXQNFMLQLH]RVWDï
SRPLQLÚW\MHMSDUDPHWU
*G\]RVWDQLH]QDOH]LRQHGRSDVRZDQLHZNRQVWUXNFMLswitch
Z\NRQDQH]RVWDQÈZV]\VWNLH
Z\UDĝHQLDDĝGRQDSRWNDQLD
SROHFHQLDEUHDNOXEreturn
6SUDZGěF]\VNU\SW]RVWDï
ZF]\WDQ\ GRW\F]\WR]ZïDV]F]D
SOLNöZ]VHUZHUöZ&'1 6SUDZGěF]\PLÚG]\SOLNDPL
UöĝQ\FKVNU\SWöZQLHZ\VWÚSXMÈ
NRQĠLNW\
0HWRGDUHSODFH SRZRGXMH
]DVWÈSLHQLHW\ONRSLHUZV]HJR
GRSDVRZDQLD-HĝHOLFKFHV]
]DVWÈSLÊZV]\VWNLHZ\VWÈSLHQLD
Xĝ\MRSFMLJOREDOQHM
-HĝHOLZ\NRU]\VWXMHV]PHWRGÚ
SDUVH,QW PRĝHZ\VWÈSLÊ
SRWU]HEDSU]HND]DQLDSRGVWDZ\
LORĂÊXQLNDOQ\FKF\IUïÈF]QLH
]]HUHPXĝ\W\FKGRSU]HGVWDZLHQLDOLF]E\ 2%6’8*$%’}'™:,'(%8*2:$1,(
491
PODSUMOWANIE
OBSŁUGA BŁĘDÓW I DEBUGOWANIE
f -HĝHOL]UR]XPLHV]NRQWHNVW\Z\NRQ\ZDQLD PDMÈGZDHWDS\ LVWRV\LVWQLHMHZLÚNV]HSUDZGRSRGRELHñVWZRĝHXGD&LVLÚ
]QDOHěÊEïÈGZNRG]LH
f 'HEXJRZDQLHWRSURFHVZ\V]XNLZDQLDEïÚGöZSU]\SRPLQDMÈF\
SURFHVGHGXNFML
f .RQVRODSRPDJDZ]DZÚĝHQLXREV]DUXZNWöU\P]QDMGXMHVLÚ
EïÈG:WHQVSRVöEPRĝHV]VSUöERZDÊRGV]XNDÊWHQEïÈG
f -DYD6FULSWPDVLHGHPUöĝQ\FKW\SöZEïÚGöZ.DĝG\]QLFK
SRZRGXMHXWZRU]HQLHZïDVQHJRRELHNWXEïÚGXNWöU\SRGDMH
QXPHUZLHUV]DJG]LHZ\VWÈSLïEïÈGRUD]MHJRRSLV
f -HĝHOLVSRG]LHZDV]VLÚZ\VWÈSLHQLDEïÚGXPRĝHV]JRREVïXĝ\Ê
]DSRPRFÈSROHFHñWU\catchLğQDOO\:\NRU]\VWDMMHDE\
Z\ĂZLHWODÊXĝ\WNRZQLNRZLMDVQHNRPXQLNDW\RV\WXDFML
2%6’8*$%’}'™:,'(%8*2:$1,(
11
PANELE
ZAWARTOŚCI
3DQHOH]DZDUWRĂFLSR]ZDODMÈQDZ\ĂZLHWOHQLHGRGDWNRZ\FK
LQIRUPDFMLQDVWURQLHRRJUDQLF]RQHMLORĂFLZROQHJR
PLHMVFD:W\PUR]G]LDOHSR]QDV]ZLHOHSU]\NïDGöZSDQHOL
]DZDUWRĂFLSU]\NïDG\WHMHGQRF]HĂQLHVWDQRZLÈSUDNW\F]QH
ZSURZDG]HQLHGRWZRU]HQLDZïDVQ\FKVNU\SWöZ]DSRPRFÈ
M4XHU\
'RZLHV]VLÚMDNWZRU]\ÊZLHOHUöĝQ\FKURG]DMöZSDQHOL]DZDUWRĂFLSDQHOW\SXDFFRUGLRQNDUW\
RNQDPRGDOQH OLJKWER[ SU]HJOÈGDUNÚ]GMÚÊDWDNĝHUHVSRQV\ZQHVODMG\.DĝG\SU]\NïDGSDQHOX
]DZDUWRĂFLSRND]XMHMDNZSUDNW\FH]DVWRVRZDÊNRGNWöU\SR]QDïHĂGRWÈGZNVLÈĝFH
:UR]G]LDOHW\P]QDMGXMÈVLÚRGQLHVLHQLDGR]QDF]QLHEDUG]LHMVNRPSOLNRZDQ\FKZW\F]HNM4XHU\
UR]EXGRZXMÈF\FKIXQNFMRQDOQRĂÊSU]HGVWDZLRQ\FKSU]\NïDGöZ=DSUH]HQWRZDQHWXWDMIUDJPHQW\
NRGXSRND]XMÈUöZQLHĝĝHWHFKQLNLZ\NRU]\VW\ZDQHZZLHOXSRSXODUQ\FKZLWU\QDFKLQWHUQHWRZ\FKPRĝQDVWRVRZDÊ]Z\NRU]\VWDQLHPGRVïRZQLHNLONXZLHUV]\NRGX EH]NRQLHF]QRĂFL
RSLHUDQLDVLÚQDZW\F]NDFKXWZRU]RQ\FKSU]H]LQQ\FK 494 3$1(/(=$:$572¥&,
PANEL ACCORDION
PANELE KART
3DQHODFFRUGLRQ]DZLHUDW\WXï\NOLNQLÚFLH
GRZROQHJR]QLFKSRZRGXMHZ\ĂZLHWOHQLH
ZLÚNV]HJRSDQHOX]DZDUWRĂFL
:SU]\SDGNXNDUWDXWRPDW\F]QLHMHVWZ\ĂZLHWODQ\
MHGHQSDQHODOHNOLNQLÚFLHLQQHMNDUW\SRZRGXMH
]PLDQÚZ\ĂZLHWODQHJRSDQHOX
OKNO MODALNE
PRZEGLĄDARKA ZDJĘĆ
.OLNQLÚFLHïÈF]DRNQDPRGDOQHJR OLJKWER[ SRZRGXMHZ\ĂZLHWOHQLHXNU\WHJRSDQHOX
3U]HJOÈGDUND]GMÚÊSR]ZDODQDZ\ĂZLHWODQLH
UöĝQ\FKREUD]öZQDWHMVDPHMSU]HVWU]HQL
JG\Xĝ\WNRZQLNNOLNQLHPLQLDWXUÚREUD]X
SLAJDY RESPONSYWNE
UTWORZENIE WTYCZKI JQUERY
6ODMG\SR]ZDODMÈQDZ\ĂZLHWODQLHSDQHOL
]DZDUWRĂFLNWöUHķZMHĝGĝDMÈĵGRZLGRNX
JG\Xĝ\WNRZQLNSRUXV]DVLÚPLÚG]\QLPL
:RVWDWQLPSU]\NïDG]LHSRZUöFLP\GRSDQHOX
DFFRUGLRQ SLHUZV]\SU]\NïDG L]PLHQLP\JR
QDZW\F]NÚM4XHU\
3$1(/(=$:$572¥&, 495
PODZIAŁ ODPOWIEDZIALNOŚCI
-DNMXĝPRJïHĂVLÚSU]HNRQDÊGREUÈSUDNW\NÈMHVWUR]G]LDïWUHĂFL
Z]QDF]QLNDFK+70/ ZDUVWZ\SUH]HQWDF\MQHM ZUHJXïDFK&66 RUD]]DFKRZDQLD ZNRG]LH-DYD6FULSW 2JöOQLHU]HF]XMPXMÈFNRGSRZLQLHQRG]ZLHUFLHGODÊQDVWÚSXMÈFHIDNW\
• .RG]QDF]QLNöZ+70/MHVWRGSRZLHG]LDOQ\]D
•
•
QDGDQLHVWUXNWXU\GODWUHĂFL
6W\OH&66VÈRGSRZLHG]LDOQH]DXWZRU]HQLH
ZDUVWZ\SUH]HQWDF\MQHM
.RG-DYD6FULSWMHVWRGSRZLHG]LDOQ\]D]GHğQLRZDQLH]DFKRZDQLDVWURQ\
:\PXV]HQLH]DVWRVRZDQLDWDNLHJRUR]G]LDïX
SURZDG]LGRRSUDFRZDQLDNRGXNWöU\VWDMHVLÚ
ïDWZLHMV]\ZNRQVHUZDFMLRUD]GRSRQRZQHJR
Z\NRU]\VWDQLD:SUDZG]LHWÚNRQFHSFMÚE\ÊPRĝH
MXĝ]QDV]DOHWU]HEDSDPLÚWDÊĝHZ-DYD6FULSW
EDUG]RïDWZRPRĝQDïÈF]\ÊSRV]F]HJöOQHURG]DMH
NRGX5HJXïÚPRĝQD]GHğQLRZDÊQDVWÚSXMÈFR
HG\FMDV]DEORQöZ+70/OXEDUNXV]\VW\OöZ
QLHSRZLQQDZ\PXV]DÊSRQRZQHMHG\FMLNRGX
-DYD6FULSWLQDRGZUöW
496 3$1(/(=$:$572¥&,
2EVHUZDWRU\]GDU]HñLZ\ZRïDQLDGRIXQNFML
PRĝQDXPLHV]F]DÊZSOLNDFK-DYD6FULSW]DPLDVW
QDNRñFXGRNXPHQWX+70/
-HĝHOL]DFKRG]LSRWU]HED]PLDQ\VW\OXSRZLÈ]DQHJR]HOHPHQWHPWR]DPLDVW]DSLV\ZDÊVW\OH
ZMÚ]\NX-DYD6FULSWPRĝQDXDNWXDOQLÊZDUWRĂÊ
DWU\EXWöZclassW\FKHOHPHQWöZ7R]NROHLPRĝH
VSRZRGRZDÊXĝ\FLHQRZ\FKUHJXï]SOLNX&66
NWöUH]PLHQLÈZ\JOÈGHOHPHQWöZ
.LHG\VNU\SWX]\VNXMHGRVWÚSGRPRGHOX'20
PRĝQDRGG]LHOLÊJRRG+70/SU]H]]DVWRVRZDQLH
VHOHNWRUöZclass]DPLDVW]QDF]QLNöZ
KWESTIE DOSTĘPNOŚCI I BRAK
OBSŁUGI JAVASCRIPT
3RGF]DVWZRU]HQLDNDĝGHJRVNU\SWXSRZLQLHQHĂP\ĂOHÊWDNĝH
RXĝ\WNRZQLNDFKNWöU]\PRJÈNRU]\VWDÊ]HVWURQ\LQWHUQHWRZHM
ZLQQ\VSRVöEQLĝURELV]WR7\
KWESTIE DOSTĘPNOŚCI
BRAK OBSŁUGI JAVASCRIPT
*G\Xĝ\WNRZQLNPDPLHÊPRĝOLZRĂÊSUDF\
]HOHPHQWHP
MHĂOLWRïÈF]H]DVWRVXMHOHPHQW<a>
MHĂOLHOHPHQWG]LDïDZFKDUDNWHU]HSU]\FLVNX
]DVWRVXMSU]\FLVN
3U]HGVWDZLRQHZW\PUR]G]LDOHPHQXSDQHOX
DFFRUGLRQSDQHOHNDUWRUD]VODMG\UHVSRQV\ZQH
GRP\ĂOQLHXNU\ZDMÈFDïÈVZRMÈ]DZDUWRĂÊ
:SU]\SDGNXEUDNXDOWHUQDW\ZQHJRVW\OX]DZDUWRĂÊWDEÚG]LHQLHGRVWÚSQDGODXĝ\WNRZQLNöZ
NWöU]\ZSU]HJOÈGDUFHLQWHUQHWRZHMZ\ïÈF]\OL
REVïXJÚMÚ]\ND-DYD6FULSW-HGQ\P]UR]ZLÈ]Dñ
MHVWGRGDQLHGR]QDF]QLNDRWZLHUDMÈFHJR<html>
DWU\EXWXclassRZDUWRĂFLno-js1DVWÚSQLHNODVD
WDMHVWXVXZDQDSU]H]-DYD6FULSW ]DSRPRFÈ
PHWRG\replace()RELHNWXString MHĝHOLMHJR
REVïXJDEÚG]LHZïÈF]RQD.ODVÚno-jsPRĝQD
Z\NRU]\VWDÊGR]DSHZQLHQLDDOWHUQDW\ZQ\FK
VW\OöZXĝ\WNRZQLNRPNWöU]\Z\ïÈF]\OLREVïXJÚ
MÚ]\ND-DYD6FULSWZVZRLFKSU]HJOÈGDUNDFK
•
•
2EDZ\PLHQLRQHHOHPHQW\PRJÈE\ÊDNW\ZQH
DZLÚFXĝ\WNRZQLN]\VNXMHPRĝOLZRĂÊSRUXV]DQLD
VLÚPLÚG]\QLPL]DSRPRFÈNODZLV]DTab OXE
]Z\NRU]\VWDQLHPLQQHJRUR]ZLÈ]DQLDNWöUHQLH
MHVWRSDUWHQDP\V]\ :SUDZG]LHNDĝG\HOHPHQW
PRĝHVWDÊVLÚDNW\ZQ\G]LÚNLXVWDZLHQLXMHJRDWU\EXWXtabindexDOHW\ONR<a>RUD]NLONDHOHPHQWöZ
GDQ\FKZHMĂFLRZ\FKZ\ZRïXMH]GDU]HQLHclick
SRQDFLĂQLÚFLXNODZLV]DEnterSU]H]Xĝ\WNRZQLND
DWU\EXW$5,$role=”button”QLHV\PXOXMHWHJR
]GDU]HQLD HTML
c11/no-js.html
<!DOCTYPE html><html class=”no-js”> ...
<body>
<div class=”js-warning”>$E\GRNRQDÊ]DNXSöZPXVLV]ZïÈF]\ÊREVïXJÚMÚ]\ND
JavaScript.</div>
:\ïÈF]REVïXJÚMÚ]\ND-DYD6FULSWDE\]REDF]\ÊUöĝQLFÚ!
<script src=”js/no-js.js”></script>
</body>
</html>
JAVASCRIPT
c11/js/no-js.js
var elDocument = document.documentElement;
elDocument.className = elDocument.className.replace(/(^|\s)no-js(\s|$)/, ’$1’);
3$1(/(=$:$572¥&, 497
PANEL ACCORDION
*G\NOLNQLHV]W\WXïZSDQHOXDFFRUGLRQRGSRZLHGQLSDQHO
Z\ĂZLHWOLVZRMÈ]DZDUWRĂÊ
3DQHODFFRUGLRQMHVWQDMF]ÚĂFLHM
WZRU]RQ\ZUDPDFKQLHXSRU]ÈGNRZDQHMOLVW\ HOHPHQW<ul> .DĝG\HOHPHQW<li>R]QDF]D
QRZ\HOHPHQWZSDQHOXDFFRUGLRQ3RV]F]HJöOQHHOHPHQW\
]DZLHUDMÈ
• ZLGRF]QÈHW\NLHWÚ
ZRPDZLDQ\PSU]\NïDG]LH
WRHOHPHQW<button> • XNU\W\SDQHOZUD]]]DZDUWRĂFLÈ HOHPHQW<div> .OLNQLÚFLHHW\NLHW\SRZRGXMH
Z\ĂZLHWOHQLHRGSRZLHGQLHJR
SDQHOX OXEMHJRXNU\FLHJG\
DNWXDOQLHMHVWZ\ĂZLHWODQ\
ZZLGRNX :FHOXXNU\FLDOXE
Z\ĂZLHWOHQLDSDQHOXPRĝQD
]PLHQLÊZDUWRĂÊDWU\EXWX
classZRGSRZLHGQLPSDQHOX
Z\ZRïDQLHQRZHMUHJXï\&66
SRND]XMÈFHMOXEXNU\ZDMÈFHM
SDQHO :RPDZLDQ\PSU]\NïDG]LHELEOLRWHNDM4XHU\]RVWDQLH
Xĝ\WDGRDQLPDFMLSDQHOX
SRMDZLDMÈFHJRVLÚZZLGRNXOXE
]QLNDMÈFHJR]QLHJR
,QQHVNU\SW\NDUW]DZLHUDMÈOLWH$FFRUGLRQL]$FFRUGLRQ
=QDMG]LHV]MHUöZQLHĝZM4XHU\8,L%RRWVWUDS
:VSHF\ğNDFML+70/ZSURZDG]RQRHOHPHQW\<details>L<summary>
SU]H]QDF]RQHGRWZRU]HQLDSRGREQHJRHIHNWXDOHJG\SRZVWDZDïD
WDNVLÈĝNDLFKREVïXJDZSU]HJOÈGDUNDFKQLHE\ïDMHV]F]H]E\W
UR]SRZV]HFKQLRQD'ODWHJRWHĝVNU\SW\WDNLHMDNRPDZLDQ\QDGDOEÚGÈ
VWRVRZDQHZSU]\SDGNXSU]HJOÈGDUHNQLHREVïXJXMÈF\FKZ\PLHQLRQ\FK
]QDF]QLNöZ
498 3$1(/(=$:$572¥&,
PANEL ACCORDION, W KTÓRYM WSZYSTKIE PANELE
ZAWARTOŚCI SĄ UKRYTE
ETYKIETA 1
Ukryty
ETYKIETA 2
Ukryty
ETYKIETA 3
Ukryty
PANEL ACCORDION, W KTÓRYM WYŚWIETLONY JEST
DRUGI PANEL ZAWARTOŚCI
ETYKIETA 1
3RGF]DVZF]\W\ZDQLDVWURQ\
UHJXï\&66VÈXĝ\ZDQH
GRXNU\FLDSDQHOL
.OLNQLÚFLHW\WXïXSRZRGXMH
ĝHXNU\W\GRWÈGSDQHORGWZDU]D
DQLPDFMÚSHïQHM]DZDUWRĂFL
SDQHOX2GE\ZDVLÚWR]D
SRPRFÈM4XHU\
Ukryty
3RQRZQHNOLNQLÚFLHHW\NLHW\
VSRZRGXMHXNU\FLHSDQHOX
ETYKIETA 2
Wyświetlona
zawartość
panelu
drugiego
ZAWARTOŚĆ 2
ETYKIETA 3
Ukryty
ANIMACJA ZAWARTOŚCI ZA POMOCĄ METOD .SHOW(),
.HIDE() I .TOGGLE()
2IHURZDQHSU]H]M4XHU\PHWRG\
.show().hide()L.toggle()
SR]ZDODMÈQDDQLPDFMÚ
Z\ĂZLHWODQLDLXNU\ZDQLD
]DZDUWRĂFL
M4XHU\REOLF]DZLHONRĂÊSXGHïND
ZUD]]MHJR]DZDUWRĂFLÈRUD]
ZV]\VWNLPLPDUJLQHVDPLLGRSHïQLHQLDPL7RMHVWQLH]Z\NOH
SRPRFQH]ZïDV]F]DMHĂOLQLH
ZLDGRPRMDND]DZDUWRĂÊ
EÚG]LHXPLHV]F]RQDZSXGHïNX
$E\Xĝ\ÊDQLPDFML&66WU]HED
VDPRG]LHOQLHREOLF]\ÊZ\VRNRĂÊPDUJLQHVLGRSHïQLHQLH
SXGHïND WYSOKOŚĆ
PUDEŁKA
Margines
Krawędź
Dopełnienie
0HWRGD.toggle()SR]ZDOD
QDXQLNQLÚFLHNRQLHF]QRĂFL
WZRU]HQLDNRGXZDUXQNRZHJR
SU]H]QDF]RQHJRGRRNUHĂOHQLD
ZLGRF]QRĂFLSXGHïND -HĝHOL
SXGHïNRMHVWZ\ĂZLHWORQH
]RVWDQLHXNU\WHJG\MHVWXNU\WH
]RVWDQLHZ\ĂZLHWORQH :V]\VWNLHWU]\Z\PLHQLRQH
PHWRG\VÈVNUöWDPLGODPHWRG\
.animate()1DSU]\NïDG
PHWRGD.show()MHVWVNUöWHP
GODQDVWÚSXMÈFHJRZ\ZRïDQLD
$(’.accordion-panel’)
.animate({
height: ’show’,
paddingTop: ’show’,
paddingBottom: ’show’,
marginTop: ’show’,
marginBottom: ’show’
});
3$1(/(=$:$572¥&, 499
UTWORZENIE PANELU
ACCORDION
3RQLĝHMSRND]DQRGLDJUDP]DPLDVWQDSU]\NïDG
VHNZHQFML]GDU]Hñ'LDJUDPWHQPRĝH&LSRPöF
ZGZöFKZ\PLHQLRQ\FKSRQLĝHMDVSHNWDFK
i) 3U]HDQDOL]RZDQLHSU]HGVWDZLRQHJRIUDJPHQWX
NRGX1XPHU\NURNöZQDGLDJUDPLHRGSRZLDGDMÈ
NURNRPZVNU\SFLHSRND]DQ\PQDVWURQLHSR
SUDZHM']LÚNLGLDJUDPRPNURNRPLNRPHQWDU]RP
ZNRG]LH]UR]XPLHQLHG]LDïDQLDSRV]F]HJöOQ\FK
IUDJPHQWöZNRGXSRZLQQRE\ÊGOD&LHELHMHV]F]H
ïDWZLHMV]H
ii) 3R]QDQLHWHFKQLNSODQRZDQLDVNU\SWXSU]HG
SU]\VWÈSLHQLHPGRMHJRWZRU]HQLD
7RQLHMHVWķRğFMDOQ\ĵVW\OGLDJUDPXDOHSRND]XMH
WRFRVLÚG]LHMHZVNU\SFLH'LDJUDP\XZLGRF]QLDMÈMDNNROHNFMDPDï\FKSRMHG\QF]\FKLQVWUXNFML
SR]ZDODQDRVLÈJQLÚFLHZLÚNV]HJRFHOX-HĝHOL
EÚG]LHV]SRGÈĝDÊ]DVWU]DïNDPLQDGLDJUDPLH
]REDF]\V]MDNGDQHSRUXV]DMÈVLÚSRSRV]F]HJöOQ\FKIUDJPHQWDFKVNU\SWX
Zdarzenie: click w karcie
1
FUNKCJA ANONIMOWA:
Wyświetla lub pokazuje odpowiedni panel
2
Uniemożliwienie domyślnej akcji przycisku
3
Ustalenie przycisku klikniętego
przez użytkownika
4
Pobranie panelu accordion
po klikniętym przycisku
5
N
Czy panel jest
animowany.
N
Czy panel jest
widoczny?
66
Wyświetl panel
500 3$1(/(=$:$572¥&,
T
T
Ukryj panel
3U]HNRQDMP\VLÚWHUD]MDNGLDJUDPSU]HNïDGD
VLÚQDNRGěUöGïRZ\:\PLHQLRQHSRQLĝHMNURNL
RGSRZLDGDMÈNRGRZL-DYD6FULSWSU]HGVWDZLRQHPX
QDVWURQLHSRSUDZHMRUD]GLDJUDPRZLSRVWURQLH
OHZHM
1. 8WZRU]HQLHNROHNFMLM4XHU\SU]H]QDF]RQHM
GRSU]HFKRZ\ZDQLDHOHPHQWöZNWöU\FKDWU\EXW
classPDZDUWRĂÊaccordion:NRG]LH+70/
PRĝHV]]REDF]\ÊĝHRGSRZLDGDWRHOHPHQWRZL
QLHXSRU]ÈGNRZDQHMOLVW\ QDVWURQLHPRĝH]QDMGRZDÊVLÚZLHOHOLVWDNDĝGD]QLFKPRĝHWZRU]\Ê
SDQHODFFRUGLRQ 2EVHUZDWRU]GDU]HñF]HNDDĝ
Xĝ\WNRZQLNNOLNQLHMHGHQ]SU]\FLVNöZNWöU\FK
DWU\EXWclassPDZDUWRĂÊaccordion-control
7RSRZRGXMHZ\ZRïDQLHIXQNFMLDQRQLPRZHM
2. 0HWRGDpreventDefault()XQLHPRĝOLZLD
SU]HJOÈGDUFHSRWUDNWRZDQLHSU]\FLVNXMDN
VWDQGDUGRZHJRSU]\FLVNXZ\VïDQLDIRUPXODU]D
'REU\PUR]ZLÈ]DQLHPMHVWXĝ\FLHPHWRG\
preventDefault()MDNQDMZF]HĂQLHMZIXQNFML
DE\NDĝG\SU]HJOÈGDMÈF\NRGZLHG]LDïĝHHOHPHQW
IRUPXODU]DOXEïÈF]HQLHURELWHJRF]HJRPRĝQD
RGQLHJRRF]HNLZDÊ
3. ,QQHHOHPHQW\ZM4XHU\VÈZ\ELHUDQH]D
SRPRFÈVïRZDNOXF]RZHJRthisNWöUHRGQRVL
VLÚGRHOHPHQWXNOLNQLÚWHJRSU]H]Xĝ\WNRZQLND
7U]\PHWRG\M4XHU\PDMÈ]DVWRVRZDQLHGR
GRSDVRZDQHJR]ELRUXVNïDGDMÈFHJRVLÚ]HOHPHQWX
NOLNQLÚWHJRSU]H]Xĝ\WNRZQLND
4. :\ZRïDQLH.next(’.accordion-panel’)
SRZRGXMHZ\EUDQLHNROHMQHJRHOHPHQWX]DZLHUDMÈFHJRNODVÚaccordion-panel
1LHNWöU]\SURJUDPLĂFLXĝ\ZDMÈ80/ DQJ
8QLğHG0RGHOLQJ/DQJXDJH OXENODVGLDJUDPöZ
-HGQDNWDNLHSRGHMĂFLHMHVW]QDF]QLHWUXGQLHMV]H
DSUH]HQWRZDQHWXWDMVHNZHQFMH]GDU]HñPDMÈ
SRPöF&L]REDF]\ÊMDNLQWHUSUHWHUSRUXV]DVLÚSR
VNU\SFLH
5. :\ZRïDQLH.not(’:animated’)VSUDZG]D
F]\DNWXDOQLHMHVWRGWZDU]DQDDQLPDFMD -HĝHOL
Xĝ\WNRZQLNNOLNQLHNLONDNURWQLHWÚVDPÈHW\NLHWÚ
WRXQLHPRĝOLZLPHWRG]LH.slideToggle()
NROHMNRZDQLHZLHOXDQLPDFML 6. :\ZRïDQLH.slideToggle()Z\ĂZLHWOLSDQHO
MHĂOLDNWXDOQLHMHVWRQXNU\W\1DWRPLDVWMHĝHOL
SDQHOMHVWDNWXDOQLHZ\ĂZLHWORQ\Z\ZRïDQLH
.slideToggle()VSRZRGXMHMHJRXNU\FLH
c11/accordion.html
HTML
<ul class=”accordion”>
<li>
<button class=”accordion-control”>Klasyka</button>
<div class=”accordion-panel”>0LHMVFHQD]DZDUWRĂÊSDQHOX</div>
</li>
<li>
<button class=”accordion-control”>Seria kwiaty</button>
<div class=”accordion-panel”>0LHMVFHQD]DZDUWRĂÊSDQHOX</div>
</li>
<li>
<button class=”accordion-control”>0RU]H</button>
<div class=”accordion-panel”>0LHMVFHQD]DZDUWRĂÊSDQHOX</div>
</li>
</ul>
CSS
c11/css/accordion.css
.accordion-panel {
display: none;}
JAVASCRIPT
1
2
3
4
5
6
c11/js/accordion.js
$(’.accordion’).on(’click’, ’.accordion-control’, function(e){ 3RNOLNQLÚFLX
e.preventDefault();
8QLHPRĝOLZLHQLHGRP\ĂOQHMDNFMLSU]\FLVNX
$(this)
8VWDOHQLHHOHPHQWXNOLNQLÚWHJRSU]H]Xĝ\WNRZQLND
.next(’.accordion-panel’) :\EöURGSRZLHGQLHJRSDQHOX
.not(’:animated’)
-HĝHOLDQLPDFMDQLHMHVWDNWXDOQLHRGWZDU]DQD
.slideToggle();
8ĝ\FLHDQLPDFMLGRZ\ĂZLHWOHQLDOXEXNU\FLDSDQHOX
});
=ZUöÊXZDJÚĝHNURNLLVÈZ\NRQ\ZDQHGODW\FKVDP\FKHOHPHQWöZZ\EUDQ\FKSU]H]M4XHU\
3U]\NïDGSDQHOXDFFRUGLRQSRND]DQRZSRGUR]G]LDOHķ3DQHODFFRUGLRQĵ
3$1(/(=$:$572¥&, 501
PANEL KART
3RNOLNQLÚFLXGRZROQHMNDUW\QDVWÚSXMHZ\ĂZLHWOHQLHSRZLÈ]DQHJR]QLÈ
SDQHOX3DQHOHNDUWSU]\SRPLQDMÈQLHFRLQGHNV\NDUW
0RĝHV]]REDF]\ÊOLVWÚZV]\VWNLFKNDUWDOH
• W\ONRMHGQDNDUWDSRZLQQD
Z\JOÈGDÊQDDNW\ZQÈ
• W\ONRMHGHQSDQHORGSR-
ZLDGDMÈF\DNW\ZQHMNDUFLH
SRZLQLHQE\ÊZ\ĂZLHWORQ\
ZV]\VWNLHSR]RVWDïHPXV]È
E\ÊXNU\WH .DUW\VÈQDMF]ÚĂFLHMWZRU]RQH
]DSRPRFÈQLHXSRU]ÈGNRZDQHM
OLVW\3RV]F]HJöOQHHOHPHQW\
<li>QDOLĂFLHSU]HGVWDZLDMÈ
NDUW\ZHZQÈWU]NDĝGHMNDUW\
]QDMGXMHVLÚïÈF]H
3DQHOHZ\VWÚSXMÈSROLĂFLH
SU]HFKRZXMÈFHMNDUW\]RVWDï\
RQHXPLHV]F]RQHZHOHPHQFLH
<div>
.DUWDMHVWSRZLÈ]DQD
]SDQHOHP
• ïÈF]HZNDUFLHPDDWU\EXW
•
href SRGREQLHMDNNDĝGH
LQQHïÈF]H SDQHOPDDWU\EXWid
2EDDWU\EXW\PDMÈWÚVDPÈ
ZDUWRĂÊ 7RGRNïDGQLHWDND
VDPDUHJXïDMDNSRGF]DV
WZRU]HQLDïÈF]DGRLQQHJR
IUDJPHQWXQDVWURQLH+70/ 502 3$1(/(=$:$572¥&,
,QQHVNU\SW\NDUW]DZLHUDMÈ7DEVOHWL7DEXORXV=QDMG]LHV]MHUöZQLHĝ
ZM4XHU\8,L%RRWVWUDS
KLIKNIĘTO PIERWSZĄ KARTĘ
KARTA 1
KARTA 2
KARTA 3
ZAWARTOŚĆ PANELU 1
Karta 1 jest podświetlona
Wyświetlona
zawartość
panelu 1
Panel 2 jest ukryty
Panel 3 jest ukryty
KLIKNIĘTO DRUGĄ KARTĘ
KARTA 1
KARTA 2
KARTA 3
Karta 2 jest podświetlona
Panel 1 jest ukryty
ZAWARTOŚĆ PANELU 2
Wyświetlona
zawartość
panelu 2
Panel 3 jest ukryty
Podczas wczytywania strony style
^^ƐČƵǏLJǁĂŶĞĚŽƉŽnjŝŽŵĞŐŽ
ƵųŽǏĞŶŝĂŬĂƌƚŝǁƐŬĂnjĂŶŝĂƚĞũ͕ŬƚſƌĂ
ďħĚnjŝĞƵǁĂǏĂŶĂnjĂĂŬƚLJǁŶČ͘
&66SRQDGWRXNU\ZDSDQHOH
]Z\MÈWNLHPWHJRNWöU\
RGSRZLDGDDNW\ZQHMNDUFLH
.LHG\Xĝ\WNRZQLNNOLNQLH
ïÈF]HZHZQÈWU]NDUW\VNU\SW
Z\NRU]\VWDELEOLRWHNÚM4XHU\GR
SREUDQLDZDUWRĂFLDWU\EXWXhref
ïÈF]D2GSRZLDGDRQDZDUWRĂFL
DWU\EXWXidSDQHOXNWöU\
SRZLQLHQE\ÊZ\ĂZLHWORQ\
1DVWÚSQLHVNU\SWXDNWXDOQLD
ZDUWRĂFLZDWU\EXFLHclass
NDUW\LSDQHOXGRGDMÈFZDUWRĂÊ
active3RQDGWRZ\PLHQLRQD
ZDUWRĂÊMHVWXVXZDQD
]SRSU]HGQLRDNW\ZQHMNDUW\
LSDQHOX
-HĝHOLXĝ\WNRZQLNQLHPDZïÈF]RQHMREVïXJLMÚ]\ND-DYD6FULSW
ZSU]HJOÈGDUFHïÈF]HZNDUFLH
SRZRGXMHSU]HQLHVLHQLH
Xĝ\WNRZQLNDGRRGSRZLHGQLHJR
IUDJPHQWXVWURQ\
3$1(/(=$:$572¥&, 503
TWORZENIE PANELI KART
1
Wybór wszystkich zbiorów kart na stronie
Iteracja przez poszczególne zbiory kart
FUNKCJA ANONIMOWA:
Konfiguracja tej grupy kart
2
3
Utworzenie zmiennych:
$this: bieżąca lista
$tab: aktualna karta
$link: element łącza w aktualnej karcie
$panel: wartość href atrybutu w łączu
Zdarzenie: click w kontrolce karty
FUNKCJA ANONIMOWA:
Wyświetlenie tej karty i ukrycie
pozostałych
4
Uniemożliwienie domyślnej akcji łącza
5
Utworzenie zmiennych:
$link: obiekt jQuery zawierający łącze
id: wartość atrybutu href karty klikniętej właśnie przez użytkownika
6
7
8
N
Czy element
jest aktywny?
T
Usunięcie wartości active
z atrybutu class karty
Usunięcie wartości active
z atrybutu class panelu
Ustawienie wartości active karty
klikniętej przez użytkownika
9
Ustawienie wartości active
odpowiedniemu panelowi
Uaktualnienie zmiennych $panel i $tab
PRZEJŚCIE DO KOLEJNEGO
ZBIORU KART
504 3$1(/(=$:$572¥&,
'LDJUDPSROHZHMVWURQLHSRND]XMHNURNLMDNLH
WU]HEDZ\NRQDÊZFHOXXWZRU]HQLDNDUW.URNL
WHRGSRZLDGDMÈNRGRZL+70/SRND]DQHPXQD
VWURQLHSRSUDZHM3RQLĝHMZ\MDĂQLRQRMDNPRĝQD
SU]HïRĝ\ÊMHQDNRG
1. :M4XHU\Z\ELHUDQHVÈZV]\VWNLH]ELRU\NDUW
QDVWURQLH0HWRGD.each()Z\ZRïXMHIXQNFMÚ
DQRQLPRZÈGODNDĝGHJR]ELRUXNDUW WRSU]\SRPLQDG]LDïDQLHSÚWOL .RGZIXQNFMLDQRQLPRZHM
MHGQRUD]RZRG]LDïDW\ONR]MHGQ\P]ELRUHPNDUW
DOHSU]HGVWDZLRQHWXWDMNURNLVÈSRZWDU]DQHGOD
ZV]\VWNLFK]ELRUöZNDUWQDVWURQLH
2. &]WHU\]PLHQQHSU]HFKRZXMÈLQIRUPDFMH
V]F]HJöïRZHRDNW\ZQHMNDUFLH
i) =PLHQQD$thisSU]HFKRZXMHDNWXDOQ\]ELöUNDUW
ii) =PLHQQD$tabSU]HFKRZXMHDNWXDOQLHDNW\ZQÈ
NDUWÚ
$NWXDOQLHDNW\ZQDNDUWDMHVWSRELHUDQDSU]H]
PHWRGÚğQG iii) =PLHQQD$linkSU]HFKRZXMHHOHPHQW<a>
]QDMGXMÈF\VLÚQDNDUFLH
iv) =PLHQQD$panelSU]HFKRZXMHZDUWRĂÊDWU\EXWX
hrefDNW\ZQHMNDUW\ ]PLHQQDWDEÚG]LHXĝ\WDGR
XNU\FLDSDQHOXJG\Xĝ\WNRZQLNZ\ELHU]HLQQ\
SDQHO 3. 2EVHUZDWRU]GDU]HñMHVWVNRQğJXURZDQ\GR
VSUDZG]HQLDF]\Xĝ\WNRZQLNNOLNQÈïNWöUÈNROZLHN
NDUWÚQDOLĂFLH3RNOLNQLÚFLXNDUW\QDVWÚSXMH
XUXFKRPLHQLHLQQHMIXQNFMLDQRQLPRZHM
4. 0HWRGDe.preventDefault()XQLHPRĝOLZLD
SU]HQLHVLHQLHXĝ\WNRZQLNDQDQRZÈVWURQÚSR
NOLNQLÚFLXïÈF]D
5. 8WZRU]HQLH]PLHQQHMRQD]ZLH$linkSU]H]QDF]RQHMGRSU]HFKRZ\ZDQLDELHĝÈFHJRïÈF]D
ZHZQÈWU]RELHNWXM4XHU\
6. 8WZRU]HQLH]PLHQQHMidSU]H]QDF]RQHMGR
SU]HFKRZ\ZDQLDZDUWRĂFLDWU\EXWXhrefNOLNQLÚWHM
NDUW\1D]ZD]PLHQQHMWRidSRQLHZDĝMHVWRQD
Xĝ\ZDQDGRSREUDQLDGRSDVRZDQHJRSDQHOX
]DZDUWRĂFL ]DSRPRFÈMHJRDWU\EXWXid 7. .RQVWUXNFMDifVSUDZG]DF]\]PLHQQDid
]DZLHUDZDUWRĂÊDELHĝÈF\HOHPHQWMHVW
nieaktywny-HĝHOLREDZDUXQNLVÈVSHïQLRQHWR
8. :DWU\EXFLHclassSRSU]HGQLRDNW\ZQHMNDUW\
LZSDQHOXXVXZDQHVÈZDUWRĂFLactive
FRGH]DNW\ZXMHNDUWÚLXNU\ZDSDQHO 9. :DWU\EXFLHclassNOLNQLÚWHMNDUW\LZRGSRZLDGDMÈF\PMHMSDQHOXQDVWÚSXMHGRGDQLHZDUWRĂFLactive
FRSRZRGXMHĝHNDUWDZ\JOÈGDQDDNW\ZQÈLZ\ĂZLHWORQ\MHVWRGSRZLDGDMÈF\MHMSDQHOZF]HĂQLHM
XNU\W\ :W\PVDP\PF]DVLHRGQLHVLHQLDGRW\FKHOHPHQWöZVÈSU]HFKRZ\ZDQHZ]PLHQQ\FK$panel
L$tab
c11/tabs.html
HTML
<ul class=”tab-list”>
<li class=”active”><a class=”tab-control” href=”#tab-1”>Opis</a></li>
<li><a class=”tab-control” href=”#tab-2”>6NïDGQLNL</a></li>
<li><a class=”tab-control” href=”#tab-3”>Dostawa</a></li>
</ul>
<div class=”tab-panel active” id=”tab-1”>=DZDUWRĂÊ</div>
<div class=”tab-panel” id=”tab-2”>=DZDUWRĂÊ</div>
<div class=”tab-panel” id=”tab-3”>=DZDUWRĂÊ</div>
c11/css/tabs.css
CSS
.tab-panel {
display: none;}
.tab-panel.active {
display: block;}
JAVASCRIPT
1
2
3
4
5
6
7
8
c11/js/tabs.js
$(’.tab-list’).each(function(){
:\V]XNDQLHOLVWNDUW
var $this
= $(this);
3U]HFKRZ\ZDQLHELHĝÈFHMOLVW\
YDUWDE WKLVğQG ijOLDFWLYHij 3REUDQLHDNW\ZQHJRHOHPHQWXOLVW\
YDUOLQN WDEğQG ijDij 3REUDQLHïÈF]D]DNW\ZQHMNDUW\
var $panel
= $($link.attr(’href’));
3REUDQLHDNW\ZQHJRSDQHOX
$this.on(’click’, ’.tab-control’, function(e) { 3RNOLNQLÚFLXNDUW\
e.preventDefault();
8QLHPRĝOLZLHQLHGRP\ĂOQHJR]DFKRZDQLDHOHPHQWX
var $link = $(this);
3U]HFKRZ\ZDQLHELHĝÈFHJRïÈF]D
var id
= this.hash;
3REUDQLHDWU\EXWXKUHINOLNQLÚWHMNDUW\
if (id && !$link.is(’.active’)) {
$panel.removeClass(’active’);
$tab.removeClass(’active’);
-HĝHOLQLHMHVWDNWXDOQLHDNW\ZQ\
3DQHOVWDMHVLÚQLHDNW\ZQ\
.DUWDVWDMHVLÚQLHDNW\ZQD
$panel = $(id).addClass(’active’);
3DQHOVWDMHVLÚDNW\ZQ\
$tab
= $link.parent().addClass(’active’); .DUWDVWDMHVLÚDNW\ZQD
9
}
});
});
3$1(/(=$:$572¥&, 505
OKNO MODALNE
2NQRPRGDOQHWRGRZROQHJRURG]DMX]DZDUWRĂÊNWöUDSRMDZLDVLÚQDG
SR]RVWDïÈ]DZDUWRĂFLÈVWURQ\7HJRURG]DMXRNQRPXVLE\Ê]DPNQLÚWH
]DQLPEÚG]LHPRĝQD]QöZNRU]\VWDÊ]SR]RVWDïHMF]ÚĂFLVWURQ\
:RPDZLDQ\PSU]\NïDG]LH
RNQRPRGDOQHMHVWWZRU]RQH
JG\Xĝ\WNRZQLNNOLNQLHLNRQÚ
VHUFDZOHZ\PJöUQ\PURJX
VWURQ\
2NQRPRGDOQH]RVWDMHZ\ĂZLHWORQHQDĂURGNXVWURQ\LSR]ZDOD
Xĝ\WNRZQLNRPQDSRG]LHOHQLH
VLÚGDQÈVWURQÈZUöĝQ\FK
VHUZLVDFKVSRïHF]QRĂFLRZ\FK
=DZDUWRĂÊRNQDPRGDOQHJR
]Z\NOH]QDMGXMHVLÚQDVWURQLH
DOHSRGF]DVMHMZF]\W\ZDQLD
MHVWXNU\ZDQD]DSRPRFÈ&66
1DVWÚSQLH-DYD6FULSWSRELHUD
WÚ]DZDUWRĂÊLZ\ĂZLHWODMÈ
ZHZQÈWU]HOHPHQWöZ<div>
WZRU]ÈF\FKRNQRPRGDOQHQDG
LVWQLHMÈFÈVWURQÈ
&]DVDPLRNQRPRGDOQHSU]\FLHPQLDSR]RVWDïÈF]ÚĂÊVWURQ\
Z\ĂZLHWODQÈSRGQLP,VWQLHMH
PRĝOLZRĂÊDE\RNQRPRGDOQH
E\ïRZ\ĂZLHWODQHDXWRPDW\F]QLH
SR]DNRñF]HQLXZF]\W\ZDQLD
VWURQ\OXEQDVNXWHNG]LDïDñ
SRGHMPRZDQ\FKSU]H]Xĝ\WNRZQLNDSRGF]DVSUDF\]HVWURQÈ
506 3$1(/(=$:$572¥&,
,QQHSU]\NïDG\VNU\SWöZRNQDPRGDOQHJRREHMPXMÈ&RORUER[
RSUDFRZDQ\SU]H]-DFND/0RRUHijD /LJKWER[ /RNHVK'KDNDU L)DQF\ER[ )DQF\$SSV =QDMG]LHV]MHUöZQLHĝZM4XHU\8,
L%RRWVWUDS
7DN]ZDQ\ wzorzec projektowy
WRWHUPLQVWRVRZDQ\SU]H]
SURJUDPLVWöZZRGQLHVLHQLX
GRQDMF]ÚĂFLHMVSRW\NDQHJR
SRGHMĂFLDGRUR]ZLÈ]\ZDQLD
RNUHĂORQ\FKSUREOHPöZ
SURJUDPLVW\F]Q\FK
:VNU\SFLHZ\NRU]\VWDQR
Z]RU]HFPRGXïX7RSRSXODUQ\VSRVöEWZRU]HQLDNRGX
REHMPXMÈF\ORJLNÚSXEOLF]QÈ
LSU\ZDWQÈ
*G\VNU\SW]RVWDQLHXPLHV]F]RQ\QDVWURQLHLQQHVNU\SW\
PRJÈNRU]\VWDÊ]MHJRPHWRG
SXEOLF]Q\FKopen()close()
Lcenter()8ĝ\WNRZQLF\QLH
PXV]ÈX]\VNDÊGRVWÚSXGR
]PLHQQ\FKWZRU]ÈF\FKNRG
+70/DZLÚFSR]RVWDMÈRQH
SU\ZDWQH :SRGUR]G]LDOH
ķ2ELHNWPRGDOĵZSXQNFLH
ķ-DYD6FULSWĵNRGSU\ZDWQ\MHVW
ZNRORU]H]LHORQ\P 8ĝ\FLHPRGXïöZSRGF]DV
WZRU]HQLDDSOLNDFMLZLÈĝH
VLÚ]ZLHORPD]DOHWDPLQD
SU]\NïDG
SRPDJDZRUJDQL]DFMLNRGX
SR]ZDODQDWHVWRZDQLH
LSRQRZQH]DVWRVRZDQLH
SRV]F]HJöOQ\FKNRPSRQHQWöZDSOLNDFML
WZRU]\]DNUHVLW\PVDP\P
XQLHPRĝOLZLDSRZVWDZDQLH
NRQĠLNWöZQD]Z]PLHQQ\FK
LPHWRG]LVWQLHMÈF\PL
ZLQQ\FKVNU\SWDFK
•
•
•
7HQVNU\SWRNQDPRGDOQHJR
WZRU]\RELHNW RQD]ZLH
modal NWöU\]NROHLGRVWDUF]D
WU]\QRZHPHWRG\JRWRZHGR
Xĝ\FLDSRGF]DVWZRU]HQLDRNLHQ
PRGDOQ\FK
<div class="modal">
<div class="modal-content">
open()ĽRWZLHUDRNQR
PRGDOQH
close()Ľ]DP\NDRNQR
center()ĽXPLHV]F]DRNQR
QDĂURGNXVWURQ\
</div>
</div>
<button role=”button” class=”modal-close”>]DPNQLM</button>
8ĝ\WNRZQLF\WHJRVNU\SWXPXV]ÈMHG\QLHZLHG]LHÊMDNG]LDïD
PHWRGDopen()SRQLHZDĝ
PHWRGDclose()MHVW
Z\ZRï\ZDQDSU]H]REVHUZDWRUD]GDU]HñJG\Xĝ\WNRZQLN
NOLNQLHSU]\FLVN]DP\NDMÈF\
RNQR
PHWRGDcenter()MHVW
Z\ZRï\ZDQDSU]H]open()
DWDNĝHSU]H]REVHUZDWRUD
]GDU]HñJG\Xĝ\WNRZQLN
]PLHQLZLHONRĂÊRNQD
•
•
:WUDNFLHZ\ZRïDQLDPHWRG\
open()QDOHĝ\SRGDÊSDUDPHWU
ZVND]XMÈF\]DZDUWRĂÊMDNDPD
VLÚ]QDOHěÊZRNQLHPRGDOQ\P
,VWQLHMHUöZQLHĝPRĝOLZRĂÊ
SRGDQLDZ\PLDUöZRNQD :GLDJUDPLHPRĝHV]]REDF]\Ê
ĝHVNU\SWXPLHV]F]D]DZDUWRĂÊ
ZHZQÈWU]HOHPHQWöZ<div>
,QQ\VNU\SWPRĝHZ\NRU]\VWDÊ
Z\ZRïDQLHPHWRG\open()
LZVND]DÊNWöUD]DZDUWRĂÊ
SRZLQQDSRMDZLÊVLÚZRNQLH
PRGDOQ\P
<div.modal>ĽG]LDïD
ZFKDUDNWHU]HUDPNLZRNöï
RNQDPRGDOQHJR
<div.modal-content>ĽG]LDïD
ZFKDUDNWHU]HNRQWHQHUDQD
]DZDUWRĂÊXPLHV]F]DQÈQD
VWURQLH
<button.modal-close> —
SR]ZDODXĝ\WNRZQLNRZLQD
]DPNQLÚFLHRNQDPRGDOQHJR
3$1(/(=$:$572¥&, 507
TWORZENIE OKNA MODALNEGO
6NU\SWPRGDOQ\Z\NRQXMHGZD]DGDQLD
1. 7ZRU]\NRG+70/GODRNQDPRGDOQHJR
2. =ZUDFDRELHNWmodal]DZLHUDMÈF\PHWRG\
open()close()Lcenter()
8PLHV]F]HQLHVNU\SWXQDVWURQLH+70/QLH
SU]\QRVLĝDGQHJRZLGRF]QHJRHIHNWX SRGREQLH
MDNGRïÈF]HQLHELEOLRWHNLM4XHU\QDVWURQLHQLHPD
ZSï\ZXQDMHMZ\JOÈG 3R]ZDODMHGQDNLQQ\PVNU\SWRPQDXĝ\FLH
IXQNFMRQDOQRĂFLRELHNWXmodalLZ\ZRï\ZDQLHMHJR
PHWRG\open()ZFHOXXWZRU]HQLDRNQDPRGDOQHJR 3RGREQLHMDNGRïÈF]HQLHELEOLRWHNLM4XHU\
SR]ZDODQD]DVWRVRZDQLHQDVWURQLHRELHNWX
jQueryLMHJRPHWRG 2]QDF]DWRĝHRVRE\NRU]\VWDMÈFH]HVNU\SWXPXV]ÈW\ONRZLHG]LHÊMDNZ\ZRïDÊPHWRGÚopen()
L]DMHMSRPRFÈXWZRU]\ÊRNQRPRGDOQH
3OLNPRGDOLQLWMVSRZRGXMHXVXQLÚFLH]DZDUWRĂFL
]HVWURQ\+70/1DVWÚSQLHGRGDMHSURFHGXUÚREVïXJL]GDU]HñZ\ZRïXMÈFÈPHWRGÚopen()RELHNWX
modalZFHOXZ\ĂZLHWOHQLDRNQDPRGDOQHJRZUD]
]]DZDUWRĂFLÈSU]HGFKZLOÈXVXQLÚWÈ]HVWURQ\
Nazwa initWRVNUöWRGLQLFMDFMLĽSRZV]HFKQLH
1
Utworzenie zmiennej:
$content: fragment strony wyświetlany
w oknie modalnym
Ukrycie fragmentu strony przez jego oddzielenie
2
Zdarzenie: click w przycisku
FUNKCJA ANONIMOWA:
Wyświetlenie zawartości w oknie modalnym
3
Wywołanie metody open() obiektu modal,
a następnie przekazanie zmiennej $content
jako parametru, a także wymiarów okna
modalnego
508 3$1(/(=$:$572¥&,
:SU]\NïDG]LHSU]HGVWDZLRQ\PQDVWURQLHSR
SUDZHMRNQRPRGDOQHMHVWWZRU]RQHSU]H]VNU\SW
RQD]ZLHPRGDOLQLWMV6SRVöEWZRU]HQLDRELHNWX
modalLZ\NRU]\VWDQLDMHJRPHWRG]REDF]\V]
ZSRGUR]G]LDOHķ2ELHNWPRGDOĵ7HUD]SU]\MPLM
ĝHXĝ\FLHZ\PLHQLRQHJRVNU\SWXMHVWRGSRZLHGQLNLHPGRGDQLDSRQLĝV]HJRNRGX3RZRGXMHRQ
XWZRU]HQLHRELHNWXRQD]ZLHmodalLGRGDQLH
WU]HFKPHWRGGRRELHNWX
var modal = {
center: function() {
0LHMVFHQDNRGPHWRG\FHQWHU },
open: function(settings) {
0LHMVFHQDNRGPHWRG\RSHQ },
close: function() {
0LHMVFHQDNRGPHWRG\FORVH }
};
Xĝ\ZDQDQD]ZDSOLNöZLIXQNFMLRGSRZLHG]LDOQ\FK
]DSU]HSURZDG]HQLHNRQğJXUDFMLQDVWURQLHOXE
LQQ\FKF]ÚĂFLVNU\SWX
1. :SLHUZV]HMNROHMQRĂFLVNU\SWSRELHUD]DZDUWRĂÊHOHPHQWXSRVLDGDMÈFHJRDWU\EXWidRZDUWRĂFL
share-options=ZUöÊXZDJÚMDNPHWRGDM4XHU\
RQD]ZLH.detach()XVXZDWÚ]DZDUWRĂÊ]HVWURQ\
2. .RQğJXUDFMDSURFHGXU\REVïXJL]GDU]Hñ
Z\ZRï\ZDQHMSRNOLNQLÚFLXSU]\FLVNXSU]H]
Xĝ\WNRZQLND:öZF]DVQDVWÚSXMHXUXFKRPLHQLH
IXQNFMLDQRQLPRZHM
3. )XQNFMDDQRQLPRZDXĝ\ZDPHWRG\open()
RELHNWXmodal3RELHUDSDUDPHWU\ZSRVWDFL
OLWHUDïXRELHNWX
contentĽ]DZDUWRĂÊSU]H]QDF]RQDGRZ\ĂZLHWOHQLDZRNQLHPRGDOQ\PZRPDZLDQ\P
SU]\NïDG]LHWR]DZDUWRĂÊHOHPHQWXSRVLDGDMÈFHJRDWU\EXWidRZDUWRĂFLshare-options
widthĽV]HURNRĂÊRNQDPRGDOQHJR
heightĽZ\VRNRĂÊRNQDPRGDOQHJR
•
•
•
:NURNX]RVWDïDXĝ\WDPHWRGD.detach()SRQLHZDĝSRZRGXMH
XPLHV]F]HQLHZSDPLÚFLHOHPHQWöZLSURFHGXUREVïXJL]GDU]Hñ
FRSR]ZDODQDLFKSöěQLHMV]HZ\NRU]\VWDQLH%LEOLRWHNDM4XHU\RIHUXMH
WDNĝHPHWRGÚ.remove()NWöUDMHGQDNFDïNRZLFLHXVXZDHOHPHQW\
UŻYCIE SKRYPTU OKNA
MODALNEGO
c11/modal-window.html
HTML
1
2
3
<div id=”share-options”>
7RMHVWPLHMVFHQDNRPXQLNDWLSU]\FLVNLVHUZLVöZVSRïHF]QRĂFLRZ\FK!
</div>
<script src=”js/jquery.js”></script>
<script src=”js/modal-window.js”></script>
<script src=”js/modal-init.js”></script>
</body>
</html>
=ZUöÊXZDJÚQDWU]\U]HF]\ZSRZ\ĝV]\PNRG]LH
+70/
1. =QDF]QLN<div>]DZLHUDMÈF\PLHMVFHQD
SU]\FLVNLVHUZLVöZVSRïHF]QRĂFLRZ\FK
2. ’ÈF]HGRVNU\SWXWZRU]ÈFHJRRELHNWmodal
PRGDOZLQGRZMV 3. ’ÈF]HGRVNU\SWXZ\ĂZLHWODMÈFHJRRNQR
PRGDOQH]DSRPRFÈRELHNWXmodal PRGDOLQLWMV SU]H]QDF]RQHJRQDSU]\FLVNLVHUZLVöZVSRïHF]QRĂFLRZ\FK
3U]HGVWDZLRQ\SRQLĝHMSOLNPRGDOLQLWMVZ\ĂZLHWOD
RNQRPRGDOQH=ZUöÊXZDJÚĝHPHWRGDopen()
RWU]\PXMHZIRUPDFLH-621WU]\IUDJPHQW\
LQIRUPDFML
i) ]DZDUWRĂÊ content Z\ĂZLHWODQÈZRNQLH
PRGDOQ\P Z\PDJDQD ii) V]HURNRĂÊ width RNQDPRGDOQHJR
RSFMRQDOQDQDGSLVXMHZDUWRĂÊGRP\ĂOQÈ iii) Z\VRNRĂÊ height RNQDPRGDOQHJR
RSFMRQDOQDQDGSLVXMHZDUWRĂÊGRP\ĂOQÈ c11/js/modal-init.js
JAVASCRIPT
1
2
3
(function(){
var $content = $(’#share-options’).detach();
8VXQLÚFLH]HVWURQ\]DZDUWRĂFL
RNQDPRGDOQHJR
$(’#share’).on(’click’, function() {
3URFHGXUDREVïXJL]GDU]Hñ
Z\ĂZLHWODMÈFDRNQRPRGDOQH
PRGDORSHQ ^FRQWHQWFRQWHQWZLGWKKHLJKW` });
i
ii
iii
}());
:DUWRĂÊZïDĂFLZRĂFL]LQGH[RNQDPRGDOQHJR
PXVLE\ÊEDUG]RGXĝDDE\RNQRE\ïRZ\ĂZLHWORQH
QDGSR]RVWDïÈ]DZDUWRĂFLÈ3U]HGVWDZLRQHWXWDM
CSS
VW\OHJZDUDQWXMÈZ\ĂZLHWOHQLHRNQDPRGDOQHJR
QDGUHV]WÈVWURQ\ ZSHïQ\PSU]\NïDG]LH]QDMGXMH
VLÚZLÚFHMVW\OöZ c11/css/modal-window.css
.modal {
position: absolute;
]LQGH[`
3$1(/(=$:$572¥&, 509
OBIEKT MODAL
2
Utworzenie kodu HTML dla okna modalnego:
$window: obiekt window
$modal: element okna modalnego
$content: zawartość okna modalnego
$close: przycisk zamknięcia okna modalnego
Dodaj $content i $close do $modal
3
Zdarzenie: click w przycisku zamknięcia
okna modalnego
FUNKCJA ANONIMOWA:
Przeznaczona do zamknięcia okna modalnego
Uniemożliwienie domyślnego zachowania
łącza
Wywołanie funkcji close()
5
FUNKCJA: center()
Wyśrodkowanie okna modalnego
Pobranie wysokości viewportu i odjęcie
połowy wysokości okna modalnego,
następnie podzielenie przez 2 w celu obliczenia odległości, w jakiej okno modalne
powinno znajdować się od początku okna.
Tę samą operację trzeba przeprowadzić
dla szerokości
6
Na podstawie przygotowanych wartości
utworzenie stylów CSS dla okna modalnego
7
FUNKCJA: open(VHWWLQJV)
Wyświetlenie lub ukrycie okna modalnego
8
Opróżnienie okna modalnego i dodanie
nowej zawartości
9
Użycie stylów CSS do ustawienia szerokości i wysokości okna modalnego
Dodanie okna modalnego do <body>
10
11
12
Wyśrodkowanie okna modalnego za
pomocą center()
Zdarzenie: UHVL]H w oknie
przeglądarki internetowej
Funkcja: close()
Zamknięcie okna modalnego
Usunięcie zawartości z okna modalnego
Oddzielenie okna modalnego i jego procedur
obsługi zdarzeń
510
3$1(/(=$:$572¥&,
3RQLĝHMZ\PLHQLRQRNURNLSURZDG]ÈFHGRXWZRU]HQLDRELHNWXmodal-HJRPHWRG\VÈSU]H]QDF]RQH
GRWZRU]HQLDRNLHQPRGDOQ\FK
1. =DGHNODURZDQLHRELHNWXmodal0HWRG\RELHNWX
VÈWZRU]RQHSU]H]IXQNFMÚW\SX,,)(
DQJ,PPHGLDWHO\,QYROYHG)XQFWLRQ([SUHVVLRQ
SDWU]UR]G]LDïSRGUR]G]LDïķ1DW\FKPLDVW
Z\NRQ\ZDQDIXQNFMDZ\UDĝHQLDĵ 7HQNURNQLH
]RVWDïSRND]DQ\QDGLDJUDPLHSROHZHMVWURQLH
2.3U]HFKRZ\ZDQLHELHĝÈFHJRRELHNWXwindow
ZGRSDVRZDQ\P]ELRU]HM4XHU\DQDVWÚSQLH
XWZRU]HQLHWU]HFKHOHPHQWöZ+70/SRWU]HEQ\FK
GODRNQDPRGDOQHJR3U]\JRWRZDQLHRNQDPRGDOQHJRLMHJRXPLHV]F]HQLHZ]PLHQQHM$modal
3.'RGDQLHGRSU]\FLVNX]DP\NDMÈFHJRSURFHGXU\
REVïXJL]GDU]HñNWöUDZ\ZRïXMHPHWRGÚclose()
RELHNWXmodal
4.3RVïRZLHNOXF]RZ\PreturnPDP\EORNNRGX
ZQDZLDVLHNODPURZ\P7HQEORNMHVWRGSRZLHG]LDOQ\]DWZRU]HQLHWU]HFKPHWRGSXEOLF]Q\FK
RELHNWXmodal=ZUöÊXZDJÚĝHWHQNURNQLH
]RVWDïSRND]DQ\ZGLDJUDPLH
5.0HWRGDcenter()SRZRGXMHXWZRU]HQLHGZöFK
]PLHQQ\FK
i) topĽSRELHUDZ\VRNRĂÊRNQDSU]HJOÈGDUNL
LRGHMPXMHZ\VRNRĂÊRNQDPRGDOQHJRRWU]\PDQ\
Z\QLNMHVWG]LHORQ\SU]H]FRGDMHRGOHJïRĂÊ
RNQDPRGDOQHJRRGSRF]ÈWNXRNQDSU]HJOÈGDUNL
i) leftĽSRELHUDV]HURNRĂÊRNQDSU]HJOÈGDUNL
LRGHMPXMHV]HURNRĂÊRNQDPRGDOQHJRRWU]\PDQ\
Z\QLNMHVWG]LHORQ\SU]H]FRGDMHRGOHJïRĂÊ
RNQDPRGDOQHJRRGOHZHMNUDZÚG]LRNQDSU]HJOÈGDUNL
6.0HWRGDM4XHU\RQD]ZLH.css()Xĝ\ZD
Z\PLHQLRQ\FK]PLHQQ\FKGRXPLHV]F]HQLDRNQD
PRGDOQHJRQDĂURGNXVWURQ\
7.0HWRGDopen()SRELHUDSDUDPHWUZSRVWDFL
RELHNWX'RWHJRRELHNWXRGQRVLP\VLÚ]Z\NRU]\VWDQLHPVïRZDsettings 'DQHGODWHJRRELHNWX
]RVWDï\SRND]DQHQDSRSU]HGQLHMVWURQLH 8.:V]HONDLVWQLHMÈFD]DZDUWRĂÊ]RVWDMHXVXQLÚWD
]RNQDPRGDOQHJRDZïDĂFLZRĂÊcontentRELHNWX
settingsEÚG]LHGRGDQDGRNRGX+70/XWZRU]RQHJRZNURNDFKL
9.6]HURNRĂÊLZ\VRNRĂÊRNQDPRGDOQHJRVÈXVWDZLDQHQDSRGVWDZLHZDUWRĂFLRELHNWXsettings
-HĝHOLQLH]RVWDQÈSRGDQHWRXĝ\WDEÚG]LHZDUWRĂÊ
auto1DVWÚSQLHRNQRPRGDOQHMHVWXPLHV]F]RQH
QDVWURQLH]Z\NRU]\VWDQLHPPHWRG\appendTo()
10. 0HWRGDcenter()MHVWXĝ\WDGRZ\ĂURGNRZDQLDRNQDPRGDOQHJR
11.-HĝHOLZLHONRĂÊRNQDXOHJQLH
]PLDQLHWRSRQRZQLH]RVWDQLH
Z\ZRïDQDPHWRGDcenter()
12. 0HWRGDclose()RSUöĝQLD
RNQRPRGDOQHRGG]LHODNRG+70/
RGVWURQ\RUD]XVXZDZV]HONLH
SURFHGXU\REVïXJL]GDU]Hñ
:SRQLĝV]\PNRG]LHZLHUV]H
XPLHV]F]RQHQD]LHORQ\PWOHVÈ
X]QDZDQH]Dprywatne7HZLHU
V]HNRGXVÈXĝ\ZDQHMHG\QLH
ZRELHNFLH 'RWHJRNRGXQLH
PRĝQDX]\VNDÊEH]SRĂUHGQLHJR
GRVWÚSX]]HZQÈWU]RELHNWX JAVASCRIPT
1
2
var modal = (function() {
var $window = $(window);
var $modal = $(’<div class=”modal”/>’);
4
5
6
7
8
9
10
11
12
c11/js/modal-window.js
=DGHNODURZDQLHRELHNWXPRGDO
3U]\JRWRZDQLHNRGX]QDF]QLNöZGODRNQD
PRGDOQHJR
var $content = $(’<div class=”modal-content”/>’);
YDUFORVH ijEXWWRQUROH ĵEXWWRQĵFODVV ĵPRGDOFORVHĵ!]DPNQLMEXWWRQ!ij $modal.append($content, $close);
3
*G\VNU\SW]RVWDQLHGRïÈF]RQ\
GRVWURQ\PHWRG\center()
open()Lclose()ZNURNDFK
RGGREÚGÈGRVWÚSQH
ZRELHNFLHmodalGRXĝ\FLD
SU]H]LQQHVNU\SW\:\PLHQLRQH
PHWRG\QD]\ZDP\publicznymi
'RGDQLHSU]\FLVNX]DP\NDMÈFHJRGRRNQD
PRGDOQHJR
$close.on(’click’, function(e) { -HĝHOLXĝ\WNRZQLNNOLNQLHSU]\FLVN]DP\NDMÈF\RNQR
e.preventDefault();
8QLHPRĝOLZLHQLHVWDQGDUGRZHJRG]LDïDQLDïÈF]D
modal.close();
=DPNQLÚFLHRNQDPRGDOQHJR
});
return {
'RGDQLHNRGXGRRELHNWXPRGDO
center: function() {
=GHğQLRZDQLHPHWRG\FHQWHU 2EOLF]HQLHRGOHJïRĂFLRGJöUQHMLOHZHMNUDZÚG]LRNQDDE\Z\ĂURGNRZDÊRNQRPRGDOQH
YDUWRS 0DWKPD[ ZLQGRZKHLJKW PRGDORXWHU+HLJKW YDUOHIW 0DWKPD[ ZLQGRZZLGWK PRGDORXWHU:LGWK $modal.css({
6W\OH&66GODRNQDPRGDOQHJR
top: top + $window.scrollTop(),
:\ĂURGNRZDQLHZSLRQLH
left: left + $window.scrollLeft()
:\ĂURGNRZDQLHZSR]LRPLH
});
},
open: function(settings) {
=GHğQLRZDQLHPHWRG\RSHQ $content.empty().append(settings.content); =GHğQLRZDQLHQRZHM]DZDUWRĂFLGODRNQD
PRGDOQHJR
$modal.css({
width: settings.width || ’auto’,
height: settings.height || ’auto’
}).appendTo(’body’);
2NUHĂOHQLHZ\PLDUöZRNQDPRGDOQHJR
6]HURNRĂÊ
:\VRNRĂÊ
8PLHV]F]HQLHRNQDPRGDOQHJRQDVWURQLH
modal.center();
:\ZRïDQLHPHWRG\FHQWHU ZLQGRZ RQ ijUHVL]HijPRGDOFHQWHU :\ZRïDQLHPHWRG\SR]PLDQLHZLHONRĂFL
RNQDSU]HJOÈGDUNLLQWHUQHWRZHM
},
close: function() {
=GHğQLRZDQLHPHWRG\FORVH $content.empty();
8VXQLÚFLH]DZDUWRĂFL]RNQDPRGDOQHJR
$modal.detach();
8VXQLÚFLHRNQDPRGDOQHJR]HVWURQ\
ZLQGRZ RII ijUHVL]HijPRGDOFHQWHU 8VXQLÚFLHSURFHGXU\REVïXJL]GDU]Hñ
}
};
}());
3$1(/(=$:$572¥&,
511
PRZEGLĄDARKA ZDJĘĆ
3U]HJOÈGDUND]GMÚÊMHVWSU]\NïDGHPJDOHULLREUD]öZ
3RNOLNQLÚFLXPLQLDWXU\JïöZQ\REUD]MHVW]DVWÚSRZDQ\QRZ\P
:RPDZLDQ\PSU]\NïDG]LH
PRĝHV]]REDF]\ÊJïöZQ\REUD]
RUD]]QDMGXMÈFHVLÚSRGQLPWU]\
PLQLDWXU\
.RG+70/GODSU]HJOÈGDUNL
]GMÚÊVNïDGDVLÚ]
• -HGQHJRGXĝHJRHOHPHQWX
<div>SU]H]QDF]RQHJRGOD
REUD]XJïöZQHJR2EUD]\Z\ĂZLHWODQHZW\PHOHPHQFLH
<div>]RVWDMÈZ\ĂURGNRZDQH
LMHĂOL]DFKRG]LSRWU]HED
SU]HVNDORZDQHDE\]PLHĂFLï\
VLÚZ]DUH]HUZRZDQ\PGOD
QLFKPLHMVFX
• 'UXJLHJRHOHPHQWX<div>
SU]HFKRZXMÈFHJRPLQLDWXU\
REUD]öZNWöUHPRĝQD
Z\ĂZLHWOLÊ7HPLQLDWXU\
]QDMGXMÈVLÚZHZQÈWU]ïÈF]\
$WU\EXWhrefïÈF]DSURZDG]L
GRZLÚNV]HMZHUVMLGDQHJR
REUD]X
512
3$1(/(=$:$572¥&,
,QQHVNU\SW\JDOHULLREHMPXMÈ*DOOHULD*DOOHULğFL71*DOOHU\
ZAZNACZONE PIERWSZE ZDJĘCIE
ZDJĘCIE 1
MINIATURA
1
MINIATURA
2
MINIATURA
3
Wyświetlone
zdjęcie 1
Podświetlona miniatura 1
ZAZNACZONE DRUGIE ZDJĘCIE
ZDJĘCIE 2
MINIATURA
1
MINIATURA
2
MINIATURA
3
Wyświetlone
zdjęcie 2
.LHG\NOLNQLHV]PLQLDWXUÚ
REVHUZDWRU]GDU]HñZ\ZRïD
IXQNFMÚDQRQLPRZÈNWöUD
1. 6SUDZG]LZDUWRĂÊDWU\EXWX
href SURZDG]LGRZLÚNV]HM
ZHUVMLGDQHJRREUD]X 2. 8WZRU]\QRZ\HOHPHQW<img>
GODWHJRREUD]X
3. 6SUDZLĝHWHQHOHPHQW
EÚG]LHQLHZLGRF]Q\
4. 'RïÈF]\JRGRZLÚNV]HJR
HOHPHQWX<div>
3RZF]\WDQLXREUD]XIXQNFMD
RQD]ZLHcrossfade()MHVW
Xĝ\ZDQDGR]DVWRVRZDQLD
SU]HMĂFLDPLÚG]\LVWQLHMÈF\P
REUD]HPDQRZRĝÈGDQ\P
Podświetlona miniatura 2
3$1(/(=$:$572¥&,
513
UŻYCIE PRZEGLĄDARKI ZDJĘĆ
:FHOXXĝ\FLDSU]HJOÈGDUNL
]GMÚÊWZRU]\P\HOHPHQW<div>
SU]H]QDF]RQ\GRZ\ĂZLHWODQLD
REUD]XJïöZQHJR7HQHOHPHQW
MHVWSXVW\DZDUWRĂÊMHJR
DWU\EXWXid to photo-viewer
0LQLDWXU\]QDMGXMÈVLÚZLQQ\P
HOHPHQFLH<div>.DĝGD
PLQLDWXUDMHVWXPLHV]F]RQD
ZHOHPHQFLH<a>ZUD]]WU]HPD
DWU\EXWDPL
hrefSURZDG]LGRZLÚNV]HM
ZHUVMLREUD]X
•
• class]DZV]HPDZDUWRĂÊ
•
thumbDELHĝÈF\REUD]
JïöZQ\PDZDUWRĂÊactive
titleRSLVXMHREUD]WD
ZDUWRĂÊEÚG]LHSöěQLHMXĝ\WD
ZDWU\EXFLHalt
c11/photo-viewer.html
HTML
<div id=”photo-viewer”></div>
<div id=”thumbnails”>
<a href=”img/photo-1.jpg” class=”thumb active” title=”Elderberry mallow”>
<img src=”img/thumb-1.jpg” alt=”Elderberry Marshmallow” /></a>
<a href=”img/photo-2.jpg” title=”Rose Marshmallow” class=”thumb”>
<img src=”img/thumb-2.jpg” alt=”Rose Marshmallow” /></a>
<a href=”img/photo-3.jpg” title=”Chrysanthemum Marshmallow” class=”thumb”>
<img src=”img/thumb-3.jpg” alt=”Chrysanthemum Marshmallow” /></a>
</div>
6NU\SWSRMDZLDVLÚSU]HG]QDF]QLNLHP]DP\NDMÈF\P</body>-DNPRĝHV]]REDF]\ÊV\PXOXMH
NOLNQLÚFLHSLHUZV]HMPLQLDWXU\SU]H]Xĝ\WNRZQLND
(OHPHQW<div>Z\ĂZLHWODMÈF\REUD]JïöZQ\PD
ZDUWRĂÊrelativeGODZïDĂFLZRĂFLposition
(OHPHQWMHVW]DWHPZ\MÚW\]HVWDQGDUGRZHJR
VWUXPLHQLDHOHPHQWöZLNRQLHF]QHMHVWSRGDQLH
ZDUWRĂFLZïDĂFLZRĂFLheight
3RGF]DVZF]\W\ZDQLDREUD]öZDWU\EXWclassPD
ZDUWRĂÊis-loading Z\ĂZLHWODDQLPRZDQ\REUD]
ZIRUPDFLH*,) 3RZF]\WDQLXREUD]XZDUWRĂÊ
WD]RVWDMHXVXQLÚWD
-HĝHOLREUD]MHVWZLÚNV]\QLĝREV]DUSU]H]QDF]RQ\
QDMHJRZ\ĂZLHWOHQLHZïDĂFLZRĂFLmax-width
Lmax-heightVSRZRGXMÈMHJRSU]HVNDORZDQLH
DE\VLÚ]PLHĂFLï'RZ\ĂURGNRZDQLDREUD]X
ZHOHPHQFLHVWRVRZDQHMHVWSRïÈF]HQLHVW\OöZ
&66LNRGX-DYD6FULSWV]F]HJöïRZHREMDĂQLHQLH
]QDMG]LHV]ZSRGUR]G]LDOHķ6NU\SWSU]HJOÈGDUNL
]GMÚÊ ĵZSXQNFLHķ-DYD6FULSWĵ
514
3$1(/(=$:$572¥&,
c11/css/photo-viewer.css
#photo-viewer {
position: relative;
KHLJKWS[
RYHUĠRZKLGGHQ`
#photo-viewer.is-loading:after {
content: url(images/load.gif);
position: absolute;
WRS
ULJKW`
#photo-viewer img {
position: absolute;
PD[ZLGWK
PD[KHLJKW
WRS
OHIW`
a.active {
RSDFLW\`
CSS
ASYNCHRONICZNE
WCZYTYWANIE
I BUFOROWANIE OBRAZÓW
:VNU\SFLH SRND]DQ\PQDNROHMQHMVWURQLH ]DVWRVRZDQR
GZLHLQWHUHVXMÈFHWHFKQLNL
3UDFD]DV\QFKURQLF]Q\PZF]\W\ZDQLHP]DZDUWRĂFL
8WZRU]HQLHZïDVQHJRRELHNWXcache
WYŚWIETLENIE ODPOWIEDNIEGO
OBRAZU PODCZAS ASYNCHRONICZNEGO
WCZYTYWANIA OBRAZÓW
PROBLEM
:LÚNV]HREUD]\VÈZF]\W\ZDQHQDVWURQLHMHG\QLH
SRNOLNQLÚFLXPLQLDWXU\SU]H]Xĝ\WNRZQLNDDSU]HG
Z\ĂZLHWOHQLHPZVND]DQHJRREUD]XVNU\SWF]HND
QDMHJRSREUDQLHZFDïRĂFL
:F]\WDQLHZLÚNV]\FKREUD]öZPRĝH]DMÈÊFKZLOÚ
MHĝHOL]DWHPXĝ\WNRZQLNZNUöWNLPRGVWÚSLHF]DVX
NOLNQLHGZDUöĝQHREUD]\WR
1. 'UXJLNOLNQLÚW\REUD]PRĝH]RVWDÊZF]\WDQ\
V]\EFLHMQLĝSLHUZV]\L]RVWDÊZ\ĂZLHWORQ\
ZSU]HJOÈGDUFH
2. =RVWDQLH]DVWÈSLRQ\SU]H]SLHUZV]\REUD]NOLNQLÚW\SU]H]Xĝ\WNRZQLNDJG\EÚG]LHMXĝZF]\WDQ\
7RPRĝHXXĝ\WNRZQLNDZ\ZRïDÊZUDĝHQLHĝH
ZF]\WDQ\MHVWQLHSUDZLGïRZ\REUD]
3RGF]DVZF]\W\ZDQLDREUD]XSURFHGXUDREVïXJL
]GDU]HñVSUDZG]DF]\ZDUWRĂÊ]PLHQQHMsrc
SU]HFKRZXMÈFHMĂFLHĝNÚGRVWÚSXGRWHJRREUD]X RGSRZLDGDZDUWRĂFL]PLHQQHMrequest-HĝHOL
Xĝ\WNRZQLNNOLNQÈïLQQ\REUD]RGFKZLOLZF]\W\ZDQLDSLHUZV]HJRWRZDUWRĂFL]PLHQQ\FKrequest
LsrcVÈUöĝQHLREUD]QLH]RVWDQLHZ\ĂZLHWORQ\
BUFOROWANIE OBRAZÓW, KTÓRE SĄ
JUŻ WCZYTANE W PRZEGLĄDARCE
INTERNETOWEJ
PROBLEM
.LHG\Xĝ\WNRZQLNĝÈGDZF]\WDQLDGXĝHJRREUD]X
NOLNDMÈFMHJRPLQLDWXUÚ QDVWÚSXMHXWZRU]HQLH
QRZHJRHOHPHQWX<img>LMHJRGRGDQLHQDVWURQLH
-HĝHOLXĝ\WNRZQLNSRZUöFLGRZF]HĂQLHMZ\EUDQHJRREUD]XWRQLHFKFHP\SRQRZQHJRWZRU]HQLD
HOHPHQWXLZF]\W\ZDQLDWHJRREUD]X
ROZWIĄZANIE
ROZWIĄZANIE
.LHG\Xĝ\WNRZQLNNOLNQLHPLQLDWXUÚ
¥FLHĝNDGRVWÚSXGRREUD]XMHVWSU]HFKRZ\ZDQD
SU]H]]PLHQQÈQDSR]LRPLHIXQNFMLRQD]ZLH
src
=PLHQQDJOREDOQDRQD]ZLHrequestUöZQLHĝ
MHVWXDNWXDOQLDQDĂFLHĝNÈGRVWÚSXGRREUD]X
3URFHGXUDREVïXJL]GDU]HñMHVWVNRQğJXURZDQD
GRZ\ZRïDQLDIXQNFMLDQRQLPRZHMSRZF]\WDQLX
WHJRREUD]X
7ZRU]\P\SURVW\RELHNWLQDGDMHP\PXQD]ZÚ
cache=DNDĝG\PUD]HPJG\WZRU]RQ\EÚG]LH
QRZ\HOHPHQW<img>EÚG]LHRQXPLHV]F]RQ\
ZRELHNFLHcache
•
•
•
:WHQVSRVöESRGF]DVĝÈGDQLDREUD]XNRGPRĝH
VSUDZG]LÊF]\RGSRZLDGDMÈF\PXHOHPHQW<img>
]QDMGXMHVLÚZEXIRU]H ]DPLDVWSRQRZQLHWZRU]\Ê
HOHPHQWLZF]\W\ZDÊREUD] 3$1(/(=$:$572¥&,
515
SKRYPT PRZEGLĄDARKI ZDJĘĆ (1)
:W\PVNU\SFLHZSURZDG]RQRSHZQHQRZHNRQFHSFMHLGODWHJRMHJRRPöZLHQLH]DELHUDDĝF]WHU\
VWURQ\1DGZöFKSLHUZV]\FKVWURQDFK]REDF]\V]
]PLHQQHJOREDOQHLIXQNFMÚcrossfade()
1
Przechowywane w zmiennych:
request: ostatnio żądany obraz
$current: aktualnie wyświetlany obraz
cache: obiekt przeznaczony do przechowywania
wczytanych obrazów
$frame: kontener dla obrazu
$thumbs: kontener dla miniatur
Funkcja: crossfade($img)
Przejście do nowego obrazu
(podawanego jako parametr)
2
3
N
Czy aktualnie
jest wyświetlany
obraz?
T
Zatrzymanie animacji i wygaszenie starego obrazu
4
Wyśrodkowanie nowego obrazu
za pomocą CSS
5
Pojawienie się nowego obrazu
6
Przechowywanie nowego obrazu w $current
1. 8WZRU]HQLH]HVWDZX]PLHQQ\FKJOREDOQ\FK
0RJÈE\ÊXĝ\ZDQHZFDï\PVNU\SFLH]DUöZQR
ZRPöZLRQHMQDWHMVWURQLHIXQNFMLcrossfade()
MDNLSURFHGXUDFKREVïXJL]GDU]Hñ ]RESRGUR]G]LDï
ķ6NU\SWSU]HJOÈGDUNL]GMÚÊ ĵ 2. )XQNFMDcrossfade()EÚG]LHZ\ZRïDQDJG\
Xĝ\WNRZQLNNOLNQLHPLQLDWXUÚ=DGDQLHPIXQNFMLMHVW
]DSHZQLHQLHHOHJDQFNLHJRSU]HMĂFLDPLÚG]\VWDU\P
LQRZ\PREUD]HP
3. .RQVWUXNFMDifVSUDZG]DF]\REUD]MHVWZF]\WDQ\
-HĝHOLWDNZ\NRQ\ZDQHVÈGZLHRSHUDFMH0HWRGD
.stop()]DWU]\PXMHELHĝÈFÈDQLPDFMÚDQDVWÚSQLH
PHWRGD.fadeOut()SRZRGXMHXNU\FLHREUD]X
4. :FHOXZ\ĂURGNRZDQLDREUD]XZHOHPHQFLH
NRQLHF]QHMHVW]GHğQLRZDQLHGZöFKZïDĂFLZRĂFL
&66:SRïÈF]HQLX]UHJXïDPL&66SRND]DQ\PL
ZSRGUR]G]LDOHķ8ĝ\FLHSU]HJOÈGDUNL]GMÚÊĵWHZïDĂFLZRĂFL&66VSRZRGXMÈZ\ĂURGNRZDQLHREUD]XZMHJR
NRQWHQHU]H 3DWU]GLDJUDP\ZSRGUR]G]LDOHķ6NU\SW
SU]HJOÈGDUNL]GMÚÊ ĵZSXQNFLHķ:\ĂURGNRZDQLH
REUD]Xĵ i) marginLeftĽSRELHUDV]HURNRĂÊREUD]X]DSRPRFÈ
.width()G]LHOLMÈSU]H]GZDDQDVWÚSQLHREOLF]RQÈ
ZDUWRĂÊZ\NRU]\VWXMHMDNRXMHPQ\PDUJLQHV
ii) marginTopĽSRELHUDZ\VRNRĂÊREUD]X]DSRPRFÈ
.height()G]LHOLMÈSU]H]GZDDQDVWÚSQLHREOLF]RQÈ
ZDUWRĂÊZ\NRU]\VWXMHMDNRXMHPQ\PDUJLQHV
OBIEKT CACHE
,GHDRELHNWXcachePRĝHZ\GDZDÊVLÚVNRPSOLNRZDQDDOHZV]\VWNLHRELHNW\WRSRSURVWX]ELöU
SDUNOXF]ZDUWRĂÊ3RSUDZHMVWURQLHPRĝHV]
]REDF]\ÊSU]\NïDGRZ\Z\JOÈGRELHNWXcache
.LHG\REUD]MHVWĝÈGDQ\QDVNXWHNNOLNQLÚFLDQRZHM
PLQLDWXU\GRRELHNWXcache]RVWDMHGRGDQDQRZD
ZïDĂFLZRĂÊ
.OXF]GRGDQ\GRRELHNWXcacheWRĂFLHĝND
GRVWÚSXGRREUD]X SRQLĝHMRGZRïXMHP\VLÚ
GRQLHMMDNRVUF :DUWRĂFLÈMHVWNROHMQ\RELHNW
RGZöFKZïDĂFLZRĂFLDFK
VUF.$imgSU]HFKRZXMHRGQLHVLHQLHGRRELHNWX
M4XHU\]DZLHUDMÈFHJRQRZRXWZRU]RQ\HOHPHQW
<img>
VUF.isLoadingWRZïDĂFLZRĂÊZVND]XMÈFD
F]\REUD]MHVWDNWXDOQLHZF]\W\ZDQ\ ZDUWRĂÊ
ERRORZVND •
•
•
516
3$1(/(=$:$572¥&,
var cache = {
“c11/img/photo-1.jpg”: {
“$img”: M4XHU\REMHFW,
“isLoading”: false
},
“c11/img/photo-2.jpg”: {
“$img”: M4XHU\REMHFW,
“isLoading”: false
},
“c11/img/photo-3.jpg”: {
“$img”: M4XHU\REMHFW,
“isLoading”: false
}
}
5. -HĝHOLQRZ\REUD]MHVWDNWXDOQLHDQLPRZDQ\
QDVWÚSXMH]DWU]\PDQLHDQLPDFMLLREUD]SRMDZLD
VLÚQDVWURQLH
6. :UHV]FLHQRZ\REUD]VWDMHVLÚREUD]HPELHĝÈF\PLMHVWSU]HFKRZ\ZDQ\Z]PLHQQHM$current
c11/js/photo-viewer.js
JAVASCRIPT
1
var
var
var
var
var
request;
$current;
cache
= {};
$frame = $(’#photo-viewer’);
$thumbs = $(’.thumb’);
2
function crossfade($img) {
2VWDWQLRĝÈGDQ\REUD]
$NWXDOQLHZ\ĂZLHWODQ\REUD]
2ELHNWFDFKH
.RQWHQHUGODREUD]X
.RQWHQHUGODPLQLDWXU
)XQNFMDUHDOL]XMÈFDSU]HMĂFLHPLÚG]\
REUD]DPL
1RZ\REUD]MHVWSRGDZDQ\MDNRSDUDPHWU
if ($current) {
-HĝHOLDNWXDOQLHMHVWZ\ĂZLHWODQ\REUD]
$current.stop().fadeOut(’slow’); =DWU]\PDQLHDQLPDFMLLXNU\FLHREUD]X
}
3
$img.css({
marginLeft: -$img.width() / 2,
4
marginTop: -$img.height() / 2
=GHğQLRZDQLHPDUJLQHVöZ&66GODREUD]X
0DUJLQHVXMHPQ\RZLHONRĂFLSRïRZ\
V]HURNRĂFLREUD]X
0DUJLQHVXMHPQ\RZLHONRĂFLSRïRZ\Z\VRNRĂFL
REUD]X
});
5
6
$img.stop().fadeTo(’slow’, 1);
=DWU]\PDQLHDQLPDFMLQRZHJRREUD]XLMHJR
SRMDZLHQLHVLÚ
$current = $img;
1RZ\REUD]VWDMHVLÚELHĝÈF\P
}
WYŚRODKOWANIE OBRAZU
i) :\ĂURGNRZDQLHREUD]X
Z\PDJDWU]HFKNURNöZ:DUNXV]XVW\OöZSR]\FMRQRZDQLH
DEVROXWQHMHVWZ\NRU]\VW\ZDQH
GRXPLHV]F]HQLDZOHZ\P
JöUQ\PURJXHOHPHQWX]DZLHUDMÈFHJRREUD]
ii) :DUNXV]XVW\OöZREUD]MHVW
SU]HVXQLÚW\ZGöïRUD]ZSUDZR
RV]HURNRĂFLLZ\VRNRĂFL
kontenera
V]HURNRĂÊS[2 S[
Z\VRNRĂÊS[2 S[
iii) :VNU\SFLHPDUJLQHV\
XMHPQHSRZRGXMÈSU]HVXQLÚFLH
REUD]XZJöUÚRUD]ZOHZR
RSRïRZÚV]HURNRĂFLLZ\VRNRĂFL
obrazu
V]HURNRĂÊS[2 S[
Z\VRNRĂÊS[2 S[
3$1(/(=$:$572¥&,
517
SKRYPT PRZEGLĄDARKI ZDJĘĆ (2)
15
1
Zdarzenie: click w miniaturze
Symulacja kliknięcia pierwszej miniatury
przez użytkownika
FUNKCJA ANONIMOWA
2
3
Utworzenie zmiennych: $img oznacza obraz
do wczytania, src wskazuje ścieżkę dostępu
do obrazu, request to ścieżka do ostatniego
obrazu. Uniemożliwienie domyślnego
działania łącza
4
Uaktualnienie aktywnej miniatury
5
N
Czy ten obraz
znajduje się
w buforze?
T
Czy ten obraz
nadal jest
wczytywany?
N
T
Wywołanie funkcji: crossfade()
6
Utworzenie elementu <img> i przechowywanie
go w $img
7
Uaktualnienie obiektu cache i ustawienie
wartości true właściwości isLoading
8
Zdarzenie: load w nowym obrazie
13
Dodanie klasy is-loading do elementu
14
Uaktualnienie atrybutów src i alt obrazu
FUNKCJA ANONIMOWA
9
Ukrycie obrazu
10
Usunięcie klasy is-loading i dodanie obrazu
11
Uaktualnienie obiektu cache i ustawienie
wartości false właściwości isLoading
12
N
Czy obraz nadal jest
obrazem ostatnio
żądanym?
Call function: crossfade()
518
3$1(/(=$:$572¥&,
T
1. 0LQLDWXU\VÈRSDNRZDQHïÈF]DPL=DNDĝG\P
UD]HPJG\Xĝ\WNRZQLNNOLNQLHPLQLDWXUÚQDVWÚSXMH
Z\ZRïDQLHIXQNFMLDQRQLPRZHM
2. 8WZRU]RQH]RVWDMÈWU]\]PLHQQH
i) $imgVïXĝ\GRXWZRU]HQLDQRZ\FKHOHPHQWöZ
<img>NWöUHEÚGÈSU]HFKRZ\ZDï\ZLÚNV]HREUD]\
SRGF]DVLFKZF]\W\ZDQLD
ii) src ]PLHQQDQDSR]LRPLHIXQNFML SU]HFKRZXMH
ĂFLHĝNÚGRVWÚSXGRQRZHJRREUD]X WRZDUWRĂÊ
DWU\EXWXhrefïÈF]D iii) request ]PLHQQDJOREDOQD SU]HFKRZXMHWÚ
VDPÈĂFLHĝNÚGRVWÚSX
3. 8QLHPRĝOLZLHQLHïÈF]RPZF]\WDQLDREUD]X
4. 8VXQLÚFLHNODV\active]HwszystkichPLQLDWXU
RUD]GRGDQLHWHMNODV\GRNOLNQLÚWHMPLQLDWXU\
5. -HĝHOLREUD]]QDMGXMHVLÚZRELHNFLHcacheL]RVWDï
ZF]\WDQ\VNU\SWZ\ZRïXMHIXQNFMÚcrossfade()
6. -HĝHOLREUD]QLH]RVWDïMHV]F]HZF]\WDQ\VNU\SW
WZRU]\QRZ\HOHPHQW<img>
7. 'RGDQLHHOHPHQWXGREXIRUDLSU]\SLVDQLH
ZDUWRĂFLtrueZïDĂFLZRĂFLisLoading
8. 1DW\PHWDSLHREUD]QLH]RVWDïMHV]F]HZF]\WDQ\
XWZRU]RQ\MHVWW\ONRSXVW\HOHPHQW<img> 3RZF]\WDQLXREUD]X]GDU]HQLHloadZ\ZRïXMH
IXQNFMÚ NWöUÈWU]HED]DSLVDÊprzedZF]\WDQLHP
REUD]X 9. )XQNFMDSU]HGHZV]\VWNLPXNU\ZDZF]\W\ZDQ\
REUD]
10. 1DVWÚSQLH]HOHPHQWXXVXZDQDMHVWNODVD
is-loadingDQRZ\REUD]]RVWDMHGRGDQ\GRUDPNL
11. :RELHNFLHcacheZïDĂFLZRĂFLisLoadingSU]\SLV\ZDQDMHVWZDUWRĂÊfalse ZWUDNFLHG]LDïDQLD
IXQNFMLREUD]MHVWMXĝZF]\WDQ\ 12. .RQVWUXNFMDifVSUDZG]DF]\ZïDĂQLHZF]\WDQ\
REUD]MHVWW\PNWöU\E\ïĝÈGDQ\MDNRRVWDWQL$E\
]REDF]\ÊMDNWRVLÚRGE\ZDSRZUöÊSRQRZQLHGR
NURNX
=PLHQQDsrcSU]HFKRZXMHĂFLHĝNÚGRVWÚSX
GRZïDĂQLHZF]\WDQHJRREUD]X0D]DNUHVQD
SR]LRPLHIXQNFML
=PLHQQDrequestMHVWXDNWXDOQLDQD]DNDĝG\P
UD]HPJG\Xĝ\WNRZQLNNOLNQLHREUD]0D]DNUHV
JOREDOQ\
'ODWHJRWHĝMHĝHOLXĝ\WNRZQLNNOLNQLHLQQÈPLQLDWXUÚ
SRUR]SRF]ÚFLXZF]\W\ZDQLDREUD]XZDUWRĂFL
]PLHQQ\FKsrc i requestEÚGÈUöĝQHLĝDGHQREUD]
QLH]RVWDQLHZF]\WDQ\-HĝHOLZDUWRĂFLREX]PLHQQ\FKVÈWDNLHVDPHWRQDVWÚSXMHZ\ZRïDQLHIXQNFML
crossfade()
•
•
13. 3R]DNRñF]HQLXSU]\JRWRZDñPRĝQDSU]\VWÈSLÊGRZF]\WDQLDREUD]X.ODVDis-loading
]RVWDMHGRGDQDGRUDPNL
14. 3U]H]GRGDQLHZDUWRĂFLGRDWU\EXWXsrc
REUD]XQDVWÚSXMHUR]SRF]ÚFLHZF]\W\ZDQLD
REUD]X:DUWRĂÊDWU\EXWXalt]RVWDQLHSREUDQD
]DWU\EXWXtitleïÈF]D
15. 2VWDWQLZLHUV]VNU\SWXV\PXOXMHNOLNQLÚFLH
SLHUZV]HMPLQLDWXU\SU]H]Xĝ\WNRZQLND
7RVSRZRGXMHZF]\WDQLHSLHUZV]HJRREUD]X
SRXUXFKRPLHQLXVNU\SWX
c11/js/photo-viewer.js
JAVASCRIPT
1
2
$(document).on(’click’, ’.thumb’, function(e){ 3RNOLNQLÚFLXPLQLDWXU\
var $img;
8WZRU]HQLH]PLHQQHMORNDOQHMRQD]ZLHLPJ
var src = this.href;
3U]HFKRZ\ZDQLHĂFLHĝNLGRVWÚSXGRREUD]X
request = src;
3RQRZQLHSU]HFKRZ\ZDQLHĂFLHĝNLGRVWÚSXGRREUD]X
3
e.preventDefault();
8QLHPRĝOLZLHQLHGRP\ĂOQHMDNFMLïÈF]D
4
$thumbs.removeClass(’active’);
$(this).addClass(’active’);
8VXQLÚFLHNODV\DFWLYH]HZV]\VWNLFKPLQLDWXU
'RGDQLHNODV\DFWLYHGRNOLNQLÚWHMPLQLDWXU\
5
6
7
if (cache.hasOwnProperty(src)) {
-HĝHOLRELHNWFDFKH]DZLHUDWHQREUD]
if (cache[src].isLoading === false) { DZDUWRĂFLÈZïDĂFLZRĂFLLV/RDGLQJMHVWIDOVH
crossfade(cache[src].$img);
WRZ\ZRï\ZDQDMHVWIXQNFMDFURVVIDGH }
} else {
1DWRPLDVWMHĝHOLREUD]QLH]QDMGXMHVLÚZEXIRU]H
$img = $(’<img/>’);
3U]HFKRZ\ZDQLHSXVWHJRHOHPHQWXLPJ!Z]PLHQQHMLPJ
cache[src] = {
8PLHV]F]HQLHWHJRREUD]XZEXIRU]H
$img: $img,
'RGDQLHĂFLHĝNLGRVWÚSXGRREUD]X
isLoading: true
3U]\SLVDQLHZïDĂFLZRĂFLLV/RDGLQJZDUWRĂFLWUXH
};
1DVWÚSQHNLONDZLHUV]\]RVWDQLHZ\NRQDQ\FKSRZF]\WDQLXREUD]XDOHQDMSLHUZWU]HED
SRF]\QLÊSU]\JRWRZDQLD
$img.on(’load’, function() {
.LHG\REUD]]RVWDQLHZF]\WDQ\
$img.hide();
QDOHĝ\JRXNU\Ê
8VXQLÚFLHNODV\LVORDGLQJ]UDPNLLGRïÈF]HQLHGRQLHMQRZHJRREUD]X
$frame.removeClass(’is-loading’).append($img);
cache[src].isLoading = false; 8DNWXDOQLHQLHZïDĂFLZRĂFLLV/RDGLQJZRELHNFLHFDFKH
-HĝHOLWRQDGDOMHVWRVWDWQLRĝÈGDQ\REUD]
if (request === src) {
crossfade($img);
:\ZRïDQLHIXQNFMLFURVVIDGH }
5R]ZLÈ]DQLHSUREOHPöZ]DV\QFKURQLF]Q\PZF]\W\ZDQLHP
});
8
9
10
11
12
13
$frame.addClass(’is-loading’); 'RGDQLHNODV\LVORDGLQJGRUDPNL
14
$img.attr({
’src’: src,
’alt’: this.title || ’’
});
8VWDZLHQLHDWU\EXWöZZHOHPHQFLHLPJ!
'RGDQLHDWU\EXWXVUFZVND]XMÈFHJRZF]\W\ZDQ\REUD]
'RGDQLHW\WXïXRLOH]RVWDïSRGDQ\ZïÈF]X
}
});
15
2VWDWQLZLHUV]MHVWZ\NRQ\ZDQ\UD] SRZF]\WDQLXSR]RVWDïHMF]ÚĂFLVNU\SWX LPDQDFHOX
Z\ĂZLHWOHQLHSLHUZV]HJRREUD]X
ijWKXPEij HT FOLFN 6\PXODFMDNOLNQLÚFLDSLHUZV]HMPLQLDWXU\
3$1(/(=$:$572¥&,
519
RESPONSYWNE SLAJDY
6ODMG\SR]ZDODMÈQDXïRĝHQLHVHULLHOHPHQWöZQDVRELHDOHZGDQHMFKZLOL
Z\ĂZLHWODQ\MHVWW\ONRMHGHQ1DVWÚSQLHXNU\WHHOHPHQW\VÈZ\ĂZLHWODQH
MHGHQSRGUXJLP
6ODMG\ZF]\WXMÈNLONDSDQHOL
FKRÊMHGQRF]HĂQLHZ\ĂZLHWODQ\
MHVWW\ONRMHGHQ'RVWDUF]DQH
VÈWDNĝHSU]\FLVNLSR]ZDODMÈFH
Xĝ\WNRZQLNRPQDSRUXV]DQLH
VLÚPLÚG]\VODMGDPL3RQDGWR
LVWQLHMHPRĝOLZRĂÊRGPLHU]DQLD
F]DVXFRSR]ZDODQDDXWRPDW\F]QHSU]HFKRG]HQLHPLÚG]\
SRV]F]HJöOQ\PLVODMGDPL
ZXVWDORQ\FKRGVWÚSDFKF]DVX
:NRG]LH+70/VODMG\]DZLHUDMÈVLÚZHOHPHQFLH<div>
NWöUHJRDWU\EXWclassPD
ZDUWRĂÊslider-viewer$E\
VODMG\PRJï\G]LDïDÊSRWU]HEQH
VÈGZDNROHMQHHOHPHQW\<div>
• .RQWHQHUQDVODMG\-HJR
DWU\EXWclassPDZDUWRĂÊ
slide-group:HZQÈWU]NRQWHQHUDSRV]F]HJöOQHVODMG\
]QDMGXMÈVLÚZRGG]LHOQ\FK
HOHPHQWDFK<div>
• .RQWHQHUQDSU]\FLVNX-HJR
DWU\EXWclassPDZDUWRĂÊ
slide-buttons3U]\FLVNL
]RVWDQÈGRGDQHSU]H]VNU\SW
-HĝHOLNRG+70/]DZLHUD]QDF]QLNLGODZLÚFHMQLĝW\ONRMHGQHJR
VODMGXVNU\SWDXWRPDW\F]QLH
SU]HNV]WDïFLMHQDRGG]LHOQH
VODMG\
520 3$1(/(=$:$572¥&,
,QQHVNU\SW\VODMGöZREHMPXMÈ8QVOLGHU$Q\WKLQJ6OLGHU1LYR6OLGHU
L:2:6OLGHU2EVïXJDVODMGöZMHVWRIHURZDQDWDNĝHSU]H]M4XHU\8,
L%RRWVWUDS
3RGF]DVSLHUZV]HJRZF]\WDQLDVWURQ\VW\OH
&66XNU\ZDMÈZV]\VWNLHVODMG\FRSRZRGXMH
Z\FLÈJQLÚFLHLFK]QRUPDOQHJRSU]HSï\ZX
HOHPHQWöZ1DVWÚSQLHUHJXïD&66XVWDZLDZDUWRĂÊ
blockZïDĂFLZRĂFLdisplaySLHUZV]HJRVODMGX
FRR]QDF]DMHJRZ\ĂZLHWOHQLH
6NU\SWSU]HSURZDG]DLWHUDFMÚSU]H]ZV]\VWNLH
VODMG\L
SU]\SLVXMHLPQXPHU\LQGHNVöZ
GRGDMHSU]\FLVNLSRGJUXSÈVODMGöZ
.LHG\SU]\FKRG]LGRSRUXV]DQLDVLÚPLÚG]\VODMGDPL LXWZRU]HQLDHIHNWXķZMHĝGĝDQLDĵ QXPHU
LQGHNVXQRZHJRVODMGXMHVWZLÚNV]\QLĝQXPHU
LQGHNVXELHĝÈFHJRVODMGXDQDVWÚSQLHQRZ\
VODMGMHVWXPLHV]F]DQ\SRSUDZHMVWURQLHJUXS\
.LHG\ZLGRF]Q\VODMGEÚG]LHDQLPRZDQ\ZOHZÈ
VWURQÚQRZ\DXWRPDW\F]QLH]DF]QLHSRMDZLDÊVLÚ
ZZLGRNX]DMPXMÈFPLHMVFHVWDUHJR
•
•
-HĂOLSU]\JRWRZDQRQDSU]\NïDGF]WHU\VODMG\SR
SLHUZV]\PZF]\WDQLXVWURQ\GRP\ĂOQLH]RVWDQLH
Z\ĂZLHWORQ\SLHUZV]\VODMGDSRGQLP]QDMGÈVLÚ
F]WHU\SU]\FLVNL
-HĝHOLQXPHULQGHNVXQRZHJRVODMGXMHVWPQLHMV]\
QLĝQXPHULQGHNVXELHĝÈFHJRWRQRZ\VODMGEÚG]LH
XPLHV]F]RQ\SROHZHMVWURQLHDNWXDOQLHZ\ĂZLHWODQHJR.LHG\ZLGRF]Q\VODMGEÚG]LHDQLPRZDQ\
ZSUDZÈVWURQÚQRZ\DXWRPDW\F]QLH]DF]QLH
SRMDZLDÊVLÚZZLGRNX]DMPXMÈFPLHMVFHVWDUHJR
1XPHU\LQGHNVXSR]ZDODMÈVNU\SWRZLQDLGHQW\ğNDFMÚSRV]F]HJöOQ\FKVODMGöZ:FHOXXVWDOHQLD
DNWXDOQLHZ\ĂZLHWODQHJRVODMGXVNU\SWXĝ\ZD
]PLHQQHMRQD]ZLHcurrentIndex SU]HFKRZXMH
RQDQXPHULQGHNVXELHĝÈFHJRVODMGX 3RZF]\WDQLXVWURQ\EÚG]LHWRZDUWRĂÊF]\OLZ\ĂZLHWODQ\
MHVWSLHUZV]\VODMG6NU\SWPXVLWDNĝHZLHG]LHÊ
NWöU\VODMGEÚG]LHZ\ĂZLHWORQ\MDNRQDVWÚSQ\VWÈG
]PLHQQDnewSlide
3R]DNRñF]HQLXDQLPDFMLXNU\WHVODMG\]RVWDQÈ
XPLHV]F]RQHSRGDNWXDOQLHZ\ĂZLHWODQ\P
3$1(/(=$:$572¥&, 521
UŻYCIE SLAJDÓW
*G\GRïÈF]\P\VNU\SWGRVWURQ\GRZROQ\NRG
+70/RSDUW\QDSRQLĝV]HMVWUXNWXU]HEÚG]LHPöJï
E\ÊVNRQZHUWRZDQ\QDVODMG\
1DVWURQLHPRĝH]QDMGRZDÊVLÚZLHOHJUXSVODMGöZDNDĝGD]QLFKEÚG]LHREVïXJLZDQDSU]H]WHQ
VDPVNU\SWNWöU\SU]HGVWDZLRQRZSRGUR]G]LDOH
ķ6NU\SWVODMGöZĵZSXQNFLHķ-DYD6FULSWĵ
c11/slider.html
HTML
<div class=”slide-viewer”>
<div class=”slide-group”>
<div class=”slide slide-1”>=DZDUWRĂÊVODMGX!</div>
<div class=”slide slide-2”>=DZDUWRĂÊVODMGX!</div>
<div class=”slide slide-3”>=DZDUWRĂÊVODMGX!</div>
<div class=”slide slide-4”>=DZDUWRĂÊVODMGX!</div>
</div>
</div>
<div class=”slide-buttons”></div>
6]HURNRĂÊHOHPHQWXslide-viewerQLHMHVWQD
VWDïHXVWDORQDDZLÚFG]LDïDZUHVSRQV\ZQ\FK
XNïDGDFKVWURQ-HGQDNZ\VRNRĂÊPXVLE\ÊRNUHĂORQDSRQLHZDĝGODVODMGXXVWDORQRSR]\FMRQRZDQLHDEVROXWQH SRZRGXMHWRXVXQLÚFLHHOHPHQWX
]HVWDQGDUGRZHJRSU]HSï\ZXHOHPHQWöZLEH]
SRGDQLDZ\VRNRĂFLGRP\ĂOQLHE\ïDE\VWRVRZDQD
Z\VRNRĂÊS[ .DĝG\VODMGPDWDNLHVDPHZ\PLDU\MDNHOHPHQW
slide-viewer-HĝHOL]DZDUWRĂÊVODMGXMHVWZLÚNV]DZïDĂFLZRĂÊRYHUĠRZHOHPHQWXslide-viewer
SRZRGXMHXNU\FLHQDGPLDURZ\FKIUDJPHQWöZ
VODMGXZ\NUDF]DMÈF\FKSR]DUDPNÚ-HĝHOLVODMG
MHVWPQLHMV]\WR]RVWDQLHXPLHV]F]RQ\ZOHZ\P
JöUQ\PURJX
c11/css/slider.css
slide-viewer {
position: relative;
RYHUĠRZKLGGHQ
KHLJKWS[`
.slide-group {
ZLGWK
KHLJKW
position: relative;}
.slide {
ZLGWK
KHLJKW
display: none;
position: absolute;}
VOLGHğUVWFKLOG^
display: block;}
522 3$1(/(=$:$572¥&,
CSS
OGÓLNY OPIS SKRYPTU
SLAJDÓW
M4XHU\Z\V]XNXMHJUXS\VODMGöZZNRG]LH]QDF]QLNöZ+70/
1DVWÚSQLHGODNDĝGHJRMHVWZ\NRQ\ZDQDIXQNFMDDQRQLPRZDNWöUD
WZRU]\JUXSÚVODMGöZ:IXQNFMLWHMLVWQLHMÈF]WHU\NOXF]RZHIUDJPHQW\
1. KONFIGURACJA
2. ZMIANA SLAJDU — MOVE()
.DĝGDJUXSDVODMGöZZ\PDJDSHZQ\FK]PLHQQ\FK]QDMGXMÈVLÚRQHQDSR]LRPLHIXQNFMLLW\P
VDP\P
PRJÈPLHÊUöĝQHZDUWRĂFLGODSRV]F]HJöOQ\FK
VODMGöZ
QLHSRZRGXMÈNRQĠLNWX]H]PLHQQ\PLVSR]D
VNU\SWX
)XQNFMDmove()MHVWZ\NRU]\VW\ZDQDGRSU]HMĂFLD
PLÚG]\VODMGDPLRUD]XDNWXDOQLHQLDSU]\FLVNöZ
ZVND]XMÈF\FKZ\ĂZLHWODQ\VODMG:\ZRïDQLH
WHMIXQNFMLQDVWÚSXMHSRNOLNQLÚFLXSU]\FLVNX
SU]H]Xĝ\WNRZQLNDDWDNĝH]SR]LRPXIXQNFML
advance()
3. LICZNIK CZASU WYŚWIETLAJĄCY
KOLEJNY SLAJD PO UPŁYWIE 4 SEKUND
— ADVANCE()
4. PRZETWARZANIE KAŻDEGO SLAJDU
W GRUPIE
•
•
/LF]QLNF]DVXSRZRGXMHZ\ZRïDQLHIXQNFMLmove()
SRXSï\ZLHVHNXQG2ELHNW-DYD6FULSWwindow
SRVLDGDPHWRGÚsetTimeout()NWöUDXPRĝOLZLD
XWZRU]HQLHOLF]QLNDF]DVX=DGDQLHPWHMPHWRG\
MHVWZ\NRQDQLHIXQNFMLSRXSï\ZLHSRGDQHMOLF]E\
PLOLVHNXQG/LF]QLNF]DVXEDUG]RF]ÚVWRMHVW
SU]\SLV\ZDQ\]PLHQQHMLXĝ\ZDSRQLĝV]HMVNïDGQL
.RGZ\NRQXMHLWHUDFMÚSU]H]ZV]\VWNLHVODMG\
ZFHOX
XWZRU]HQLDJUXSVODMGöZ
GRGDQLDSU]\FLVNXGODNDĝGHJRVODMGXZUD]
]SURFHGXUÈREVïXJL]GDU]HñZ\ZRïXMÈFÈ
IXQNFMÚmove()SRNOLNQLÚFLXSU]\FLVNXSU]H]
Xĝ\WNRZQLND
•
•
var WLPHRXW = setTimeout(IXQFWLRQ, GHOD\);
• WLPHRXWWRQD]ZD]PLHQQHM]Z\NRU]\VWDQHMGR
LGHQW\ğNDFMLOLF]QLNDF]DVX
• IXQFWLRQWRIXQNFMDQD]ZDQDOXEDQRQLPRZD
• GHOD\WROLF]EDPLOLVHNXQGMDNLHPXV]È
XSï\QÈÊ]DQLPQDVWÈSLZ\ZRïDQLHIXQNFML
$E\]DWU]\PDÊOLF]QLNF]DVXQDOHĝ\Z\ZRïDÊ
PHWRGÚclearTimeout()3RELHUDRQDMHGHQ
SDUDPHWUMDNLPMHVW]PLHQQDXĝ\WDGRLGHQW\ğNDFMLOLF]QLNDF]DVX
clearTimeout(timeout);
3$1(/(=$:$572¥&, 523
SKRYPT SLAJDÓW
1
ITERACJA PRZEZ WSZYSTKIE GRUPY
SLAJDÓW
FUNKCJA ANONIMOWA:
Utworzenie grupy slajdów dla danego kodu
znaczników
2
7
Przechowywane w zmiennych: $this:
bieżąca grupa slajdów, $group: kontener slajdów, $slides: wszystkie slajdy, buttonArray:
przyciski, currentIndex: bieżący slajd,
timeout: przechowuje licznik czasu
ITERACJA PRZEZ WSZYSTKIE
SLAJDY
FUNKCJA ANONIMOWA:
Utworzenie przycisku dla każdego
slajdu
8
9
Utworzenie przycisku dla tego elementu
N
T
Czy to jest
bieżący slajd?
Dodaj klasę:
active
Zdarzenie: click danego
przycisku opcji
10
11
Dodanie
przycisku do
kontenera
i tablicy
Wywołanie
funkcji move() —
patrz podrozdział
„Funkcja move()”
Przejście do następnego slajdu
12
Wywołanie funkcji advance()
4
FUNKCJA: advance()
Wyczyszczenie i wyzerowanie licznika
czasu
5
Wywołanie clearTimeout()
i setTimeout()
6
N
Czy to jest
ostatni slajd?
Wywołanie
move() i przejście
do kolejnego
slajdu
T
Wywołanie
move() i przejście
do pierwszego
slajdu
Przejście do kolejnej grupy slajdów
524 3$1(/(=$:$572¥&,
1. 1DVWURQLHLQWHUQHWRZHMPRĝH]QDMGRZDÊVLÚZLHOH
JUXSVODMGöZDZLÚFG]LDïDQLHVNU\SWXUR]SRF]\QD
VLÚRGZ\V]XNDQLDZV]\VWNLFKHOHPHQWöZNWöU\FK
DWU\EXWclassPDZDUWRĂÊslider'ODNDĝGHJRWHJR
URG]DMXHOHPHQWXZ\ZRï\ZDQDMHVWIXQNFMDDQRQLPRZDRGSRZLHG]LDOQD]DSU]HWZRU]HQLHJUXS\VODMGöZ
2. 8WZRU]RQH]RVWDMÈ]PLHQQHSU]H]QDF]RQH
GRSU]HFKRZ\ZDQLDUöĝQ\FKLQIRUPDFML
i) ELHĝÈFHMJUXS\VODMGöZ
ii) HOHPHQWXRSDNRZXMÈFHJRVODMG\
iii) ZV]\VWNLFKVODMGöZZGDQHMJUXSLH
iv) WDEOLF\SU]\FLVNöZ SRMHGQ\PGODNDĝGHJR
VODMGX v) ELHĝÈFHJRVODMGX
vi) OLF]QLNDF]DVX
3. 1DVWÚSQLHPDP\IXQNFMÚmove()SDWU]SRGUR]G]LDïķ)XQNFMDPRYH ĵ
=ZUöÊXZDJÚĝHZ\PLHQLRQDIXQNFMDQLH]RVWDïD
XZ]JOÚGQLRQDZSU]HGVWDZLRQ\PGLDJUDPLH
4. )XQNFMDadvance()WZRU]\OLF]QLNF]DVX
5. ']LDïDQLHIXQNFMLUR]SRF]\QDVLÚRGZ\]HURZDQLD
ELHĝÈFHJROLF]QLNDF]DVX1DVWÚSQLHXVWDZLDQ\MHVW
QRZ\OLF]QLNF]DVXSRXSï\ZLHZVND]DQHJRRNUHVX
QDVWÚSXMHZ\ZRïDQLHIXQNFMLDQRQLPRZHM
6. .RQVWUXNFMDifVSUDZG]DF]\ELHĝÈF\VODMGMHVW
RVWDWQL-HĝHOLWRQLHMHVWRVWDWQLVODMGZ\ZRï\ZDQD
MHVWIXQNFMDmove()ZUD]]SDUDPHWUHPZVND]XMÈF\PVODMGNROHMQ\:SU]HFLZQ\PUD]LHQDVWÚSXMH
SU]HMĂFLHGRSLHUZV]HJRVODMGX
7. .DĝG\VODMGMHVWSU]HWZDU]DQ\SU]H]IXQNFMÚ
DQRQLPRZÈ
8. 'ODNDĝGHJRVODMGXWZRU]RQ\MHVWHOHPHQW
<button>
9. -HĝHOLQXPHULQGHNVXVODMGXMHVWGRNïDGQLH
WDNLVDPMDNQXPHUSU]HFKRZ\ZDQ\Z]PLHQQHM
currentIndexGRSU]\FLVNX]RVWDMHGRGDQDNODVD
active
10. 'RNDĝGHJRSU]\FLVNX]RVWDMHGRGDQDSURFHGXUD
REVïXJL]GDU]Hñ.OLNQLÚFLHSU]\FLVNXSRZRGXMH
Z\ZRïDQLHIXQNFMLmove()1XPHULQGHNVXZVND]XMH
VODMGGRNWöUHJRPDQDVWÈSLÊSU]HMĂFLH
11. 3U]\FLVNLVÈXPLHV]F]DQHZNRQWHQHU]HRUD]
GRGDZDQHGRWDEOLF\SU]\FLVNöZ7DEOLFDWDMHVW
Z\NRU]\VW\ZDQDSU]H]IXQNFMÚmove()ZFHOX
ZVND]DQLDDNWXDOQLHZ\ĂZLHWODQHJRVODMGX
12. :\ZRïDQLHIXQNFMLadvance()LW\PVDP\P
XUXFKRPLHQLHOLF]QLNDF]DVX
c11/js/slider.js
JAVASCRIPT
$(’.slider’).each(function(){
'ODNDĝGHMJUXS\VODMGöZ
var $this
= $(this),
3REUDQLHELHĝÈFHMJUXS\VODMGöZ
YDUJURXS WKLVğQG ijVOLGHJURXSij 3REUDQLHHOHPHQWXRNODVLH
VOLGHJURXS NRQWHQHU YDUVOLGHV WKLVğQG ijVOLGHij 2ELHNWM4XHU\SU]HFKRZXMÈF\ZV]\VWNLHVODMG\
var buttonArray = [],
8WZRU]HQLHWDEOLF\QDSU]\FLVNLQDZLJDF\MQH
YDUFXUUHQW,QGH[ 1XPHULQGHNVXELHĝÈFHJRVODMGX
var timeout;
=PLHQQDGRSU]HFKRZ\ZDQLDOLF]QLNDF]DVX
1
2
PRYH IXQNFMDSU]H]QDF]RQDGRSU]HMĂFLDPLÚG]\VODMGDPL
SDWU]QDNROHMQHMVWURQLH 3
function advance() {
8VWDZLHQLHF]DVXZ\ĂZLHWODQLDVODMGX
clearTimeout(timeout);
:\]HURZDQLHOLF]QLNDF]DVXZ]PLHQQHMWLPHRXW
8UXFKRPLHQLHOLF]QLNDF]DVXDE\IXQNFMDDQRQLPRZDE\ïDZ\ZRï\ZDQDFRVHNXQG\
timeout = setTimeout(function(){
if (currentIndex < ($slides.length - 1)) { -HĝHOLWRQLHMHVWRVWDWQLVODMG
move(currentIndex + 1);
3U]HMĂFLHGRQDVWÚSQHJRVODMGX
} else {
:SU]HFLZQ\PUD]LH
PRYH 3U]HMĂFLHGRSLHUZV]HJRVODMGX
}
` &]DVRF]HNLZDQLDZ\UDĝRQ\ZPLOLVHNXQGDFK
}
4
5
6
7
8
9
10
11
12
$.each($slides, function(index){
8WZRU]HQLHHOHPHQWXEXWWRQ!GODSU]\FLVNX
var $button = $(’<button type=”button” class=”slide-btn”>•</button>’);
if (index === currentIndex) {
-HĝHOLLQGHNVZVND]XMHQDHOHPHQWELHĝÈF\
$button.addClass(’active’);
'RGDQLHNODV\DFWLYH
}
$button.on(’click’, function(){ 8WZRU]HQLHSURFHGXU\REVïXJL]GDU]Hñ
GODSU]\FLVNX
move(index);
:\ZRïDQLHIXQNFMLPRYH }).appendTo(’.slide-buttons’); 'RGDQLHGRHOHPHQWX]DZLHUDMÈFHJRSU]\FLVNL
buttonArray.push($button);
'RGDQLHSU]\FLVNöZGRWDEOLF\
});
advance();
});
PROBLEM — USTALANIE WŁAŚCIWEJ
PRZERWY MIĘDZY SLAJDAMI, GDY JEST
WYKORZYSTYWANY LICZNIK CZASU
ROZWIĄZANIE — WYZEROWANIE
LICZNIKA CZASU PO KLIKNIĘCIU
PRZYCISKU
.DĝG\VODMGSRZLQLHQE\ÊZ\ĂZLHWODQ\SU]H]F]WHU\
VHNXQG\ SRXSï\ZLHNWöU\FKQDVWÈSLSU]HMĂFLHGR
NROHMQHJRVODMGX -HGQDNMHĝHOLXĝ\WNRZQLNNOLNQLH
SU]\FLVNSRGZöFKVHNXQGDFKWRQRZ\VODMG
PRĝHQLHE\ÊZ\ĂZLHWODQ\SU]H]F]WHU\VHNXQG\
SRQLHZDĝOLF]QLNF]DVXMXĝRGOLF]DF]DV
)XQNFMDadvance()]HUXMHOLF]QLNF]DVXSU]HGMHJR
SRQRZQ\PXVWDZLHQLHP.DĝGHNOLNQLÚFLHSU]\FLVNXSU]H]Xĝ\WNRZQLNDSRZRGXMHĝHRPöZLRQD
QDGZöFKNROHMQ\FKVWURQDFKIXQNFMDmove()
Z\ZRïXMHIXQNFMÚadvance()DE\]DJZDUDQWRZDÊ
Z\ĂZLHWODQLHQRZHJRVODMGXSU]H]F]WHU\VHNXQG\
3$1(/(=$:$572¥&, 525
FUNKCJA MOVE()
FUNKCJA: move(index)
Przejście do wskazanego obrazu
1
2
Tworzy zmienne:
animateLeft: animacja od lewej lub prawej
strony
slideLeft: umieszczenie nowego slajdu po
lewej lub prawej stronie
3
Wywołanie funkcji advance()
4
Czy jest
odtwarzana animacja
LUB nowy
slajd jest bieżącym
obrazem?
N
T
5
Uaktualnienie przycisków w celu pokazania
aktywnego
6
Czy numer
indeksu nowego
obrazu jest większy
od bieżącego?
7
N
T
Ustawienie
zmiennej
slideLeft: położenie
nowego slajdu do
lewej
Ustawienie
zmiennej
slideLeft: położenie
nowego slajdu do
prawej
Ustawienie
zmiennej
animateLeft:
animacja bieżącego
slajdu do prawej
Ustawienie
zmiennej
animateLeft:
animacja bieżącego
slajdu do lewej
Uaktualnienie stylów CSS nowego slajdu,
aby umieścić go po prawej lub lewej stronie
bieżącego slajdu
8
Animacja bieżącego slajdu do położenia
zdefiniowanego w ustawionej wcześniej
zmiennej (to odkrywa nowy slajd)
9
Ukrycie slajdu, który właśnie „wyjechał”
z widoku
10
Umieszczenie nowego elementu (wartość
właściwości left wynosi )
11
Ponowne umieszczenie nowego elementu
(wartość właściwości left wynosi )
12
Ustawienie $currentIndex numeru indeksu
nowego slajdu
526 3$1(/(=$:$572¥&,
1. )XQNFMDmove()WZRU]\DQLPRZDQHSU]HMĂFLH
PLÚG]\GZRPDVODMGDPL.LHG\]RVWDQLHZ\ZRïDQDWU]HEDMHMZVND]DÊVODMGGRNWöUHJRPD
QDVWÈSLÊSU]HMĂFLH
2. 8WZRU]HQLHGZöFK]PLHQQ\FKSU]H]QDF]RQ\FK
GRNRQWURORZDQLDNLHUXQNXSRUXV]DQLDVLÚVODMGX
ZOHZROXEZSUDZR
3. :\ZRïDQLHIXQNFMLadvance()DE\Z\]HURZDÊ
OLF]QLNF]DVX
4. 6NU\SWVSUDZG]DF]\DNWXDOQLHMHVWRGWZDU]DQD
DQLPDFMDVODMGXOXEF]\Xĝ\WNRZQLNZ\EUDïELHĝÈF\VODMG:REXW\FKSU]\SDGNDFKQLH]RVWDQLH
SRGMÚWHĝDGQHG]LDïDQLHDVïRZRNOXF]RZHreturn
]DWU]\PDZ\NRQ\ZDQLHSR]RVWDïHMF]ÚĂFLNRGX
5. 2GQLHVLHQLDGRSRV]F]HJöOQ\FKSU]\FLVNöZVÈ
SU]HFKRZ\ZDQHZWDEOLF\XWZRU]RQHMZNURNX
SU]HGVWDZLRQHJRZF]HĂQLHMVNU\SWX7DEOLFDWDMHVW
Xĝ\ZDQDGRZVND]DQLDDNW\ZQHJRSU]\FLVNX
6. -HĝHOLQRZ\HOHPHQWPDZLÚNV]ÈOLF]EÚLQGHNVX
QLĝVWDU\WRSU]HMĂFLHVODMGXRGE\ZDVLÚ]SUDZHM
GROHZHMVWURQ\:SU]\SDGNXPQLHMV]HMOLF]E\
LQGHNVXSU]HMĂFLHVODMGXRGE\ZDVLÚRGVWURQ\
OHZHMGRSUDZHM:DUWRĂFLZ\PLHQLRQ\FKWXWDM
]PLHQQ\FKVÈQDMSLHUZXVWDZLDQHDQDVWÚSQLH
Z\NRU]\VW\ZDQHZNURNX
=PLHQQDslideLeftRNUHĂODSRïRĝHQLHQRZHJR
VODMGXZ]JOÚGHPVODMGXELHĝÈFHJR :DUWRĂÊ
R]QDF]DĝHQRZ\VODMGMHVWSRSUDZHMVWURQLHVODMGXELHĝÈFHJRQDWRPLDVWR]QDF]DSRïRĝHQLH
QRZHJRVODMGXSROHZHMVWURQLHELHĝÈFHJR =PLHQQDanimateLeftRNUHĂODNLHUXQHNZNWöU\P
SRZLQLHQSRUXV]DÊVLÚQRZ\VODMGSRGF]DV
]DVWÚSRZDQLDVODMGXELHĝÈFHJR :DUWRĂÊ
R]QDF]DDQLPDFMÚZOHZÈVWURQÚQDWRPLDVW
ĽZSUDZÈVWURQÚ 7. 1RZ\VODMG]RVWDMHXPLHV]F]RQ\SROHZHMOXE
SUDZHMVWURQLHVODMGXELHĝÈFHJRZ]DOHĝQRĂFL
RGZDUWRĂFL]PLHQQHMslideLeft:ïDĂFLZRĂFL
display]RVWDMHSU]\SLVDQDZDUWRĂÊblockDE\
VODMGVWDïVLÚZLGRF]Q\1RZ\VODMGMHVWLGHQW\ğNRZDQ\]DSRPRFÈZDUWRĂFLnewIndexNWöUD]RVWDïD
SU]HND]DQDIXQNFML
8. %LHĝÈF\VODMG]RVWDMHSU]HVXQLÚW\ZOHZÈOXE
ZSUDZÈVWURQÚQDSRGVWDZLHZDUWRĂFLSU]HFKRZ\ZDQHMZ]PLHQQHManimateLeft7HQVODMG
MHVWZ\ELHUDQ\QDSRGVWDZLHZDUWRĂFL]PLHQQHM
currentIndexNWöUD]RVWDïD]GHğQLRZDQDQD
SRF]ÈWNXVNU\SWX
c11/js/slider.js
JAVASCRIPT
.RQğJXUDFMDVNU\SWXSU]HGVWDZLRQHJRQDSRSU]HGQLHMVWURQLH
function move(newIndex) {
3U]HMĂFLH]HVWDUHJRGRQRZHJRVODMGX
var animateLeft, slideLeft;
=DGHNODURZDQLH]PLHQQ\FK
1
2
advance();
3
3RGF]DVSU]HMĂFLDVODMGöZQDOHĝ\SRQRZQLH
Z\ZRïDÊIXQNFMÚDGYDQFH -HĝHOLZ\ĂZLHWODQ\MHVWELHĝÈF\VODMGOXERGWZDU]DQDMHVWDQLPDFMDVODMGX
WRQLHSRGHMPXMHP\ĝDGQ\FKG]LDïDñ */
if ($group.is(’:animated’) || currentIndex === newIndex) {
return;
}
4
buttonArray[currentIndex].removeClass(’active’); 8VXQLÚFLHNODV\]HOHPHQWX
buttonArray[newIndex].addClass(’active’);
'RGDQLHNODV\GRQRZHJR
HOHPHQWX
5
6
7
8
9
10
11
12
if (newIndex > currentIndex) { -HĝHOLQRZ\HOHPHQW!ELHĝÈF\
slideLeft = ’100%’;
8PLHV]F]HQLHQRZHJRVODMGXSRSUDZHMVWURQLH
animateLeft = ’-100%’;
$QLPDFMDELHĝÈFHMJUXS\ZOHZÈVWURQÚ
} else {
:SU]HFLZQ\PUD]LH
slideLeft = ’-100%’;
8PLHV]F]HQLHQRZHJRVODMGXSROHZHMVWURQLH
animateLeft = ’100%’;
$QLPDFMDELHĝÈFHMJUXS\ZSUDZÈVWURQÚ
}
8PLHV]F]HQLHQRZHJRVODMGXSROHZHM MHĂOLPDPQLHMV]ÈZDUWRĂÊLQGHNVX
QLĝELHĝÈF\ OXESUDZHM MHĂOLPDWÚZDUWRĂÊZLÚNV]È $slides.eq(newIndex).css( {left: slideLeft, display: ’block’} );
$group.animate( {left: animateLeft} , function() { $QLPDFMDVODMGX
$slides.eq(currentIndex).css( {display: ’none’} ); LXNU\FLHSRSU]HGQLHJR
$slides.eq(newIndex).css( {left: 0} );
8VWDZLHQLHSRïRĝHQLDGODQRZHJRVODMGX
$group.css( {left: 0} );
8VWDZLHQLHSRïRĝHQLDJUXS\VODMGöZ
currentIndex = newIndex;
8VWDZLHQLH]PLHQQHMFXUUHQW,QGH[
ZDUWRĂFLQRZHJRREUD]X
});
}
2EVïXJDVODMGöZ]RVWDïDSRND]DQDZSRSU]HGQLPIUDJPHQFLHNRGX-DYD6FULSW
3R]DNRñF]HQLXDQLPDFMLVODMGXIXQNFMDDQRQLPRZDSU]HSURZDG]DSHZQHRSHUDFMHķVSU]ÈWDMÈFHĵ
9. 6ODMGZVND]\ZDQ\SU]H]currentIndex]RVWDMH
XNU\W\
10. 3RïRĝHQLHOHZHMVWURQ\QRZHJRVODMGX]RVWDMH
XVWDORQHMDNR0 Z\UöZQDQLHGROHZHM 11. 3RïRĝHQLHZV]\VWNLFKSR]RVWDï\FKVODMGöZ
]RVWDMHXVWDORQHWDNDE\Z\QRVLïR0 Z\UöZQDQLH
GROHZHM 12. 1DW\PHWDSLHVODMGMHVWZLGRF]Q\DSU]HMĂFLH
MHVW]DNRñF]RQH1DOHĝ\ZLÚFXDNWXDOQLÊ]PLHQQÈ
currentIndexDE\SU]HFKRZ\ZDïDQXPHULQGHNVX
ZïDĂQLHZ\ĂZLHWODQHJRVODMGX7R]DGDQLHPRĝQD
ïDWZRZ\NRQDÊSU]H]SU]\SLVDQLH]PLHQQHM
currentIndexZDUWRĂFL]PLHQQHMnewIndex
=ZUöÊXZDJÚĝHRPDZLDQDWXWDMIXQNFMD]RVWDïD
]GHğQLRZDQDMDNSRND]DQRZSRGUR]G]LDOH
ķ6NU\SWVODMGöZĵZSXQNFLHķ-DYD6FULSWĵ.RG
WZRU]\OLF]QLNF]DVXLSU]HSURZDG]DLWHUDFMÚSU]H]
ZV]\VWNLHVODMG\DWDNĝHGRGDMHSU]\FLVNLZUD]
]SURFHGXUDPLREVïXJL]GDU]Hñ NURNLRGGR
ZSRGUR]G]LDOHķ6NU\SWVODMGöZĵZSXQNFLH
ķ-DYD6FULSWĵ 3$1(/(=$:$572¥&, 527
UTWORZENIE WTYCZKI JQUERY
:W\F]NLM4XHU\SR]ZDODMÈQDGRGDZDQLHQRZ\FKPHWRGGRELEOLRWHNLM4XHU\
EH]NRQLHF]QRĂFLPRG\ğNRZDQLDVDPHMELEOLRWHNL
'RZROQÈIXQNFMÚPRĝQD]PLHQLÊZHZW\F]NÚ
MHĝHOL
SU]HSURZDG]DRQDRSHUDFMHQDGRSDVRZDQ\P
]ELRU]H
PRĝH]ZUöFLÊGRSDVRZDQ\]ELöUM4XHU\
:SRUöZQDQLX]H]Z\Nï\PLVNU\SWDPLZW\F]NL
M4XHU\FKDUDNWHU\]XMÈVLÚSHZQ\PL]DOHWDPL
7RVDPR]DGDQLHPRĝQDZ\NRQ\ZDÊQDZV]\VWNLFKHOHPHQWDFKGRSDVRZDQ\FK]DSRPRFÈ
HODVW\F]QHMVNïDGQLVHOHNWRUöZM4XHU\
*G\ZW\F]ND]DNRñF]\VZRMHG]LDïDQLHQD
Z\EUDQ\FKHOHPHQWDFKPRĝQDZ\ZRïDÊNROHMQH
PHWRG\
:W\F]NLSR]ZDODMÈQDSRQRZQHXĝ\FLHNRGX
ZUDPDFKMHGQHJRSURMHNWXOXEZLHOXUöĝQ\FK :W\F]NLVÈEDUG]RF]ÚVWRXGRVWÚSQLDQHVSRïHF]QRĂFLRP-DYD6FULSWLM4XHU\
.ROL]MLSU]HVWU]HQLQD]Z F]\OLSUREOHPöZ
SRMDZLDMÈF\FKVLÚJG\ZGZöFKVNU\SWDFKVÈ
Z\NRU]\VW\ZDQHWHVDPHQD]Z\]PLHQQ\FK XQLNDVLÚSU]H]XPLHV]F]HQLHVNU\SWXZIXQNFML
W\SX,,)( SDWU]UR]G]LDïSRGUR]G]LDïķ1DW\FKPLDVWZ\NRQ\ZDQDIXQNFMDZ\UDĝHQLDĵ •
•
•
•
3RGVWDZRZDNRQFHSFMDSROHJDQDW\PĝHPRĝHV]
SU]HND]DÊ]ELöUHOHPHQWöZPRGHOX'20
ZGRSDVRZDQ\P]ELRU]HM4XHU\
RSHURZDÊQDHOHPHQWDFKPRGHOX'20]D
SRPRFÈNRGXZW\F]NLM4XHU\
]ZUDFDÊRELHNWM4XHU\DE\LQQHIXQNFMHPRJï\
]QLPSUDFRZDÊ
•
•
•
•
•
•
2VWDWQLSU]\NïDGZW\P
UR]G]LDOHSRND]XMHXWZRU]HQLH
ZW\F]NLM4XHU\:\NRU]\VWDP\
WXWDMSU]\NïDGSDQHOXDFFRUGLRQ
]DSUH]HQWRZDQ\QDSRF]ÈWNX
UR]G]LDïXL]PLHQLP\JRZH
ZW\F]NÚ
:F]HĂQLHMV]DZHUVMDNRGX
E\ïDVWRVRZDQDGODZV]\VWNLFK
HOHPHQWöZGRSDVRZDQ\FKQD
VWURQLH1DWRPLDVWZW\F]ND
EÚG]LHZ\PDJDïDRGXĝ\WNRZQLNöZZ\ZRïDQLDPHWRG\
.accordion()GODHOHPHQWöZ
Z\EUDQ\FKSU]H]M4XHU\
:RPDZLDQ\PSU]\NïDG]LH
M4XHU\Z\ELHUDHOHPHQW\
SRVLDGDMÈFHNODVÚmenu
3R]DNRñF]HQLXG]LDïDQLD
PHWRG\.accordion()QDVWÈSL
Z\ZRïDQLHPHWRG\.fadeIn()
ijPHQXij DFFRUGLRQ IDGH,Q
1
1. :M4XHU\Z\ELHUDQHVÈ
ZV]\VWNLHHOHPHQW\]DZLHUDMÈFH
NODVÚmenu
528 3$1(/(=$:$572¥&,
2
2. 'ODZ\EUDQ\FKHOHPHQWöZ
QDVWÚSXMHZ\ZRïDQLHPHWRG\
.accordion():\PLHQLRQD
PHWRGDSRELHUDW\ONRMHGHQ
SDUDPHWUZVND]XMÈF\V]\ENRĂÊ
DQLPDFML Z\UDĝRQÈZPLOLVHNXQGDFK 3
3. 3R]DNRñF]HQLXG]LDïDQLD
.accordion()PHWRGD
.fadeIn()EÚG]LHZ\NRQDQDGOD
W\FKVDP\FKHOHPHQWöZ
PODSTAWOWA STRUKTURA
WTYCZKI
1. DODANIE METODY DO JQUERY
M4XHU\PDRELHNWRQD]ZLH.fn
NWöU\SRPDJDZUR]V]HU]HQLX
IXQNFMRQDOQRĂFLELEOLRWHNL
:W\F]NLVÈWZRU]RQHMDNR
PHWRG\GRGDZDQHQDVWÚSQLH
GRRELHNWX.fn
3DUDPHWU\NWöUHPRJÈ
E\ÊSU]HND]DQHIXQNFMLVÈ
XPLHV]F]DQHZHZQÈWU]QDZLDVX
ZSLHUZV]\PZLHUV]X
$.fn.accordion = function(speed) {
7RMHVWPLHMVFHQDNRGZW\F]NL
}
2. ZWROT ZBIORU JQUERY, CO POZWALA NA ŁĄCZENIE METOD
%LEOLRWHNDM4XHU\G]LDïDSU]H]
]HEUDQLHHOHPHQWöZLSU]HFKRZ\ZDQLHLFKZRELHNFLH
RQD]ZLHjQuery0HWRG\WHJR
RELHNWXPRJÈE\ÊZ\NRU]\VW\ZDQHGRPRG\ğNDFMLZ\EUDQ\FK
HOHPHQWöZ
3RQLHZDĝM4XHU\SR]ZDODQD
ïÈF]HQLHZLHOXPHWRGLZ\NRQ\ZDQLHLFKGODZ\EUDQ\FK
HOHPHQWöZWRJG\ZW\F]ND
]DNRñF]\G]LDïDQLHSRZLQQD
SU]HND]DÊZ\EUDQHHOHPHQW\
NROHMQHMPHWRG]LH
=ZURWHOHPHQWöZPRĝHQDVWÈSLÊ
]DSRPRFÈ
1. VïRZDNOXF]RZHJRreturn
SU]HND]DQLHZDUWRĂFL]IXQNFML 2. VïRZDNOXF]RZHJRthis
RGQLHVLHQLHGRSU]HND]DQ\FK
HOHPHQWöZ $.fn.accordion = function(speed) {
7RMHVWPLHMVFHQDNRGZW\F]NL
return this;
}
3. OCHRONA PRZESTRZENI NAZW
M4XHU\WRQLHMHG\QDELEOLRWHND
-DYD6FULSWXĝ\ZDMÈFD]QDNX
$MDNRVNUöWX'ODWHJRWHĝNRG
ZW\F]NL]QDMGXMHVLÚZHZQÈWU]
IXQNFMLW\SX,,)(NWöUD
WZRU]\GODNRGXZW\F]NL]DNUHV
R]DVLÚJXIXQNFML
:SLHUZV]\PZLHUV]XSRQLĝV]HJRIUDJPHQWXNRGX,,)(PD
W\ONRMHGHQQD]ZDQ\SDUDPHWU
$:RVWDWQLPZLHUV]XPRĝQD
]REDF]\ÊĝHHOHPHQW\Z\EUDQH
w jQueryVÈSU]HND]\ZDQHWHM
IXQNFML
:HZQÈWU]ZW\F]NL]QDN$G]LDïD
ZFKDUDNWHU]HQD]Z\]PLHQQHM
2GQRVLVLÚGRRELHNWXjQuery
]DZLHUDMÈFHJR]ELöUHOHPHQWöZ
]NWöU\PLPDG]LDïDÊZW\F]ND
(function($){
$.fn.accordion = function(speed) {
7RMHVWPLHMVFHQDNRGZW\F]NL
}
})(jQuery);
-HĝHOLWU]HEDSU]HND]DÊZLÚFHM
ZDUWRĂFL]UHJXï\RGE\ZDVLÚ
WR]DSRPRFÈSRMHG\QF]HJR
SDUDPHWUXRQD]ZLHoptions
3RGF]DVZ\ZRï\ZDQLDIXQNFML
SDUDPHWUoptions]DZLHUD
OLWHUDïRELHNWX
2ELHNWPRĝHVNïDGDÊVLÚ]SDU
NOXF]ZDUWRĂÊGODUöĝQ\FKRSFML
3$1(/(=$:$572¥&, 529
WTYCZKA ACCORDION
1
10
IIFE:
Przekazanie elementów wybranych w jQuery ($)
FUNKCJA: accordion()
Utworzona w obiekcie fn
2
Zdarzenie: click w karcie
3
FUNKCJA ANONIMOWA:
Pokazuje lub ukrywa odpowiedni
panel
4
Uniemożliwienie domyślnej akcji
przycisku
5
Pobranie przycisku klikniętego
przez użytkownika
6
Pobranie odpowiedniego panelu
7
N
Czy panel jest
animowany?
T
8
N
Czy panel jest
widoczny?
T
Pokaż panel
9
Ukryj panel
Zwrot obiektu jQuery
:FHOX]DVWRVRZDQLDZW\F]NLQDOHĝ\Z\EUDÊHOHPHQW\ZM4XHU\]DZLHUDMÈFHHOHPHQW\<ul>NWöUH
WZRU]ÈSDQHODFFRUGLRQ:SU]\NïDG]LHSU]HGVWDZLRQ\PQDVWURQLHSRSUDZHMSDQHODFFRUGLRQ
WRHOHPHQW<ul>SRVLDGDMÈF\NODVÚmenu FKRÊ
PRĝQDXĝ\ÊWXWDMGRZROQHMQD]Z\ 1DVWÚSQLHQD
Z\EUDQ\FKHOHPHQWDFKWU]HEDZ\ZRïDÊPHWRGÚ
.accordion()QDSU]\NïDGZQDVWÚSXMÈF\VSRVöE
ijPHQXij DFFRUGLRQ 7HQNRGPRĝHE\ÊXPLHV]F]RQ\ZGRNXPHQFLH
+70/ MDNSRND]DQRQDVWURQLHSRSUDZHM DOH
]QDF]QLHOHSV]\PUR]ZLÈ]DQLHPEÚG]LHXĝ\FLH
RGG]LHOQHJRSOLNX-DYD6FULSWSU]HWZDU]DQHJR
SRGF]DVZF]\W\ZDQLDVWURQ\ FRSR]ZDODQD
RGG]LHOHQLHNRGX-DYD6FULSWRG+70/ 530 3$1(/(=$:$572¥&,
3HïQ\NRGZW\F]NLSU]HGVWDZLRQRQDVWURQLHSR
SUDZHM)UDJPHQW\ZNRORU]HSRPDUDñF]RZ\P
VÈLGHQW\F]QH]HVNU\SWHPNWöU\]QDMG]LHV]QD
SRF]ÈWNXUR]G]LDïX
1. :W\F]ND]RVWDïDRSDNRZDQDIXQNFMÈW\SX,,)(
DE\W\PVDP\PXWZRU]\Ê]DNUHVQDSR]LRPLH
IXQNFML:ZLHUV]XSLHUZV]\PIXQNFMDRWU]\PXMH
W\ONRMHGHQQD]ZDQ\SDUDPHWU$ NWöU\R]QDF]D
PRĝOLZRĂÊXĝ\FLDZIXQNFMLVNUöWX$GODM4XHU\ 10. :RVWDWQLPZLHUV]XNRGXRELHNWM4XHU\MHVW
SU]HND]\ZDQ\IXQNFML ]DSRPRFÈSHïQHMQD]Z\
jQuery]DPLDVWMHMVNUöWX$ 2ELHNWWHQ]DZLHUD
Z\EUDQHHOHPHQW\QDNWöU\FKEÚG]LHG]LDïDïD
ZW\F]ND:RPDZLDQ\PSU]\NïDG]LHSXQNW\
LR]QDF]DMÈĝH$RGZRïXMHVLÚGRRELHNWX
jQueryLQLHZ\VWÚSXMHWXWDMĝDGHQNRQĠLNWMHĂOL
LQQHVNU\SW\UöZQLHĝXĝ\ZDMÈVNUöWX$
2.:HZQÈWU]IXQNFMLW\SX,,)(QDVWÚSXMH
XWZRU]HQLHQRZHMPHWRG\.accordion()SU]H]
UR]V]HU]HQLHRELHNWXfn3RELHUDQ\MHVWW\ONRMHGHQ
SDUDPHWUspeed
3.6ïRZRNOXF]RZHthisRGZRïXMHVLÚGRHOHPHQWöZZ\EUDQ\FKZM4XHU\LSU]HND]DQ\FKZW\F]FH
%ÚG]LHZ\NRU]\VW\ZDQHGRXWZRU]HQLDSURFHGXU\
REVïXJL]GDU]HñQDVïXFKXMÈFHMF]\Xĝ\WNRZQLN
NOLNQÈïHOHPHQWNWöUHJRDWU\EXWclassPDZDUWRĂÊ
accordion-control.LHG\Xĝ\WNRZQLNNOLNQLH
WDNLHOHPHQWIXQNFMDDQRQLPRZDUR]SRF]\QD
DQLPDFMÚRGSRZLHGQLHJRSDQHOXSRMDZLDMÈFHJRVLÚ
ZZLGRNXOXE]QLNDMÈFHJR]QLHJR
4.8QLHPRĝOLZLHQLHGRP\ĂOQHMDNFMLïÈF]D
5.:IXQNFMLDQRQLPRZHM$(this)RGZRïXMHVLÚGR
RELHNWXM4XHU\NOLNQLÚWHJRSU]H]Xĝ\WNRZQLND
6., 7., 8. -HG\QDUöĝQLFDPLÚG]\WÈIXQNFMÈ
DQRQLPRZÈLZ\NRU]\VWDQÈZSU]\NïDG]LHQD
SRF]ÈWNXUR]G]LDïXSROHJDQDW\PĝHPHWRGD
.slideToggle()SRELHUDSDUDPHWUspeedZVND]XMÈF\V]\ENRĂÊ]MDNÈPDVLÚSRMDZLDÊOXE]QLNDÊ
SDQHO :\PLHQLRQ\SDUDPHWUMHVWSRGDZDQ\
ZWUDNFLHZ\ZRïDQLDPHWRG\.accordion() 9..LHG\IXQNFMDDQRQLPRZD]DNRñF]\G]LDïDQLH
RELHNWjQuery]DZLHUDMÈF\Z\EUDQHHOHPHQW\
]RVWDQLH]ZUöFRQ\SU]H]IXQNFMÚ7HQVDP]ELöU
HOHPHQWöZPRĝQDZLÚFSU]HND]DÊLQQHMPHWRG]LH
M4XHU\
c11/js/accordion-plugin.js
JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
(function($){
$.fn.accordion = function(speed) {
this.on(’click’, ’.accordion-control’,
e.preventDefault();
$(this)
.next(’.accordion-panel’)
.not(’:animated’)
.slideToggle(speed);
});
return this;
}
})(jQuery);
=ZUöÊXZDJÚĝHQD]ZDSOLNX
ZW\F]NLM4XHU\UR]SRF]\QDVLÚ
RGFLÈJXWHNVWRZHJRjquery.
ZFHOXZVND]DQLDĝHVNU\SW
RSLHUDVLÚQDELEOLRWHFHM4XHU\
HTML
8ĝ\FLHMDNRQD]Z\]PLHQQHM
=ZURWHOHPHQWöZZ\EUDQ\FKZM4XHU\
function(e){
=ZURWHOHPHQWöZZ\EUDQ\FKZM4XHU\
3U]HND]DQLHZRELHNFLHM4XHU\
3RGRïÈF]HQLXVNU\SWXZW\F]NL
DFFRUGLRQPHWRGDaccordion()
PRĝHE\ÊZ\NRU]\VW\ZDQD
ZGRZROQ\PGRSDVRZDQ\P
]ELRU]HM4XHU\
3RQLĝHMSU]HGVWDZLRQRNRG
+70/GODRPDZLDQHMZW\F]NL
7\PUD]HPNRG]DZLHUDVNU\SW
M4XHU\LZW\F]NL
c11/accordion-plugin.html
<ul class=”menu”>
<li>
<a href=”#” class=”accordion-control”><h3>Klasyka</h3></a>
<div class=”accordion-panel”>-HĝHOLOXELV]WUDG\F\MQHNZLDW\</div>
</li>
<li>
<a href=”#” class=”accordion-control”><h3>Seria kwiaty</h3></a>
<div class=”accordion-panel”>-HĝHOLPDV]QLHFRïDJRGQLHMV]HSRGQLHELHQLH</
div>
</li>
<li>
<a href=”#” class=’accordion-control”><h3>0RU]H</h3></a>
<div class=”accordion-panel”>$KRM-HĝHOLWÚVNQLV]]DVPDNLHP</div>
</li>
</ul>
<script src=”js/jquery.js”></script>
<script src=”js/jquery.accordion.js”></script>
<script>
ijPHQXij DFFRUGLRQ </script>
3$1(/(=$:$572¥&, 531
PODSUMOWANIE
PANELE ZAWARTOŚCI
f 3DQHOH]DZDUWRĂFLRIHUXMÈPRĝOLZRĂÊZ\ĂZLHWOHQLDZLÚNV]HM
LORĂFLWUHĂFLQDRJUDQLF]RQ\PREV]DU]H
f 3RSXODUQHURG]DMHSDQHOL]DZDUWRĂFLWRSDQHODFFRUGLRQNDUW\
SU]HJOÈGDUNL]GMÚÊRNQDPRGDOQHLVODMG\
f 3RGREQLHMDNZSU]\SDGNXNDĝGHJRNRGXZLWU\Q\LQWHUQHWRZHM
]DOHFDVLÚXPLHV]F]DQLHZRGG]LHOQ\FKSOLNDFK]DZDUWRĂFL
+70/ ZDUVWZ\SUH]HQWDF\MQHM &66 L]DFKRZDQLD
-DYD6FULSW f 0RĝQDWZRU]\ÊRELHNW\SU]HGVWDZLDMÈFHGRZROQÈ
IXQNFMRQDOQRĂÊ MDNZSU]\SDGNXRNQDPRGDOQHJR f ,VWQLHMHPRĝOLZRĂÊ]DPLDQ\IXQNFMLQDZW\F]NLM4XHU\
FRSR]ZDODQDSRQRZQHXĝ\FLHNRGXLG]LHOHQLHVLÚQLP
]LQQ\PL
f )XQNFMHW\SX,,)(VÈZ\NRU]\VW\ZDQHZFHOXSRELHUDQLD
]DNUHVXLXQLNDQLDNRQĠLNWöZQD]Z
532 3$1(/(=$:$572¥&,
12
FILTROWANIE,
WYSZUKIWANIE
I SORTOWANIE
'RVWÚSQHVÈWU]\WHFKQLNLNWöUHPRJÈSRPöFXĝ\WNRZ
QLNRPZZ\V]XNLZDQLXĝÈGDQHMSU]H]QLFK]DZDUWRĂFL
JG\QDVWURQLH]QDMGXMHVLÚGXĝDLORĂÊGDQ\FK
FILTROWANIE
WYSZUKIWANIE
SORTOWANIE
)LOWURZDQLHSR]ZDODQD
]PQLHMV]HQLH]ELRUXGDQ\FK
SU]H]Z\EöUW\FKZDUWRĂFL
NWöUHVSHïQLDMÈ]GHğQLRZDQH
NU\WHULD
:\V]XNLZDQLHSR]ZDODQD
Z\ĂZLHWOHQLHHOHPHQWöZGR
SDVRZDQ\FKGRFRQDMPQLHM
MHGQHJRVïRZDSRGDQHJR
SU]H]Xĝ\WNRZQLND
6RUWRZDQLHSR]ZDODQD
]PLDQÚNROHMQRĂFLHOHPHQWöZ
QDVWURQLHZRSDUFLXRSHZ
QHNU\WHULD QDSU]\NïDG
XïRĝHQLHLFKZNROHMQRĂFL
DOIDEHW\F]QHM =DQLP]REDF]\V]MDNZ\NRU]\VW\ZDÊğOWURZDQLHZ\V]XNLZDQLHLVRUWRZDQLHSRZLQLHQHĂSR]QDÊ
VSRVRE\SU]HFKRZ\ZDQLDGDQ\FK]NWöU\PLSUDFXMHV]QDVWURQLH:W\PUR]G]LDOHZZLHOX
SU]\NïDGDFKEÚG]LHSRND]DQHXĝ\FLHWDEOLFGRSU]HFKRZ\ZDQLDGDQ\FKZRELHNWDFK]Z\NRU]\
VWDQLHPQRWDFMLOLWHUDïX
534 FILTROWANIE, WYSZUKIWANIE I SORTOWANIE
FILTROWANIE, WYSZUKIWANIE I SORTOWANIE 535
METODY JAVASCRIPT SŁUŻĄCE
DO PRACY Z TABLICAMI
7DEOLFDMHVWURG]DMHPRELHNWX:V]\VWNLHWDEOLFHPDMÈZ\PLHQLRQHSRQLĝHM
PHWRG\LFKQD]Z\ZïDĂFLZRĂFLVÈQXPHUDPLLQGHNVX=D]Z\F]DMEÚG]LHV]VLÚ
VSRW\NDï]Xĝ\FLHPWDEOLFGRSU]HFKRZ\ZDQLDVNRPSOLNRZDQ\FKHOHPHQWöZ
ZW\PWDNĝHLQQ\FKRELHNWöZ .DĝG\VNïDGQLNWDEOLF\MHVWF]ÚVWRQD]\ZDQ\elementem1LHPD]QDF]HQLDWRF]\WDEOLFDSU]HFKRZXMH
HOHPHQW\+70/HOHPHQWWRSRSURVWXQD]ZDQDGDZDQDIUDJPHQWRZLLQIRUPDFMLZWDEOLF\*ZLD]GNÈ R]QDF]RQRPHWRG\NWöUHG]LDïDMÈMHG\QLHZ,(
DODAWANIE
ELEMENTÓW
USUWANIE
ELEMENTÓW
push()
:VWDZLDHOHPHQW HOHPHQW\ QDNRñFXWDEOLF\L]ZUDFDOLF]EÚ
HOHPHQWöZZWDEOLF\
unshift()
:VWDZLDHOHPHQW HOHPHQW\ QDSRF]ÈWNXWDEOLF\L]ZUDFDQRZÈ
ZLHONRĂÊWDEOLF\
pop()
8VXZDRVWDWQLHOHPHQW]WDEOLF\ L]ZUDFDWHQHOHPHQW shift()
8VXZDSLHUZV]\HOHPHQW]WDEOLF\ L]ZUDFDWHQHOHPHQW forEach()
-HGQRNURWQLHZ\NRQXMHIXQNFMÚGODNDĝGHJRHOHPHQWXZWDEOLF\ some()
6SUDZG]DF]\MDNLHNROZLHNHOHPHQW\WDEOLF\SU]HFKRG]ÈWHVW
ZVND]DQ\SU]H]IXQNFMÚ every()
6SUDZG]DF]\ZV]\VWNLHHOHPHQW\WDEOLF\SU]HFKRG]ÈWHVW
ZVND]DQ\SU]H]IXQNFMÚ concat()
7ZRU]\QRZÈWDEOLFÚZNWöUHM]RVWDQÈXPLHV]F]RQH]DZDUWRĂÊ
WDEOLF\ELHĝÈFHMRUD]LQQHWDEOLFHOXEZDUWRĂFL
ğOWHU
7ZRU]\QRZÈWDEOLFÚZUD]]HOHPHQWDPLNWöUHSU]HFKRG]ÈWHVW
ZVND]DQ\SU]H]IXQNFMÚ sort()
=PLHQLDNROHMQRĂÊHOHPHQWöZZWDEOLF\]DSRPRFÈIXQNFML
QD]\ZDQHMIXQNFMÈSRUöZQDQLD reverse()
2GZUDFDNROHMQRĂÊHOHPHQWöZZWDEOLF\
map()
:\ZRïXMHIXQNFMÚGODNDĝGHJRHOHPHQWXZWDEOLF\LWZRU]\QRZÈ
WDEOLFÚZUD]]Z\QLNDPLWHMRSHUDFML
ITERACJA
ŁĄCZENIE
FILTROWANIE
ZMIANA KOLEJNOŚCI
MODYFIKACJA
536 FILTROWANIE, WYSZUKIWANIE I SORTOWANIE
METODY JQUERY
PRZEZNACZONE DO
FILTROWANIA I SORTOWANIA
.ROHNFMHM4XHU\WRRELHNW\SU]\SRPLQDMÈFHWDEOLFÚLSU]HGVWDZLDMÈFHHOHPHQW\
PRGHOX'20:]DNUHVLHPRG\ğNDFMLHOHPHQWöZRIHUXMÈPHWRG\SRGREQH
GRGRVWÚSQ\FKGODWDEOLF1DZ\EUDQ\FKHOHPHQWDFKPRĝQDZ\NRQ\ZDÊ
WDNĝHLQQHPHWRG\M4XHU\
3R]DZ\PLHQLRQ\PLSRQLĝHMPHWRGDPLM4XHU\PRĝHV]VSRWNDÊVLÚ]HVWRVRZDQLHPPHWRGDQLPDFML
SRPHWRGDFKğOWURZDQLDLVRUWRZDQLDFRSRZRGXMHXWZRU]HQLHDQLPRZDQ\FKSU]HMĂÊJG\Xĝ\WNRZQLN
GRNRQXMHZ\ERUX
DODAWANIE LUB
ŁĄCZENIE ELEMENTÓW
.add()
'RGDQLHHOHPHQWöZGR]ELRUXGRSDVRZDQ\FKHOHPHQWöZ
USUWANIE ELEMENTÓW
.not()
8VXQLÚFLHHOHPHQWöZ]H]ELRUXGRSDVRZDQ\FKHOHPHQWöZ
.each()
8ĝ\FLHWHMVDPHMIXQNFMLGODNDĝGHJRHOHPHQWXZ]ELRU]H
GRSDVRZDQ\FKHOHPHQWöZ
ğOWHU
=PQLHMV]HQLHOLF]E\HOHPHQWöZZGRSDVRZDQ\P]ELRU]HGRMHG\
QLHW\FKNWöUH]RVWDï\GRSDVRZDQHGRVHOHNWRUDOXESU]HFKRG]È
WHVWZVND]DQ\ZIXQNFML
.toArray()
.RQZHUVMDNROHNFMLM4XHU\QDWDEOLFÚHOHPHQWöZPRGHOX'20
FRSR]ZDODQDXĝ\FLHPHWRGWDEOLF\Z\PLHQLRQ\FKQDVWURQLH
SROHZHM
ITERACJA
FILTROWANIE
KONWERSJA
FILTROWANIE, WYSZUKIWANIE I SORTOWANIE 537
OBSŁUGA STARSZYCH
PRZEGLĄDAREK
INTERNETOWYCH
6WDUV]HSU]HJOÈGDUNLQLHREVïXJXMÈQDMQRZV]\FKPHWRGRELHNWXArray
-HGQDNVNU\SWRQD]ZLH(&0$6FULSW6KLPXPRĝOLZLDUHSURGXNRZDQLH
W\FKPHWRG(&0$6FULSWWRVWDQGDUGQDSRGVWDZLHNWöUHJRRSDUW\
MHVWQRZRF]HVQ\-DYD6FULSW
KRÓTKA HISTORIA JAVASCRIPT
VW\F]Hñ
luty
marzec . . 1HWVFDSH1DYLJDWRU]DZLHUDSLHUZV]È
(&0$6FULSWWRRğFMDOQDQD]ZDXVWDQGDU\]RZDQHM
ZHUVMLMÚ]\ND-DYD6FULSWFKRÊ]D]Z\F]DMQDGDO
Xĝ\ZDVLÚQD]Z\JavaScriptRLOHQLHSRUXV]DVLÚ
NZHVWLLQRZ\FKIXQNFML
ZHUVMÚMÚ]\ND-DYD6FULSWRSUDFRZDQÈ
SU]H]%UHQGDQD(LFKD
NZLHFLHñ
maj
czerwiec
lipiec
VLHUSLHñ 0LFURVRIWWZRU]\]JRGQ\]-DYD6FULSW
MÚ]\NVNU\SWRZ\RQD]ZLH-6FULSW
ZU]HVLHñ
SDěG]LHUQLN
OLVWRSDG 1HWVFDSHSU]HND]XMH-DYD6FULSW
RUJDQL]DFML(&0$DE\MHJRGDOV]\UR]ZöM
PöJï]RVWDÊXVWDQGDU\]RZDQ\
JUXG]LHñ
VW\F]Hñ
luty
marzec
NZLHFLHñ
maj
czerwiec ... :\GDQLH(&0$6FULSW
lipiec
VLHUSLHñ
ZU]HVLHñ
SDěG]LHUQLN
OLVWRSDG
JUXG]LHñ
maj . ..
(&0$,QWHUQDWLRQDOWRRUJDQL]DFMDRGSRZLHG]LDOQD
]DUR]ZöMMÚ]\ND-DYD6FULSWSRGREQLHMDN
:&RGSRZLDGD]D+70/L&663URGXFHQFL
SU]HJOÈGDUHNLQWHUQHWRZ\FKF]ÚVWRGRGDMÈIXQNFMH
Z\NUDF]DMÈFHSR]DVSHF\ğNDFMÚ(&0$ SRGREQLH
MDNPDWRPLHMVFH]+70/L&66 2EVïXJDQDMQRZV]\FKIXQNFML(&0$6FULSWĽ
SRGREQLHMDNQDMQRZV]HIXQNFMHVSHF\ğNDFML
+70/L&66ĽGRVWÚSQDMHVWW\ONRZQDMQRZV]\FK
ZHUVMDFKSU]HJOÈGDUHN1LHPDWRMHGQDNĝDGQHJR
ZSï\ZXQDZLHG]ÚNWöUÈF]HUSLHV]]WHMNVLÈĝNL
M4XHU\SRPDJDZUR]ZLÈ]\ZDQLXSUREOHPöZ
]ZLÈ]DQ\FK]UöĝQLFDPLPLÚG]\SU]HJOÈGDUNDPL :DUWRRW\PZVSRPQLHÊSRGNÈWHPWHFKQLN
]DSUH]HQWRZDQ\FKZUR]G]LDOH
:\PLHQLRQHPHWRG\RELHNWXArray]RVWDï\
ZSURZDG]RQHZ(&0$6FULSWLQLHVÈREVïX
JLZDQHSU]H]SU]HJOÈGDUNÚ,QWHUQHW([SORUHU
OXEZF]HĂQLHMV]HZHUVMH forEach(), some(),
every(), ğOWHU Lmap()
:FKZLOLSRZVWDZDQLDNVLÈĝNLSU]\JRWR
ZDQLDGRZ\GDQLD(&0$6FULSW
538 FILTROWANIE, WYSZUKIWANIE I SORTOWANIE
$E\PHWRG\WHG]LDïDï\ZVWDUV]\FKSU]HJOÈGDU
NDFKGRVWURQ\SRZLQLHQHĂGRïÈF]\Ê(&0$6FULSW
6KLPNWöU\ZW\FKSU]HJOÈGDUNDFKUHSURGXNXMH
IXQNFMRQDOQRĂÊW\FKPHWRGhttps://github.com/
es-shims/es5-shim
3U]HGVWDZLHQLH
VNRPSOLNRZDQHMVWUXNWXU\
GDQ\FKPRĝHZ\PDJDÊ
Xĝ\FLDZLHOXRELHNWöZ
*UXS\RELHNWöZPRĝQD
SU]HFKRZ\ZDÊZWDEOLFDFK
OXEMDNRZïDĂFLZRĂFLLQQ\FK
RELHNWöZ3RGF]DVZ\ERUX
SRGHMĂFLDQDOHĝ\Z]LÈÊSRG
XZDJÚVSRVöEXĝ\FLDGDQ\FK
TABLICE I OBIEKTY
— WYBÓR
NAJLEPSZEJ
STRUKTURY
DANYCH
OBIEKTY W TABLICY
OBIEKTY JAKO WŁAŚCIWOŚCI
.LHG\NROHMQRĂÊRELHNWöZMHVWZDĝQDWRSRZLQQ\
E\ÊSU]HFKRZ\ZDQHZWDEOLF\SRQLHZDĝNDĝG\
HOHPHQWWDEOLF\PDSU]\SLVDQ\QXPHULQGHNVX
3DU\NOXF]ZDUWRĂÊZRELHNWDFKQLHVÈXïRĝRQH
ZNROHMQRĂFL :DUWR]ZUöFLÊXZDJÚQDWRĝH
QXPHULQGHNVXPRĝHVLÚ]PLHQLÊSRGRGDQLX
OXEXVXQLÚFLXRELHNWöZ7DEOLFHRIHUXMÈWDNĝH
ZïDĂFLZRĂFLLPHWRG\SRPDJDMÈFHZWUDNFLHSUDF\
]VHNZHQFMÈHOHPHQWöZ
PHWRGDsort()]PLHQLDNROHMQRĂÊHOHPHQWöZ
ZWDEOLF\
ZïDĂFLZRĂÊOHQJWKSRGDMHOLF]EÚHOHPHQWöZ
ZWDEOLF\
.LHG\FKFHV]X]\VNDÊGRVWÚSGRRELHNWöZ]D
SRPRFÈLFKQD]ZQD]Z\VSUDZG]DMÈVLÚGRVNR
QDOHMDNRZïDĂFLZRĂFLLQQHJRRELHNWX SRQLHZDĝ
QLHWU]HEDEÚG]LHSU]HSURZDG]DÊLWHUDFMLSU]H]
ZV]\VWNLHRELHNW\ZFHOX]QDOH]LHQLDZïDĂFLZHJR
MDNPDWRPLHMVFHZSU]\SDGNXWDEOLF\ •
•
YDUSHRSOH >
^QDPHij&]HVïDZijUDWHDFWLYHWUXH`
^QDPHij&HOLQDijUDWHDFWLYHWUXH`
^QDPHij*U]HJRU]ijUDWHDFWLYHIDOVH`
^QDPHij1LNRGHPijUDWHDFWLYHWUXH`
]
$E\SREUDÊGDQH]WDEOLF\RELHNWöZPRĝQDXĝ\Ê
QXPHUXLQGHNVXGDQHJRRELHNWX
3REUDQLHLPLHQLDLVWDZNLXĝ\WNRZQLND
// Celina.
SHUVRQ>@QDPH
SHUVRQ>@UDWH
$E\GRGDÊOXEXVXQÈÊRELHNW\]WDEOLF\QDOHĝ\
Z\NRU]\VWDÊPHWRG\WDEOLF\
,WHUDFMDSU]H]HOHPHQW\ZWDEOLF\MHVWPRĝOLZD
]]DVWRVRZDQLHPPHWRG\forEach()
1DOHĝ\SDPLÚWDÊR]DSHZQLHQLXXQLNDOQRĂFLQD]Z
ZV]\VWNLFKZïDĂFLZRĂFL1DSU]\NïDGQLHPRJÈ
LVWQLHÊGZLHZïDĂFLZRĂFLRQD]ZLH&]HVïDZOXE
&HOLQDZW\PVDP\PRELHNFLHXWZRU]RQ\P]D
SRPRFÈSRQLĝV]HJRIUDJPHQWXNRGX
YDUSHRSOH ^
&]HVïDZ ^UDWHDFWLYHWUXH`
&HOLQD ^UDWHDFWLYHWUXH`
*U]HJRU] ^UDWHDFWLYHIDOVH`
1LNRGHP ^UDWHDFWLYHWUXH`
`
$E\SREUDÊGDQH]RELHNWXSU]HFKRZ\ZDQHJRMDNR
ZïDĂFLZRĂÊLQQHJRRELHNWXPRĝQDXĝ\ÊQD]Z\
RELHNWX
3REUDQLHVWDZNLXĝ\WNRZQLND&]HVïDZ
SHRSOH&]HVïDZUDWH
$E\GRGDÊOXEXVXQÈÊRELHNW\ZRELHNFLHPRĝQD
Z\NRU]\VWDÊVïRZRNOXF]RZHGHOHWHOXESU]\SLVDÊ
RELHNWRZLSXVW\FLÈJWHNVWRZ\
,WHUDFMDSU]H]RELHNW\SRWRPQHMHVWPRĝOLZD
]]DVWRVRZDQLHPVNïDGQLRELHNWNOXF]H
FILTROWANIE, WYSZUKIWANIE I SORTOWANIE FILTROWANIE
)LOWURZDQLHSR]ZDODQD]PQLHMV]HQLH]ELRUXZDUWRĂFL0RĝHV]ZLÚFXWZRU]\Ê
SRG]ELöUGDQ\FKVSHïQLDMÈF\FK]GHğQLRZDQHNU\WHULD
$QDOL]ÚğOWURZDQLDUR]SRF]QLHP\RGGDQ\FK
GRW\F]ÈF\FKIUHHODQFHUöZLLFKVWDZHN.DĝGD
RVREDMHVWSU]HGVWDZLDQDSU]H]OLWHUDïRELHNWX
ZQDZLDVLHNODPURZ\P *UXSDRELHNWöZMHVW
SU]HFKRZ\ZDQDZWDEOLF\
YDUSHRSOH >
{
QDPHij&]HVïDZij
UDWH
`
{
QDPHij&HOLQDij
UDWH
`
{
QDPHij*U]HJRU]ij
UDWH
`
{
QDPHij1LNRGHPij
UDWH
`
@
FILTROWANIE, WYSZUKIWANIE I SORTOWANIE
3U]HGZ\ĂZLHWOHQLHPGDQHEÚGÈğOWURZDQH:W\P
FHOXSU]HSURZDG]DP\LWHUDFMÚSU]H]RELHNW\
SU]HGVWDZLDMÈFHSRV]F]HJöOQHRVRE\-HĝHOLVWDZND
MHVWZ\ĝV]DQLĝ]ïDOHMHGQRF]HĂQLHQLĝV]DQLĝ
]ïWRGDQDRVREDEÚG]LHXPLHV]F]RQDZQRZHM
WDEOLF\RQD]ZLHUHVXOWV
Iteracja przez wszystkie osoby
Czy UDWH! ?
N
N
Czy UDWH ?
T
T
Dodaj person do tablicy UHVXOWV
Przejdź do kolejnej osoby
WYŚWIETLENIE TABLICY
1DNROHMQ\FKGZöFKVWURQDFK]REDF]\V]GZD
RGPLHQQHSRGHMĂFLDZ]DNUHVLHğOWURZDQLDGDQ\FK
ZWDEOLF\SHRSOH:REXZ\NRU]\VW\ZDQHVÈ
PHWRG\RELHNWXArray.forEach()LğOWHU 2ELHPHWRG\]RVWDQÈXĝ\WHZFHOXSU]HSURZDG]H
QLDLWHUDFMLSU]H]GDQHWDEOLF\SHRSOHLZ\V]XNDQLD
W\FKRVöENWöU\FKVWDZNDZ\QRVLRG]ïGR
]ï]DJRG]LQÚSUDF\1DVWÚSQLHZ\V]XNDQH
RVRE\EÚGÈXPLHV]F]RQHZQRZHMWDEOLF\RQD]ZLH
UHVXOWV
3RXWZRU]HQLXQRZHMWDEOLF\UHVXOWVSÚWODfor
SU]HSURZDG]DLWHUDFMÚSU]H]QLÈLXPLHV]F]DGDQH
RVöEZWDEHOL+70/ Z\QLNSRND]DQRQDVWURQLH
SROHZHM JAVASCRIPT
1
2
3
4
5
6
3RQLĝHM]QDMGXMHVLÚNRGRGSRZLHG]LDOQ\]D
Z\ĂZLHWOHQLHGDQ\FKRVöENWöU\FKRELHNW\]RVWDï\
XPLHV]F]RQHZWDEOLF\UHVXOWV
1. 3U]\NïDG]RVWDQLHZ\NRQDQ\JG\PRGHO'20
EÚG]LHJRWRZ\GRSUDF\
2. 'DQHGRW\F]ÈFHRVöELLFKVWDZHNVÈXPLHV]
F]DQHQDVWURQLHLQWHUQHWRZHM GDQHSRND]DQRQD
VWURQLHSROHZHM 3. )XQNFMDğOWUXMHGDQHZWDEOLF\SHRSOHRUD]
WZRU]\QRZÈWDEOLFÚRQD]ZLHUHVXOWV QDVWÚSQD
VWURQD 4. 8WZRU]HQLHHOHPHQWX<tbody>
5. 3ÚWODforSU]HSURZDG]DLWHUDFMÚSU]H]WDEOLFÚ
LXĝ\ZDM4XHU\GRXWZRU]HQLDQRZHJRZLHUV]D
WDEHOLGODNDĝGHMRVRE\LSRELHUDQHMSU]H]QLÈ
VWDZNL]DJRG]LQÚSUDF\
6. 1RZD]DZDUWRĂÊ]RVWDMHXPLHV]F]RQDQD
VWURQLHSRQDJïöZNXWDEHOL
FMVğOWHUIRUHDFKMVFMVğOWHUğOWHUMV
$(function() {
0LHMVFHQDGDQHGRW\F]ÈFHRVöE SRND]DQHQDVWURQLHSROHZHM 0LHMVFHQDNRGSU]HSURZDG]DMÈF\ğOWURZDQLHWZRU]\QRZÈWDEOLFÚ
RQD]ZLHUHVXOWV
,WHUDFMDSU]H]QRZÈWDEOLFÚGRSDVRZDQHRVRE\VÈXPLHV]F]DQHZWDEHOL
Z\ĂZLHWODQHMQDVWURQLH
YDUWDEOH%RG\ ijWERG\!WERG\!ij 1RZD]DZDUWRĂÊM4XHU\
IRU YDUL LUHVXOWVOHQJWKL ^
,WHUDFMDSU]H]GRSDVRZDQH
HOHPHQW\
YDUSHUVRQ UHVXOWV>L@3U]HFKRZ\ZDQLHELHĝÈFHMRVRE\
YDUURZ ijWU!WU!ij 8WZRU]HQLHZLHUV]DGODRVRE\
URZDSSHQG ijWG!WG!ij WH[W SHUVRQQDPH :VWDZLHQLHLPLHQLDRVRE\
URZDSSHQG ijWG!WG!ij WH[W SHUVRQUDWH :VWDZLHQLHVWDZNLRVRE\
WDEOH%RG\DSSHQG URZ 'RGDQLHZLHUV]DGRQRZHM
]DZDUWRĂFL
`
'RGDQLHQRZHM]DZDUWRĂFLGRGRW\FKF]DVRZHM]DZDUWRĂFLVWURQ\
ijWKHDGij DIWHU WDEOH%RG\ 'RGDQLHHOHPHQWXWERG\!SRWKHDG!
` FILTROWANIE, WYSZUKIWANIE I SORTOWANIE
541
UŻYCIE METOD TABLICY
DO FILTROWANIA DANYCH
2ELHNWWDEOLF\PDGZLHPHWRG\QLH]Z\NOHSU]\GDWQHSRGF]DVğOWURZDQLD
GDQ\FK7XWDM]REDF]\V]RELHZ\NRU]\VWDQHGRğOWURZDQLDWHJRVDPHJR
]ELRUXGDQ\FK3RQLHZDĝPHWRG\WHğOWUXMÈGDQHHOHPHQW\]DOLF]DMÈFH
WHVWVÈGRGDZDQHGRQRZHMWDEOLF\
'ZDSU]\NïDG\SRND]DQHQDVWURQLHSRSUDZHM
UR]SRF]\QDMÈVLÚRGWDEOLF\RELHNWöZ SU]HGVWD
ZLRQDZSRGUR]G]LDOHķ)LOWURZDQLHĵ LVÈZQLFK
Z\NRU]\VW\ZDQHğOWU\GRXWZRU]HQLDQRZHMWDEOLF\
VNïDGDMÈFHMVLÚ]MHG\QLHSRG]ELRUXW\FKRELHNWöZ
1DVWÚSQLHNRGSU]HSURZDG]DLWHUDFMÚSU]H]QRZÈ
WDEOLFÚZFHOXSRND]DQLDZ\QLNöZ MDNPRJïHĂ
]REDF]\ÊQDSRSU]HGQLHMVWURQLH • :SLHUZV]\PSU]\NïDG]LH]DVWRVRZDQRPHWRGÚ
=ZUöÊXZDJÚQDXĝ\FLHpersonMDNRQD]Z\
SDUDPHWUXĽG]LDïDZFKDUDNWHU]H]PLHQQHM
ZHZQÈWU]IXQNFML
• :SU]\NïDG]LHZ\NRU]\VWXMÈF\PPHWRGÚ
•
forEach()EÚG]LHWRSDUDPHWUIXQNFMLDQRQL
PRZHM
:SU]\NïDG]LHZ\NRU]\VWXMÈF\PPHWRGÚ
ğOWHU EÚG]LHWRSDUDPHWUIXQNFML
SULFH5DQJH forEach()
• :GUXJLPSU]\NïDG]LH]DVWRVRZDQRPHWRGÚ
3DUDPHWUpersonRGSRZLDGDELHĝÈFHPXRELHNWRZL
WDEOLF\SHRSOHLMHVWXĝ\ZDQ\ZFHOXX]\VNDQLD
GRVWÚSXGRZïDĂFLZRĂFLRELHNWX
forEach()
ğOWHU
ğOWHU
0HWRGDforEach()SU]HSURZDG]DLWHUDFMÚSU]H]
WDEOLFÚLZ\NRQXMHWÚVDPÈIXQNFMÚGODNDĝGHJR
HOHPHQWXWDEOLF\0HWRGDWDFKDUDNWHU\]XMHVLÚ
GXĝÈHODVW\F]QRĂFLÈSRQLHZDĝIXQNFMDPRĝH
SU]HSURZDG]DÊSUDNW\F]QLHNDĝG\URG]DMSU]HWZD
U]DQLDHOHPHQWöZWDEOLF\ DQLHMHG\QLHğOWURZDÊ
MHMDNSU]HGVWDZLRQRZSU]\NïDG]LH )XQNFMD
DQRQLPRZDG]LDïDZFKDUDNWHU]HğOWUXSRQLHZDĝ
VSUDZG]DF]\VWDZNDGDQHMRVRE\]DZLHUDVLÚ
ZHZVND]DQ\P]DNUHVLH-HĝHOLWDNRVRED]RVWDMH
GRGDQDGRQRZHMWDEOLF\
1. 8WZRU]HQLHQRZHMWDEOLF\ZFHOXSU]HFKRZ\ZD
QLDGRSDVRZDQ\FKHOHPHQWöZ
2. 7DEOLFDSHRSOHZ\NRU]\VWXMHPHWRGÚforEach()
GRZ\NRQDQLDWHMVDPHMIXQNFMLDQRQLPRZHM
GODNDĝGHJRRELHNWX SU]HGVWDZLDMÈFHJRRVREÚ ZWDEOLF\SHRSOH
3. -HĝHOLRELHNWVSHïQLD]GHğQLRZDQHNU\WHULD
]RVWDMHGRGDQ\GRWDEOLF\UHVXOWV]DSRPRFÈ
PHWRG\push()
FILTROWANIE, WYSZUKIWANIE I SORTOWANIE
0HWRGDğOWHU UöZQLHĝZ\ZRïXMHWÚVDPÈ
IXQNFMÚGODNDĝGHJRHOHPHQWXWDEOLF\DOHZDUWRĂFLÈ
]ZURWQÈZVSRPQLDQHMIXQNFMLMHVWW\ONRtrueOXE
IDOVH-HĝHOLIXQNFMD]ZUöFLtruePHWRGDğOWHU
XPLHĂFLVSUDZG]DQ\HOHPHQWZQRZHMWDEOLF\
6NïDGQLDMHVWQLHFRSURVWV]DQLĝZforEach(),
DOHPHWRGDMHVWSU]H]QDF]RQDW\ONRGRğOWURZDQLD
GDQ\FK
1. =DGHNODURZDQD]RVWDMHIXQNFMDRQD]ZLH
SULFH5DQJH -HMZDUWRĂFLÈ]ZURWQÈEÚG]LHtrue,
MHĂOL]DURENLGDQHMRVRE\EÚGÈ]QDMGRZDï\VLÚ
Z]GHğQLRZDQ\P]DNUHVLH
2. 8WZRU]HQLHQRZHMWDEOLF\SU]H]QDF]RQHMGR
SU]HFKRZ\ZDQLDGRSDVRZDQ\FKHOHPHQWöZ
3. 0HWRGDğOWHU Z\ZRïXMHIXQNFMÚ
SULFH5DQJH GODNDĝGHJRHOHPHQWXWDEOLF\-HĝHOL
ZDUWRĂFLÈ]ZURWQÈIXQNFMLSULFH5DQJH EÚG]LH
trueWRGDQ\HOHPHQW]RVWDQLHXPLHV]F]RQ\
ZWDEOLF\UHVXOWV
STATYCZNE FILTROWANIE
DANYCH
JAVASCRIPT
FMVğOWHUIRUHDFKMV
$(function() {
0LHMVFHQDGDQHGRW\F]ÈFHRVöE
1
2
3
6SUDZG]HQLHNDĝGHMRVRE\RUD]GRGDQLHGRWDEOLF\W\FKRVöENWöU\FKVWDZND
PLHĂFLVLÚZSRGDQ\P]DNUHVLH
YDUUHVXOWV >@7DEOLFDRVöEVSHïQLDMÈF\FKNU\WHULD
SHRSOHIRU(DFK IXQFWLRQ SHUVRQ ^'ODNDĝGHMRVRE\
LI SHUVRQUDWH! SHUVRQUDWH ^
&]\VWDZNDPLHĂFLVLÚZSRGDQ\P]DNUHVLH"
UHVXOWVSXVK SHUVRQ -HĝHOLWDNRVRED]RVWDMHGRGDQDGRWDEOLF\
`
` ,WHUDFMDSU]H]WDEOLFÚUHVXOWVGRSDVRZDQHRVRE\VÈXPLHV]F]DQHZWDEHOL
Z\ĂZLHWODQHMQDVWURQLH
` JAVASCRIPT
FMVğOWHUğOWHUMV
$(function() {
0LHMVFHQDGDQHGRW\F]ÈFHRVöE
1
2
3
)XQNFMDG]LDïDZFKDUDNWHU]HğOWUX
IXQFWLRQSULFH5DQJH SHUVRQ ^
=DGHNODURZDQLHIXQNFMLSULFH5DQJH UHWXUQ SHUVRQUDWH! SHUVRQUDWH =ZUöÊZDUWRĂÊWUXHGODZVND]DQHJR]DNUHVX
`
)LOWURZDQLHWDEOLF\SHRSOHGRSDVRZDQHRVRE\VÈXPLHV]F]RQHZWDEOLF\UHVXOWV
YDUUHVXOWV >@7DEOLFD]DZLHUDMÈFDGRSDVRZDQHRVRE\
UHVXOWV SHRSOHğOWHU SULFH5DQJH )XQNFMDğOWHU Z\ZRïXMHSULFH5DQJH ,WHUDFMDSU]H]WDEOLFÚUHVXOWVGRSDVRZDQHRVRE\VÈXPLHV]F]DQHZWDEHOL
Z\ĂZLHWODQHMQDVWURQLH
` .RGSU]HGVWDZLRQ\ZSRGUR]G]LDOHķ:\ĂZLHWOHQLHWDEOLF\ĵLSU]H]QDF]RQ\GRZ\ĂZLHWOHQLDWDEHOLZ\QLNöZ
PRĝH]QDMGRZDÊVLÚZPHWRG]LH.forEach()7XWDM]RVWDïMHGQDNRGG]LHORQ\DE\SRND]DÊUöĝQHSRGHMĂFLD
Z]DNUHVLHğOWURZDQLDLWZRU]HQLDQRZ\FKWDEOLF
FILTROWANIE, WYSZUKIWANIE I SORTOWANIE 543
FILTROWANIE DYNAMICZNE
-HĝHOLSR]ZROLV]Xĝ\WNRZQLNRPQDğOWURZDQLH]DZDUWRĂFLVWURQ\WRPRĝHV]
SU]\JRWRZDÊNRG+70/FDïHM]DZDUWRĂFLDQDVWÚSQLHZ\ĂZLHWODÊLXNU\ZDÊ
RGSRZLHGQLHMHMIUDJPHQW\JG\Xĝ\WNRZQLNNRU]\VWD]ğOWUöZ
:\REUDěVRELHĝHPDV]GRVWDUF]\ÊXĝ\WNRZQLNRP
VXZDNSU]H]QDF]RQ\GRZVND]\ZDQLD]DNUHVX
VWDZNLJRG]LQRZHMMDNÈVÈJRWRZL]DSïDFLÊ7HJR
URG]DMXVXZDNEÚG]LHDXWRPDW\F]QLHXDNWXDOQLDï
]DZDUWRĂÊWDEHOLQDSRGVWDZLH]DNUHVX]GHğQLRZD
QHJRSU]H]Xĝ\WNRZQLND
-HĝHOLQRZDWDEHODMHVWWZRU]RQD]DNDĝG\P
UD]HPJG\Xĝ\WNRZQLNNRU]\VWD]VXZDND
SRGREQLHMDNZSRSU]HGQLFKGZöFKSU]\NïDGDFK
SRND]XMÈF\FKğOWURZDQLHGDQ\FK R]QDF]DWR
WZRU]HQLHLXVXZDQLHRJURPQHMLORĂFLHOHPHQWöZ
=E\WGXĝDLORĂÊWHJRURG]DMXRSHUDFMLQDPRGHOX
'20PRĝHVSRZROQLÊG]LDïDQLHVNU\SWöZ
544 FILTROWANIE, WYSZUKIWANIE I SORTOWANIE
=QDF]QLHHIHNW\ZQLHMV]HUR]ZLÈ]DQLHSU]HGVWDZLD
VLÚQDVWÚSXMÈFR
1. 8WZRU]HQLHZLHUV]DWDEHOLGODNDĝGHMRVRE\
2. :\ĂZLHWODQLHZLHUV]\W\FKRVöENWöUH]QDMGXMÈ
VLÚZHZVND]DQ\P]DNUHVLHLXVXZDQLHZLHUV]\
RVöEVSR]DSRGDQHJR]DNUHVX
8ĝ\W\SRQLĝHMVXZDN]DNUHVXSRFKRG]L]ZW\F]NL
M4XHU\RQD]ZLHQR8L6OLGHU RSUDFRZDQHMSU]H]
/ÓRQD*HUVRQD KWWSUHIUHVKOHVVFRPQRXLVOLGHU
=DQLPSU]HMG]LHP\GRNRGXRPDZLDQHJRSU]\
NïDGXSRĂZLÚFLP\FKZLOÚQDDQDOL]ÚSRGHMĂFLD
]DVWRVRZDQHJRZW\PVNU\SFLH2WR]DGDQLDMDNLH
PXV]ÈE\ÊZ\NRQDQHSU]H]VNU\SW
i) .RQLHF]QRĂÊLWHUDFMLSU]H]ZV]\VWNLHRELHNW\
ZWDEOLF\RUD]XWZRU]HQLHZLHUV]DGODNDĝGHJR
]QLFK
ii) 8WZRU]RQ\ZLHUV]WU]HEDGRGDÊGRWDEHOL
Z\ĂZLHWODQHMQDVWURQLH
iii) .DĝG\ZLHUV]WDEHOLPDE\ÊZ\ĂZLHWORQ\OXE
XNU\W\Z]DOHĝQRĂFLRGWHJRF]\VWDZNDRVRE\
NWöUÈSU]HGVWDZLDPLHĂFLVLÚZ]GHğQLRZDQ\P
]DNUHVLH 7R]DGDQLHMHVWZ\NRQ\ZDQHZWUDNFLH
NDĝGHJRXDNWXDOQLHQLDVXZDND :FHOXRNUHĂOHQLDNWöU\ZLHUV]PD]RVWDÊ
Z\ĂZLHWORQ\OXEXNU\W\NRGPXVLPLHÊPRĝOLZRĂÊ
VWRVRZDQLDRGZRïDñPLÚG]\
• RELHNWHPpersonZWDEOLF\SHRSOH VSUDZG]H
•
QLHVWDZNLGDQHMRVRE\
ZLHUV]HPWDEHOLRGSRZLDGDMÈF\PGDQHMRVRELH
Z\ĂZLHWOHQLHOXEXNU\FLHWHJRZLHUV]D $E\]DSHZQLÊPRĝOLZRĂÊVWRVRZDQLDWHJRURG]DMX
RGZRïDñNRQLHF]QHMHVWXWZRU]HQLHQRZHMWDEOLF\
RQD]ZLHURZV%ÚG]LHZQLHMSU]HFKRZ\ZDQD
VHULDRELHNWöZRGZöFKZïDĂFLZRĂFLDFK
• personRGQLHVLHQLHGRRELHNWXGDQHMRVRE\
•
:NRG]LHWZRU]\P\IXQNFMHSU]HGVWDZLDMÈFH
Z\PLHQLRQHZF]HĂQLHM]DGDQLD1RZDWDEOLFD
EÚG]LHXWZRU]RQDZSLHUZV]HMIXQNFML
PDNH5RZV ĽIXQNFMDWDXWZRU]\GODNDĝGHM
RVRE\ZLHUV]ZWDEHOLorazXPLHĂFLQRZ\RELHNW
ZWDEOLF\URZV
DSSHQG5RZV ĽIXQNFMDWDSU]HSURZDG]DLWHUDFMÚ
SU]H]WDEOLFÚURZVLGRGDMHSRV]F]HJöOQHZLHUV]H
GRWDEHOL
update()ĽIXQNFMDWDRNUHĂOLNWöUHZLHUV]HPDMÈ
E\ÊZ\ĂZLHWORQHOXEXNU\WHQDSRGVWDZLHGDQ\FK
SREUDQ\FK]VXZDND
2SUöF]WHJRGRGDMHP\MHV]F]HF]ZDUWÈIXQNFMÚ
RQD]ZLHinit():WHMIXQNFML]QDMGXMÈVLÚ
ZV]\VWNLHLQIRUPDFMHZ\PDJDQHSRGF]DV
SLHUZV]HJRZF]\WDQLDVWURQ\ PLÚG]\LQQ\PLNRG
WZRU]ÈF\VXZDN]DSRPRFÈZW\F]NL 1D]ZDinitWRVNUöWRGinicjacjiSURJUDPLĂFL
F]ÚVWRVWRVXMÈWÚQD]ZÚGODIXQNFMLOXEVNU\SWöZ
Z\NRQ\ZDQ\FKSRGF]DVSLHUZV]HJRZF]\W\ZDQLD
VWURQ\
=DQLPGRNïDGQLHSU]HDQDOL]XMHP\VNU\SWQD
NROHMQ\FKGZöFKVWURQDFKGRZLHV]VLÚZLÚFHM
RWDEOLF\URZVRUD]WZRU]HQLXRGQLHVLHñPLÚG]\
RELHNWDPLLZLHUV]DPLWDEHOLSU]HGVWDZLDMÈF\PL
SRV]F]HJöOQHRVRE\
ZWDEOLF\SHRSOH
HOHPHQWNROHNFMDM4XHU\]DZLHUDMÈFDZLHUV]
RGSRZLDGDMÈF\GDQHMRVRELHZWDEHOLZ\ĂZLHW
ODQHMQDVWURQLH
FILTROWANIE, WYSZUKIWANIE I SORTOWANIE 545
PRZECHOWYWANIE ODNIESIEŃ
DO OBIEKTÓW I WĘZŁÓW
MODELU DOM
7DEOLFDURZV]DZLHUDRELHNW\RGZöFKSRZLÈ]DQ\FK]HVREÈZïDĂFLZRĂFLDFK
2GQLHVLHQLDGRRELHNWöZSU]HGVWDZLDMÈF\FKRVRE\ZWDEOLF\SHRSOH
2GQLHVLHQLDGRZLHUV]\SU]HGVWDZLDMÈF\FKWHRVRE\ZWDEHOLQDVWURQLH
NROHNFMHM4XHU\ :NVLÈĝFHVSRWNDïHĂVLÚ]SU]\NïDGDPLZNWöU\FK
]PLHQQHE\ï\Xĝ\ZDQHZFHOXSU]HFKRZ\ZDQLD
RGQLHVLHñGRZÚ]ïöZPRGHOX'20OXEHOHPHQWöZ
Z\EUDQ\FKZM4XHU\ ]DPLDVWGZXNURWQHJRZ\
ELHUDQLDW\FKVDP\FKHOHPHQWöZ 7DNLHSRGHMĂFLH
QRVLQD]ZÚbuforowania
TABLICA ROWS
INDEKS:
:RPDZLDQ\PWXWDMSU]\NïDG]LHLGHÚEXIRURZDQLD
MHV]F]HEDUG]LHMUR]EXGRZXMHP\*G\NRG
SU]HSURZDG]DLWHUDFMÚSU]H]RELHNW\ZWDEOLF\
SHRSOHWZRU]ÈFGODGDQHMRVRE\ZLHUV]ZWDEHOL
Z\ĂZLHWODQHMQDVWURQLHGRGDWNRZRWZRU]RQ\
MHVWQRZ\RELHNWGODGDQHMRVRE\LXPLHV]F]DQ\
ZWDEOLF\RQD]ZLHURZV&HOHPWDNLHJRUR]ZLÈ]D
QLDMHVWSU]\JRWRZDQLHSRZLÈ]DQLDPLÚG]\
OBIEKT:
0
person
people[0]
$element
<tr>
1
person
people[1]
$element
<tr>
2
person
people[2]
$element
<tr>
3
person
people[3]
$element
<tr>
• RELHNWHPGODGDQHMRVRE\]QDMGXMÈF\PVLÚ
•
ZěUöGOHGDQ\FK
ZLHUV]HPGODGDQHMRVRE\ZWDEHOLZ\ĂZLHWODQHM
QDVWURQLH
3RGF]DVRNUHĂODQLDZ\ĂZLHWODQ\FKZLHUV]\NRG
PRĝHSU]HSURZDG]LÊLWHUDFMÚSU]H]QRZÈWDEOLFÚ
LVSUDZG]LÊVWDZNÚXVWDORQÈSU]H]GDQÈRVREÚ
-HĝHOLVWDZNDMHVWRGSRZLHGQLDZLHUV]PRĝQD
Z\ĂZLHWOLÊ:SU]HFLZQ\PUD]LHZLHUV]EÚG]LH
XNU\W\
7DNLHSRGHMĂFLHZ\PDJDPQLHMV]HMLORĂFL]DVREöZ
QLĝSRQRZQHWZRU]HQLH]DZDUWRĂFLWDEHOLJG\
Xĝ\WNRZQLN]PLHQLVWDZNÚNWöUÈMHVWJRWRZ\
]DSïDFLÊ
546 FILTROWANIE, WYSZUKIWANIE I SORTOWANIE
3RSUDZHMVWURQLHPRĝHV]]REDF]\ÊMDNPHWRGD
push()RELHNWXArrayWZRU]\QRZ\HOHPHQW
ZWDEOLF\URZV7HQHOHPHQWMHVWOLWHUDïHPRELHNWX
LSU]HFKRZXMHRELHNWpersonRUD]WZRU]RQ\GOD
QLHJRZLHUV]ZWDEHOLZ\ĂZLHWODQHMQDVWURQLH
URZVSXVK ^
SHUVRQWKLV
HOHPHQWURZ
` TABLICA PEOPLE
INDEKS:
0
2ELHNWSHUVRQ
.ROHNFMDM4XHU\
TABELA HTML
OBIEKT:
name
Czesław
rate
70
td
tr
1
name
Celina
rate
80
td
td
tr
2
name
td
Grzegorz
table
rate
tbody
75
td
tr
3
name
Nikodem
rate
120
td
td
tr
td
7DEOLFDSHRSOHSU]HFKRZXMHMXĝHOHPHQW\
RSRV]F]HJöOQ\FKRVREDFKRUD]SRELHUDQ\FKSU]H]
QLHVWDZNDFK'ODWHJRWHĝRELHNW\ZWDEOLF\URZV
PXV]ÈMHG\QLHZVND]\ZDÊSLHUZRWQHRELHNW\GOD
GDQ\FKRVöE DQLHNRSLRZDÊMH 2ELHNWM4XHU\]RVWDïXĝ\W\GRXWZRU]HQLD
SRV]F]HJöOQ\FKZLHUV]\WDEHOL2ELHNW\ZWDEOLF\
URZVSU]HFKRZXMÈRGQLHVLHQLDGRSRV]F]HJöOQ\FK
ZLHUV]\ZWDEHOLZ\ĂZLHWODQHMQDVWURQLH:LHUV]\
QLHWU]HEDSRQRZQLHWZRU]\ÊOXEZ\ELHUDÊ
FILTROWANIE, WYSZUKIWANIE I SORTOWANIE 547
FILTROWANIE DYNAMICZNE
1. 8PLHV]F]HQLHVNU\SWXZIXQNFMLW\SX,,)( QLHSRND]DQR
WHJRZRPDZLDQ\PGLDJUDPLH ']LDïDQLH,,)(]DF]\QDVLÚ
RGWDEOLF\SHRSOH
2. 8WZRU]HQLHF]WHUHFK]PLHQQ\FKJOREDOQ\FKXĝ\ZDQ\FK
ZFDï\PVNU\SFLH
URZVĽSU]H]QDF]RQHMGRSU]HFKRZ\ZDQLDWDEOLF\RGQLH
VLHñ
$minĽSU]HFKRZXMÈFHMGDQHZHMĂFLRZHGRZ\ĂZLHWOHQLD
VWDZNLPLQLPDOQHM
PD[ĽSU]HFKRZXMÈFHMGDQHZHMĂFLRZHGRZ\ĂZLHWOHQLD
VWDZNLPDNV\PDOQHM
WDEOHĽSU]HFKRZXMÈFHMWDEHOÚZ\ĂZLHWODQÈQDVWURQLH
3. )XQNFMDPDNH5RZV SU]HSURZDG]DLWHUDFMÚSU]H]ZV]\VW
NLHRVRE\Z\PLHQLRQHZWDEHOLSHRSOHLZ\ZRïXMHIXQNFMÚ
DQRQLPRZÈGODNDĝGHJRRELHNWXZWDEOLF\=ZUöÊXZDJÚQD
Xĝ\FLHpersonMDNRQD]Z\SDUDPHWUX2]QDF]DWRĝHZWHM
IXQNFMLpersonRGQRVLVLÚGRELHĝÈFHJRRELHNWXZWDEOLF\
4. 'ODNDĝGHMRVRE\WZRU]RQ\MHVWQRZ\RELHNWM4XHU\
RQD]ZLHURZL]DZLHUDHOHPHQW<tr>
5. ,PLÚRVRE\LXVWDORQDSU]H]QLÈVWDZND]RVWDMÈZVWDZLRQH
GRHOHPHQWöZ<td>
6. 'RWDEOLF\URZVZVWDZLRQ\]RVWDMHQRZ\RELHNWZUD]
]GZRPDZïDĂFLZRĂFLDPLpersonSU]HFKRZXMHRGQLHVLHQLH
GRRELHNWXGDQHMRVRE\QDWRPLDVWHOHPHQWSU]HFKRZXMH
RGQLHVLHQLHGRHOHPHQWX<tr>SU]HGVWDZLDMÈFHJRRVREÚ
ZWDEHOL
7. 0HWRGDDSSHQG5RZV WZRU]\QRZ\RELHNWM4XHU\
RQD]ZLH$tbody]DZLHUDMÈF\HOHPHQW<tbody>
8. 1DVWÚSQLHSU]HSURZDG]DQDMHVWLWHUDFMDSU]H]ZV]\VWNLH
RELHNW\WDEOLF\URZVRUD]QDVWÚSXMHGRGDQLHRGSRZLDGDMÈ
F\FKLPHOHPHQWöZ<tr>GR$tbody
9. 1RZD]DZDUWRĂÊ$tbodyMHVWGRGDZDQDGRHOHPHQW
WDEOH!
10. 0HWRGDupdate()SU]HSURZDG]DLWHUDFMÚSU]H]ZV]\VWNLH
RELHNW\WDEOLF\URZVLVSUDZG]DF]\VWDZNDSRELHUDQDSU]H]
GDQÈRVREÚMHVWZLÚNV]DRGSRGDQHJRZVXZDNXPLQLPXP
LMHGQRF]HĂQLHPQLHMV]DRGSRGDQHJRZVXZDNXPDNVLPXP
11. -HĝHOLWDNPHWRGDM4XHU\RQD]ZLHVKRZ Z\ĂZLHWOD
GDQ\ZLHUV]WDEHOL
12. -HĝHOLQLHPHWRGDM4XHU\RQD]ZLH$hide()XNU\ZD
GDQ\ZLHUV]WDEHOL
13. 1DSRF]ÈWNXIXQNFMLinit()QDVWÚSXMHXWZRU]HQLH
NRQWURONLVXZDND
14. =DNDĝG\PUD]HPJG\SRïRĝHQLHVXZDNDXOHJD]PLDQLH
SRQRZQLHZ\ZRï\ZDQDMHVWIXQNFMDupdate()
15. 3RVNRQğJXURZDQLXVXZDNDZ\ZRï\ZDQHVÈIXQNFMH
PDNH5RZV , DSSHQG5RZV Lupdate()
16. :\ZRïDQLHIXQNFMLinit()NWöUD]NROHLZ\ZRïXMH
NROHMQHIUDJPHQW\NRGX
548 FILTROWANIE, WYSZUKIWANIE I SORTOWANIE
Utworzenie zmiennych:
URZV: tablica pozwalająca na połączenie
poszczególnych osób z odpowiadającymi im
wierszami tabeli na stronie
$min i PD[: dane wejściowe w postaci minimalnej i maksymalnej stawki
WDEOH: tutaj znajduje się tabela zawierająca
informacje o dopasowanych osobach
2
FUNKCJA: PDNH5RZV
Utworzenie wierszy tabeli oraz wypełnienie
tablicy URZV
3
Iteracja przez obiekty w tablicy SHRSOH
FUNKCJA ANONIMOWA
Utworzenie obiektu URZ przechowującego element <tr>
Dodanie elementów <td> zawierających imię i stawkę
Dodanie nowego obiektu
do tablicy URZV
Dodanie odniesień do person i URZ
4
5
6
Przejście do kolejnego obiektu
tablicy SHRSOH
FUNKCJA: DSSHQG5RZV
dodaje wiersze do <tbody>
Utworzenie elementu <tbody> przeznaczonego na elementy <tr>
7
Iteracja przez obiekty w tablicy URZV
Dodanie URZ do elementu $tbody
8
Przejście do kolejnego obiektu
tablicy URZV
9
Dodanie elementu <tbody> do WDEOH!
FUNKCJA: update() uaktualnia zawartość
tabeli
10
Iteracja przez obiekty w tablicy URZV
12
Czy UDWH! min
i rate PD[?
Ukryj wiersz
11
Wyświetl wiersz
Przejście do kolejnego obiektu
tablicy URZV
FUNKCJA: init() konfiguracja skryptu
13
Konfiguracja VOLGHU
Wywołanie PDNH5RZV , DSSHQG5RZV
i update()
14
Wywołanie init() po wczytaniu modelu DOM
16
15
FILTROWANIE TABLICY
JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
FMVG\QDPLFğOWHUMV
(function(){
0LHMVFHQDWDEOLFÚSHRSOH
YDUURZV >@// Tablica rows.
PLQ ijYDOXHPLQij 3ROHWHNVWRZHGODZDUWRĂFLPLQLPDOQHMVWDZNL
PD[ ijYDOXHPD[ij 3ROHWHNVWRZHGODZDUWRĂFLPDNV\PDOQHMVWDZNL
WDEOH ijUDWHVij 7DEHODSU]H]QDF]RQDQDGRSDVRZDQHRVRE\
IXQFWLRQPDNH5RZV ^8WZRU]HQLHWDEOLF\LZLHUV]\WDEHOL
SHRSOHIRU(DFK IXQFWLRQ SHUVRQ ^
,WHUDFMDSU]H]ZV]\VWNLHRELHNW\SHUVRQ
ZWDEOLF\SHRSOH
YDUURZ ijWU!WU!ij 8WZRU]HQLHZLHUV]DGODGDQHMRVRE\
URZDSSHQG ijWG!WG!ij WH[W SHUVRQQDPH :VWDZLHQLHLPLHQLDRVRE\
URZDSSHQG ijWG!WG!ij WH[W SHUVRQUDWH // Wstawienie stawki.
URZVSXVK ^
'RGDQLHRELHNWX]DSHZQLDMÈFHJRRGZRï\ZDQLHVLÚPLÚG]\WDEOLFDPL
SHRSOHLURZV
SHUVRQSHUVRQ2GZRïDQLHGRRELHNWXSHUVRQ
HOHPHQWURZ2GZRïDQLHGRZLHUV]DMDNRRELHNWXM4XHU\
` ` `
IXQFWLRQDSSHQG5RZV ^'RGDQLHZLHUV]\GRWDEHOL
YDUWERG\ ijWERG\!WERG\!ij 8WZRU]HQLHHOHPHQWXWERG\!
URZVIRU(DFK IXQFWLRQ URZ ^'ODNDĝGHJRRELHNWXZWDEOLF\URZV
WERG\DSSHQG URZHOHPHQW 'RGDQLHNRGX+70/GODZLHUV]D
` WDEOHDSSHQG WERG\ 'RGDQLHZLHUV]\GRWDEHOL
`
IXQFWLRQXSGDWH PLQPD[ ^8DNWXDOQLHQLH]DZDUWRĂFLWDEHOL
URZVIRU(DFK IXQFWLRQ URZ ^'ODNDĝGHJRZLHUV]DZWDEOLF\URZV
LI URZSHUVRQUDWH! PLQ URZSHUVRQUDWH PD[ ^
-HĝHOLZDUWRĂÊMHVWZ]DNUHVLH
URZHOHPHQWVKRZ :\ĂZLHWOHQLHZLHUV]D
`HOVH^:SU]HFLZQ\PUD]LH
URZHOHPHQWKLGH 8NU\FLHZLHUV]D
`
` `
function init() {
=DGDQLDZ\NRQ\ZDQHSRSLHUZV]\PXUXFKRPLHQLXVNU\SWX
ijVOLGHUij QR8L6OLGHU ^.RQğJXUDFMDNRQWURONLVXZDND
UDQJH>@VWDUW>@KDQGOHVPDUJLQFRQQHFWWUXH
VHULDOL]DWLRQ^WR>PLQPD[@UHVROXWLRQ`
` FKDQJH IXQFWLRQ ^XSGDWH PLQYDO PD[YDO ` PDNH5RZV 8WZRU]HQLHWDEOLF\URZVLZLHUV]\WDEHOL
DSSHQG5RZV 'RGDQLHZLHUV]\GRWDEHOL
XSGDWH PLQYDO PD[YDO
8DNWXDOQLHQLHWDEHOLDE\]DZLHUDïDGRSDVRZDQHRVRE\
`
LQLW :\ZRïDQLHIXQNFMLLQLW SRZF]\WDQLXPRGHOX'20
`
FILTROWANIE, WYSZUKIWANIE I SORTOWANIE FILTROWANA GALERIA
OBRAZÓW
:W\PSU]\NïDG]LHJDOHULDREUD]öZ]DZLHUDWDJL8ĝ\WNRZQLNPRĝHMHNOLNDÊ
DW\PVDP\PZ\ĂZLHWODÊMHG\QLHGRSDVRZDQHREUD]\
OBRAZY SĄ TAGAMI
OBIEKT TAGGED
PRZYCISKI FILTROWANIA
:RPDZLDQ\PSU]\NïDG]LH
VHULD]GMÚÊ]DZLHUDWDJL7DJL
VÈSU]HFKRZ\ZDQHZDWU\EXFLH
+70/RQD]ZLHGDWDWDJV
NDĝGHJRHOHPHQWXLPJ!
6SHF\ğNDFMD+70/SR]ZDOD
QDSU]HFKRZ\ZDQLHGRZROQ\FK
GDQ\FKZUD]]HOHPHQWHP
SU]\Z\NRU]\VWDQLXDWU\EXWX
RQD]ZLHUR]SRF]\QDMÈFHMVLÚ
RGGDWD3RV]F]HJöOQHWDJLVÈ
UR]G]LHORQHSU]HFLQNDPL SDWU]
VWURQDSRSUDZHM 6NU\SWWZRU]\RELHNWWDJJHG,
DQDVWÚSQLHSU]HSURZDG]D
LWHUDFMÚSU]H]ZV]\VWNLH
REUD]\VSUDZG]DMÈFLFKWDJL
=QDOH]LRQHWDJLVÈGRGDZDQH
MDNRZïDĂFLZRĂÊRELHNWWDJJHG
:DUWRĂÊZïDĂFLZRĂFLWRWDEOLFD
SU]HFKRZXMÈFDRGQLHVLHQLD
GRZV]\VWNLFKHOHPHQWöZ
LPJ!Xĝ\ZDMÈF\FKGDQHJR
WDJX 3DWU]SRGUR]G]LDï\
ķ3U]HWZDU]DQLHWDJöZĵLķ2ELHNW
WDJJHGĵ ']LÚNLLWHUDFMLSU]H]ZV]\VWNLH
NOXF]HRELHNWXWDJJHGPRĝQD
DXWRPDW\F]QLHZ\JHQHURZDÊ
SU]\FLVNL/LF]E\Z\ĂZLHWODQH
RERNQD]ZWDJöZVÈSRELHUDQH
ZHZïDĂFLZRĂFLOHQJWKWDEOLF\
.DĝGHPXSU]\FLVNRZLMHVW
SU]\SLVDQDSURFHGXUDREVïXJL
]GDU]Hñ.OLNQLÚFLHSU]\FLVNX
SRZRGXMHğOWURZDQLHREUD]öZ
LZ\ĂZLHWOHQLHMHG\QLHW\FK
NWöUHPDMÈWDJZ\EUDQ\SU]H]
Xĝ\WNRZQLND 3DWU]SRGUR]
G]LDï\ķ)LOWURZDQLHJDOHULLĵ
Lķ3U]\FLVNLğOWURZDQLDĵ
FILTROWANIE, WYSZUKIWANIE I SORTOWANIE
OBRAZY Z TAGAMI
HTML
FğOWHUWDJVKWPO
<body>
<header>
K!&UHDWLYH)RONK!
KHDGHU!
GLYLG ĵEXWWRQVĵ!GLY!
GLYLG ĵJDOOHU\ĵ!
LPJVUF ĵLPJSMSJĵGDWDWDJV ĵ$QLPDWRU]\,OXVWUDWRU]\ĵDOW ĵ5DEELWĵ!
LPJVUF ĵLPJSMSJĵGDWDWDJV ĵ)RWRJUDğF\)LOPRZF\ĵDOW ĵ6HDĵ!
LPJVUF ĵLPJSMSJĵGDWDWDJV ĵ)RWRJUDğF\)LOPRZF\ĵDOW ĵ'HHUĵ!
LPJVUF ĵLPJSMSJĵGDWDWDJV ĵ3URMHNWDQFLĵDOW ĵ1HZ<RUN6WUHHW0DSĵ!
LPJVUF ĵLPJSMSJĵGDWDWDJV ĵ)LOPRZF\ĵDOW ĵ7UXPSHW3OD\HUĵ!
LPJVUF ĵLPJSMSJĵGDWDWDJV ĵ3URMHNWDQFL$QLPDWRU]\ĵDOW ĵ/RJR,GHQWĵ!
LPJVUF ĵLPJSMSJĵGDWDWDJV ĵ)RWRJUDğF\ĵDOW ĵ%LF\FOH-DSDQĵ!
LPJVUF ĵLPJSMSJĵGDWDWDJV ĵ3URMHNWDQFLĵDOW ĵ$TXD/RJRĵ!
LPJVUF ĵLPJSMSJĵGDWDWDJV ĵ$QLPDWRU]\,OXVWUDWRU]\ĵDOW ĵ*KRVWĵ!
GLY!
VFULSWVUF ĵMVMTXHU\MVĵ!VFULSW!
VFULSWVUF ĵMVğOWHUWDJVMVĵ!VFULSW!
ERG\!
3RSUDZHMVWURQLHPRĝHV]]REDF]\ÊRELHNW
WDJJHGGODNRGX+70/Xĝ\WHJRZRPDZLDQ\P
SU]\NïDG]LH'ODNDĝGHJRQRZHJRWDJXZDWU\
EXFLHGDWDWDJVREUD]öZQDVWÚSXMHXWZRU]HQLH
ZïDĂFLZRĂFLZRELHNFLHWDJJHG7XWDMPDP\SLÚÊ
ZïDĂFLZRĂFLanimators, GHVLJQHUV, ğOPPDNHUV,
LOOXVWUDWRUVLSKRWRJUDSKHUV:DUWRĂFLÈMHVW
WDEOLFDREUD]öZXĝ\ZDMÈF\FKGDQHJRWDJX
WDJJHG ^
DQLPDWRUV>SMSJSMSJSMSJ@
GHVLJQHUV>SMSJSMSJSMSJ]
ğOPPDNHUV>SMSJSMSJSMSJ]
LOOXVWUDWRUV>SMSJSMSJ]
SKRWRJUDSKHUV>SMSJSMSJSMSJ]
`
FILTROWANIE, WYSZUKIWANIE I SORTOWANIE
551
PRZETWARZANIE TAGÓW
:W\PPLHMVFXPRĝHV]]REDF]\ÊMDNZ\JOÈGD
2
NRQğJXUDFMDVNU\SWX6NU\SWSU]HSURZDG]DLWHUDFMÚ 3
SU]H]REUD]\DRELHNWWDJJHGRWU]\PXMHQRZÈ
ZïDĂFLZRĂÊGODNDĝGHJRWDJX:DUWRĂFLÈZïDĂ
FLZRĂFLMHVWWDEOLFDSU]HFKRZXMÈFDREUD]\NWöUH
4
VWRVXMÈGDQ\WDJ
1. 8PLHV]F]HQLHVNU\SWXZIXQNFMLW\SX,,)( QLH
SRND]DQRWHJRZRPDZLDQ\PGLDJUDPLH 2. =PLHQQDLPJVSU]HFKRZXMHREUD]\Z\EUDQH
ZM4XHU\
3. =PLHQQD$buttonsSU]HFKRZXMHNRQWHQHUQD
SU]\FLVNLZ\EUDQ\ZM4XHU\
4. 8WZRU]HQLHRELHNWXWDJJHG
5. ,WHUDFMDSU]H]REUD]\SU]HFKRZ\ZDQHZLPJV
]Xĝ\FLHPPHWRG\M4XHU\RQD]ZLH.each()'OD
NDĝGHJRREUD]XZ\ZRï\ZDQDMHVWWDVDPDIXQNFMD
DQRQLPRZD
6. %LHĝÈF\REUD]MHVWSU]HFKRZ\ZDQ\Z]PLHQQHM
RQD]ZLHLPJ
7. 7DJL]ELHĝÈFHJRREUD]XVÈSU]HFKRZ\ZDQH
Z]PLHQQHMRQD]ZLHWDJV 7DJL]QDMGXMÈVLÚ
ZDWU\EXFLHGDWDWDJVREUD]X 8. -HĝHOL]PLHQQDWDJVGODGDQHJRREUD]XPD
ZDUWRĂÊ
9. 8ĝ\FLHPHWRG\VSOLW RELHNWX6WULQJZFHOX
XWZRU]HQLDWDEOLF\WDJöZ ]RVWDMÈSRG]LHORQH
ZPLHMVFXZ\VWÚSRZDQLDSU]HFLQNöZ :\ZRïDQLH
PHWRG\.forEach()SRVSOLW SR]ZDODQD
Z\NRQDQLHIXQNFMLDQRQLPRZHMGODNDĝGHJR
HOHPHQWXZWDEOLF\ ZRPDZLDQ\PSU]\NïDG]LHVÈ
WRZV]\VWNLHWDJLELHĝÈFHJRREUD]X 1DVWÚSQLHGOD
NDĝGHJRWDJX
10. 6SUDZG]DP\F]\WDJMHVWMXĝZïDĂFLZRĂFLÈ
RELHNWXWDJJHG
11. -HĝHOLQLHGRGDMHP\WDJMDNRQRZÈZïDĂFL
ZRĂÊRZDUWRĂFLZSRVWDFLSXVWHMWDEOLF\
12. 1DVWÚSQLHSRELHUDP\ZïDĂFLZRĂÊRELHNWX
WDJJHGGRSDVRZDQÈGRGDQHJRWDJXLGRGDMHP\
REUD]GRWDEOLF\SU]HFKRZ\ZDQHMMDNRZDUWRĂÊWHM
ZïDĂFLZRĂFL
7HUD]PRĝQDSU]HMĂÊGRNROHMQHJRWDJX ZUöÊGR
NURNX10. *G\ZV]\VWNLHWDJLREUD]XVÈSU]HWZR
U]RQHSU]HFKRG]LP\GRNROHMQHJR NURN5. FILTROWANIE, WYSZUKIWANIE I SORTOWANIE
Utworzenie zmiennych:
LPJV: wszystkie obrazy
$buttons: element, którego atrybut id ma wartość
buttons
Utworzenie obiektu:
WDJJHG: tablica tagów oraz obrazów z tagami
5
Iteracja przez wszystkie obrazy
FUNKCJA ANONIMOWA:
Przetwarzanie obrazu
6
7
8
Utworzenie zmiennych:
LPJ: bieżący obraz
WDJV: wartość atrybutu GDWDWDJV
Czy zmienna
WDJV ma
wartość?
N
9
T
Iteracja przez wszystkie tagi
FUNKCJA ANONIMOWA:
Dodanie tagów i obrazów do obiektu
WDJJHG
10
11
12
N
Czy ten tag
jest właściwością
obiektu WDJJHG?
Dodaj nazwę tagu jako
właściwość obiektu WDJJHG
Dodaj obraz do tablicy
dla danego tagu
Przejście do następnego tagu
Przejście do następnego obrazu
T
OBIEKT TAGGED
FMVğOWHUWDJVMV
JAVASCRIPT
1
(function() {
2
YDULPJV ijJDOOHU\LPJij =PLHQQDSU]HFKRZXMHZV]\VWNLHREUD]\
YDUEXWWRQV ijEXWWRQVij =PLHQQDSU]HFKRZXMHSU]\FLVNL
YDUWDJJHG ^`8WZRU]HQLHRELHNWXWDJJHG
3
4
5
6
7
8
9
10
11
12
LPJVHDFK IXQFWLRQ ^,WHUDFMDSU]H]REUD]\
YDULPJ WKLV3U]HFKRZ\ZDQLHLPJZ]PLHQQHM
YDUWDJV WKLV GDWD ijWDJVij 3REUDQLHWDJöZGDQHJRHOHPHQWX
LI WDJV ^-HĝHOLHOHPHQWPDWDJL
WDJVVSOLW ijij IRU(DFK IXQFWLRQ WDJ1DPH ^
3RG]LHOHQLHLFKZPLHMVFXZ\VWÚSRZDQLDSU]HFLQND
LI WDJJHG>WDJ1DPH@ QXOO ^-HĝHOLRELHNWQLHPDWDJX
WDJJHG>WDJ1DPH@ >@WRQDOHĝ\GRGDÊSXVWÈWDEOLFÚGRRELHNWX
`
WDJJHG>WDJ1DPH@SXVK LPJ 'RGDQLHREUD]XGRWDEOLF\
` `
` `
0LHMVFHQDSU]\FLVNLSURFHGXU\REVïXJL]GDU]HñLğOWU\
FILTROWANIE, WYSZUKIWANIE I SORTOWANIE 553
FILTROWANIE GALERII
3U]\FLVNLğOWURZDQLDVÈWZRU]RQHLGRGDZDQH
SU]H]VNU\SW3RNOLNQLÚFLXSU]\FLVNXQDVWÚSXMH
Z\ZRïDQLHIXQNFMLDQRQLPRZHMNWöUDVSRZRGXMH
XNU\FLHLZ\ĂZLHWOHQLHRGSRZLHGQLFKREUD]öZGOD
GDQHJRWDJX
1. 8PLHV]F]HQLHVNU\SWXZIXQNFMLW\SX,,)( QLH
SRND]DQRWHJRZRPDZLDQ\PGLDJUDPLH 2. 8WZRU]HQLHSU]\FLVNXGRZ\ĂZLHWODQLDZV]\VW
NLFKREUD]öZ'UXJLPSDUDPHWUHPMHVWOLWHUDï
RELHNWXXVWDZLDMÈF\MHJRZïDĂFLZRĂFL
3. 7HNVWQDSU]\FLVNX:\ĂZLHWOZV]\VWNR
4. 'RDWU\EXWXFODVV]RVWDMHGRGDQDZDUWRĂÊ
active
5. .LHG\Xĝ\WNRZQLNNOLNQLHSU]\FLVNQDVWÈSL
Z\ZRïDQLHIXQNFMLDQRQLPRZHM6NXWNLZ\ZRïDQLD
VÈQDVWÚSXMÈFH
6. 7HQSU]\FLVNMHVWSU]HFKRZ\ZDQ\ZRELHNFLH
M4XHU\LRWU]\PXMHZDUWRĂÊactiveGODDWU\EXWX
FODVV
7. 3REUDQH]RVWDMÈMHJRHOHPHQW\UöZQRU]ÚGQH
LZDUWRĂÊactiveMHVWXVXZDQD]LFKDWU\EXWX
FODVV
8. 0HWRGDVKRZ MHVWZ\ZRï\ZDQDGODZV]\VW
NLFKREUD]öZ
9. =DSRPRFÈPHWRG\DSSHQG7R SU]\FLVN
]RVWDMHGRïÈF]RQ\GRNRQWHQHUDQDSU]\FLVNL-HVW
WRSRïÈF]HQLH]ZïDĂQLHXWZRU]RQ\PRELHNWHP
M4XHU\
10. 1DVWÚSQLHWZRU]RQHVÈLQQHSU]\FLVNL
ğOWURZDQLD0HWRGDM4XHU\RQD]ZLH.each()
MHVWXĝ\ZDQDGRSU]HSURZDG]HQLDLWHUDFMLSU]H]
ZV]\VWNLHZïDĂFLZRĂFL OXEWDJL ZRELHNFLH
WDJJHG7DVDPDIXQNFMDDQRQLPRZDMHVW
Z\ZRï\ZDQDGODNDĝGHJRWDJX
11. 'ODWDJX]RVWDMHXWZRU]RQ\SU]\FLVN]DSR
PRFÈWDNLHMVDPHMWHFKQLNLMDNSRGF]DVWZRU]HQLD
SU]\FLVNX:\ĂZLHWOZV]\VWNR
12. 7HNVWHPZ\ĂZLHWODQ\PQDSU]\FLVNXMHVW
QD]ZDWDJXRUD]ZLHONRĂÊWDEOLF\ F]\OLOLF]ED
REUD]öZZNWöU\FKWHQWDJMHVW]DVWRVRZDQ\ 13. =GDU]HQLHFOLFNZSU]\FLVNXSRZRGXMH
Z\ZRïDQLHIXQNFMLDQRQLPRZHM
14. $WU\EXWFODVVSU]\FLVNXRWU]\PXMHZDUWRĂÊ
active
15. :DUWRĂÊactive]RVWDMHXVXQLÚWD]DWU\EXWX
FODVVZV]\VWNLFKHOHPHQWöZUöZQRU]ÚGQ\FK
2
3
4
5
Utworzenie pustego elementu <button>
Dodanie tekstu: :\ĂZLHWOZV]\VWNR
Dodanie klasy: active
Zdarzenie: FOLFN w przycisku
FUNKCJA ANONIMOWA:
Wyświetla wszystkie obrazy
6
7
Dodanie klasy active do tego
przycisku oraz usunięcie klasy active
z przycisków równorzędnych
8
Wyświetlenie wszystkich obrazów
9
Dodanie przycisku do innych przycisków
filtrowania
10
Iteracja przez wszystkie
właściwości obiektu WDJJHG
FUNKCJA ANONIMOWA:
Utworzenie przycisku dla tagu
11
Utworzenie pustego elementu <button>
12
Umieszczenie na przycisku nazwy tagu
i liczby
13
Zdarzenie: FOLFN w przycisku
FUNKCJA ANONIMOWA:
Wyświetla obrazy zawierające
wskazany tag
14
15
Dodanie klasy active do tego
przycisku oraz usunięcie klasy
active z przycisków równorzędnych
16
Ukrycie wszystkich obrazów
17
Filtrowanie obrazów z danym
tagiem
18
Wyświetlenie dopasowanych
obrazów
19
Dodanie przycisku do innych przycisków
filtrowania
Przejście do następnej właściwości
554 FILTROWANIE, WYSZUKIWANIE I SORTOWANIE
PRZYCISKI FILTROWANIA
JAVASCRIPT
FMVğOWHUWDJVMV
(function() {
1
8WZRU]HQLH]PLHQQ\FK
8WZRU]HQLHRELHNWXWDJJHG
ijEXWWRQ!ij^8WZRU]HQLHSXVWHJRSU]\FLVNX
WH[Wij:\ĂZLHWOZV]\VWNRij'RGDQLHWHNVWXķ:\ĂZLHWOZV]\VWNRĵ
FODVVijDFWLYHij3U]\FLVNVWDMHVLÚDNW\ZQ\
FOLFNIXQFWLRQ ^'RGDQLHSURFHGXU\REVïXJL]GDU]HñFOLFN
$(this)
3REUDQLHNOLNQLÚWHJRSU]\FLVNX
DGG&ODVV ijDFWLYHij 'RGDQLHNODV\DFWLYH
VLEOLQJV 3REUDQLHSR]RVWDï\FKSU]\FLVNöZUöZQRU]ÚGQ\FK
UHPRYH&ODVV ijDFWLYHij 8VXQLÚFLH]QLFKNODV\DFWLYH
LPJVVKRZ :\ĂZLHWOHQLHZV]\VWNLFKREUD]öZ
`
` DSSHQG7R EXWWRQV 'RGDQLHSU]\FLVNXGRLVWQLHMÈF\FK
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
HDFK WDJJHGIXQFWLRQ WDJ1DPH ^'ODNDĝGHJR]QDF]QLND
ijEXWWRQ!ij^8WZRU]HQLHSXVWHJRSU]\FLVNX
WH[WWDJ1DPHij ijWDJJHG>WDJ1DPH@OHQJWKij ij'RGDQLHQD]Z\WDJX
FOLFNIXQFWLRQ ^'RGDQLHSURFHGXU\REVïXJL]GDU]HñFOLFN
$(this)
3REUDQLHNOLNQLÚWHJRSU]\FLVNX
DGG&ODVV ijDFWLYHij 'RGDQLHNODV\DFWLYH
VLEOLQJV 3REUDQLHSR]RVWDï\FKSU]\FLVNöZUöZQRU]ÚGQ\FK
UHPRYH&ODVV ijDFWLYHij 8VXQLÚFLH]QLFKNODV\DFWLYH
LPJV:V]\VWNLHREUD]\
.hide()
8NU\FLHLFK
ğOWHU WDJJHG>WDJ1DPH@ :\V]XNDQLHREUD]öZZUD]]GDQ\PWDJLHP
VKRZ :\ĂZLHWOHQLHW\ONRGRSDVRZDQ\FKREUD]öZ
`
` DSSHQG7R EXWWRQV 'RGDQLHSU]\FLVNXGRLVWQLHMÈF\FK
` `
16. :V]\VWNLHREUD]\]RVWDMÈXNU\WH
17. 0HWRGDM4XHU\RQD]ZLHğOWHU MHVW
Xĝ\ZDQDGRSREUDQLDREUD]öZNWöUHPDMÈ
SU]\SLVDQ\GDQ\WDJ:\NRQXMHZLÚF]DGDQLH
SRGREQHGR]DGDQLDPHWRG\ğOWHU RELHNWX
ArrayDOH]ZUDFDNROHNFMÚM4XHU\3RQDGWRPRĝH
G]LDïDÊZUD]]RELHNWHPOXEHOHPHQWHPWDEOLF\
QLHSRND]DQRWHJRZRPDZLDQ\PSU]\NïDG]LH 18. 0HWRGDVKRZ MHVWXĝ\ZDQDGRZ\ĂZLHWOD
QLDREUD]öZZVND]DQ\FKSU]H]PHWRGÚğOWHU 19. =DSRPRFÈPHWRG\DSSHQG7R QRZ\
SU]\FLVN]RVWDMHGRGDQ\GRLVWQLHMÈF\FKSU]\FL
VNöZğOWURZDQLD
FILTROWANIE, WYSZUKIWANIE I SORTOWANIE 555
WYSZUKIWANIE
:\V]XNLZDQLHSU]\SRPLQDğOWURZDQLHDOHZ\ĂZLHWODQHVÈMHG\QLHZ\QLNL
GRSDVRZDQHGRSRGDQHJRZ\UDĝHQLD:W\PSU]\NïDG]LHSR]QDV]WDN]ZDQÈ
WHFKQLNÚOLYHVHDUFK3RGF]DVZ\V]XNLZDQLD]DPLDVWWDJöZXĝ\ZDQ\WHNVWX
ZDWU\EXFLHDOWREUD]öZ
WYSZUKIWANIE
W ATRYBUCIE ALT
OBRAZÓW
UŻYCIE INDEXOF()
DO ZNALEZIENIA
DOPASOWANIA
PRZESZUKIWANIE
WŁASNEGO OBIEKTU
BUFORA
:W\PSU]\NïDG]LHEÚG]LH
Z\NRU]\VWDQ\]ELöUREUD]öZ
]SRSU]HGQLHJRSU]\NïDGXDOH
]DLPSOHPHQWXMHP\IXQNFMÚ
OLYHVHDUFK*G\UR]SRF]QLHP\
ZSLV\ZDQLHV]XNDQHJRZ\UDĝH
QLDZ\ĂZLHWODQHEÚGÈMHG\QLH
REUD]\VSHïQLDMÈFHNU\WHULD
Z\V]XNLZDQLD
'RSU]HSURZDG]HQLDVSUDZ
G]HQLDSRGNÈWHPV]XNDQHJR
Z\UDĝHQLDXĝ\ZDQDMHVWPHWRGD
LQGH[2I RELHNWX6WULQJ
-HĝHOLZ\UDĝHQLHQLH]RVWDQLH
]QDOH]LRQHZDUWRĂFLÈ]ZURWQÈ
PHWRG\LQGH[2I MHVW
3RQLHZDĝPHWRGDWDUR]UöĝQLD
ZLHONRĂÊOLWHUZDĝQHMHVW
VNRQZHUWRZDQLHFDïHJRWHNVWX
]DUöZQRZDWU\EXFLHDOW,
MDNLV]XNDQHJRZ\UDĝHQLD QD]DSLVDQ\PDï\PLOLWHUDPL
:W\PFHOXPRĝQDXĝ\ÊIXQNFML
WR/RZHU&DVH RELHNWX6WULQJ
1LHFKFHP\DE\RSHUDFMD
NRQZHUVMLZLHONRĂFLOLWHUE\ïD
SU]HSURZDG]DQDGODZV]\VWNLFK
REUD]öZZWUDNFLHNDĝGHM
]PLDQ\V]XNDQHJRZ\UDĝHQLD
'ODWHJRWHĝWZRU]\P\RELHNW
RQD]ZLHcacheSU]H]QDF]RQ\
GRSU]HFKRZ\ZDQLDWHNVWXZUD]
]REUD]HPNWöUHJRDWU\EXWDOW
]DZLHUDGDQ\WHNVW
2SHUDFMDZ\V]XNLZDQLD
VSUDZG]DWHNVWZDWU\EXWDFK
DOWREUD]öZLZ\ĂZLHWODMHG\QLH
WHHOHPHQW\LPJ!NWöU\FK
DWU\EXWDOW]DZLHUDV]XNDQH
Z\UDĝHQLH
556 FILTROWANIE, WYSZUKIWANIE I SORTOWANIE
.LHG\Xĝ\WNRZQLNZSLV]H
FRNROZLHNZSROXZ\V]XNLZD
QLDVSUDZG]DQ\EÚG]LHRELHNW
cacheDQLHSRV]F]HJöOQH
REUD]\
WYSZUKIWANIE W OBRAZACH
HTML
FğOWHUWDJVKWPO
<body>
<header>
K!&UHDWLYH)RONK!
KHDGHU!
GLYLG ĵEXWWRQVĵ!GLY!
GLYLG ĵJDOOHU\ĵ!
LPJVUF ĵLPJSMSJĵGDWDWDJV ĵ$QLPDWRU]\,OXVWUDWRU]\ĵDOW ĵ5DEELWĵ!
LPJVUF ĵLPJSMSJĵGDWDWDJV ĵ)RWRJUDğF\)LOPRZF\ĵDOW ĵ6HDĵ!
LPJVUF ĵLPJSMSJĵGDWDWDJV ĵ)RWRJUDğF\)LOPRZF\ĵDOW ĵ'HHUĵ!
LPJVUF ĵLPJSMSJĵGDWDWDJV ĵ3URMHNWDQFLĵDOW ĵ1HZ<RUN6WUHHW0DSĵ!
LPJVUF ĵLPJSMSJĵGDWDWDJV ĵ)LOPRZF\ĵDOW ĵ7UXPSHW3OD\HUĵ!
LPJVUF ĵLPJSMSJĵGDWDWDJV ĵ3URMHNWDQFL$QLPDWRU]\ĵDOW ĵ/RJR,GHQWĵ!
LPJVUF ĵLPJSMSJĵGDWDWDJV ĵ)RWRJUDğF\ĵDOW ĵ%LF\FOH-DSDQĵ!
LPJVUF ĵLPJSMSJĵGDWDWDJV ĵ3URMHNWDQFLĵDOW ĵ$TXD/RJRĵ!
LPJVUF ĵLPJSMSJĵGDWDWDJV ĵ$QLPDWRU]\,OXVWUDWRU]\ĵDOW ĵ*KRVWĵ!
GLY!
VFULSWVUF ĵMVMTXHU\MVĵ!VFULSW!
VFULSWVUF ĵMVğOWHUWDJVMVĵ!VFULSW!
ERG\!
'ODNDĝGHJRREUD]XZWDEOLF\
cacheWZRU]RQ\MHVWQRZ\
RELHNW3RSUDZHMVWURQLH
SRND]DQRWDEOLFÚGODNRGX
+70/SU]HGVWDZLRQHJRSRZ\ĝHM
LPJR]QDF]DRGQLHVLHQLH
GRRGSRZLHGQLHJRHOHPHQWX
LPJ! .LHG\Xĝ\WNRZQLNZSLV]HFRĂ
ZSROXZ\V]XNLZDQLDNRG
VSUDZG]LZïDĂFLZRĂÊWH[W
ZV]\VWNLFKRELHNWöZLSR]QD
OH]LHQLXGRSDVRZDQLDZ\ĂZLHWOL
RGSRZLHGQLREUD]
FDFKH >
^HOHPHQWLPJWH[WijUDEELWij`
^HOHPHQWLPJWH[WijVHDij`
^HOHPHQWLPJWH[WijGHHUij`
^HOHPHQWLPJWH[WijQHZ\RUNVWUHHWPDSij`
^HOHPHQWLPJWH[WijWUXPSHWSOD\HUij`
^HOHPHQWLPJWH[WijORJRLGHQWij`
^HOHPHQWLPJWH[WijELF\FOHMDSDQij`
^HOHPHQWLPJWH[WijDTXDORJRij`
^HOHPHQWLPJWH[WijJKRVWij`
]
FILTROWANIE, WYSZUKIWANIE I SORTOWANIE 557
WYSZUKIWANIE TEKSTU
6NU\SWPRĝQDSRG]LHOLÊQDGZLHNOXF]RZHF]ÚĂFL
KONFIGURACJA OBIEKTU CACHE
1. 8PLHV]F]HQLHVNU\SWXZIXQNFMLW\SX,,)(
QLHSRND]DQRZRPDZLDQ\PGLDJUDPLH 2. =PLHQQD$imgSU]HFKRZXMHREUD]\Z\EUDQH
ZM4XHU\
3. =PLHQQD$searchSU]HFKRZXMHV]XNDQHZ\UDĝHQLH
4. 8WZRU]HQLHWDEOLF\cache
5. ,WHUDFMDSU]H]ZV]\VWNLHREUD]\Z$img]DSRPRFÈ
PHWRG\.each()RUD]Z\NRQDQLHIXQNFMLDQRQLPRZHM
GODNDĝGHJR]QLFK
6. 8ĝ\FLHPHWRG\push()ZFHOXGRGDQLDGRWDEOLF\
cacheRELHNWXSU]HGVWDZLDMÈFHJRGDQ\REUD]
7. :ïDĂFLZRĂÊelementRELHNWXSU]HFKRZXMHRGQLHVLHQLHGRHOHPHQWX<img>
8. :ïDĂFLZRĂÊtextHOHPHQWXSU]HFKRZXMHZDUWRĂÊ
DWU\EXWXaltHOHPHQWX=ZUöÊXZDJÚQDSU]HWZDU]DQLH
WHNVWXSU]H]GZLHPHWRG\
.trim()ĽXVXZDVSDFMH]SRF]ÈWNXLNRñFDWHNVWX
.toLowerCase()ĽNRQZHUWXMHZV]\VWNLHOLWHU\QD
PDïH
FILTROWANIE OBRAZÓW, GDY UŻYTKOWNIK
ZACZNIE WPISYWAĆ TEKST W POLU
WYSZUKIWANIA
9. =DGHNODURZDQLHIXQNFMLRQD]ZLHğOWHU 10. 8PLHV]F]HQLHV]XNDQHJRZ\UDĝHQLDZ]PLHQQHM
RQD]ZLHquery'RRF]\V]F]HQLDWHNVWXXĝ\ZDQHVÈ
PHWRG\.trim()L.toLowerCase()
11. ,WHUDFMDSU]H]ZV]\VWNLHRELHNW\ZWDEOLF\cache
LZ\ZRïDQLHGODNDĝGHJRWHMVDPHMIXQNFMLDQRQLPRZHM
12. 8WZRU]HQLH]PLHQQHMRQD]ZLHindexLSU]\SLVDQLH
MHMZDUWRĂFL0
13. -HĝHOL]PLHQQDqueryPDZDUWRĂÊĮ
14.ĮWRXĝ\ZDP\PHWRG\indexOf()GRVSUDZG]HQLD
F]\V]XNDQHZ\UDĝHQLH]QDMGXMHVLÚZHZïDĂFLZRĂFL
textGDQHJRRELHNWX:\QLNEÚG]LHSU]HFKRZ\ZDQ\
Z]PLHQQHMindex-HĝHOL]RVWDQLH]QDOH]LRQ\ZDUWRĂÊ
]PLHQQHMEÚG]LHGRGDWQLD:SU]HFLZQ\PUD]LH
ZDUWRĂFLÈ]PLHQQHMindexEÚG]LH-1
15. -HĝHOLZDUWRĂÊ]PLHQQHMindexZ\QRVL-1,
ZDUWRĂFLÈZïDĂFLZRĂFLdisplayREUD]XEÚG]LHnone
:SU]HFLZQ\PUD]LHZDUWRĂFLÈEÚG]LHSXVW\FLÈJ
WHNVWRZ\ Z\ĂZLHWOHQLHREUD]X 3U]HMĂFLHGRQDVWÚSQHJRREUD]X NURN 558 FILTROWANIE, WYSZUKIWANIE I SORTOWANIE
2
4
Utworzenie zmiennych:
$imgs: wszystkie obrazy
$search: szukane wyrażenie 3
cache: tablica obiektów (tekst i obrazy)
5
6
7
8
Iteracja przez wszystkie obrazy
Dodanie do tablicy cache obiektu z dwoma
właściwościami:
element: odniesienie do elementu <img>
text: przetworzony tekst atrybutu alt (patrz
podrozdział „Wyszukiwanie live”)
Przejście do następnego obrazu
16
Czy przeglądarka
internetowa obsługuje
zdarzenie input?
N
T
17
Zdarzenie: input w polu wyszukiwania
18
Zdarzenie: keyup w polu wyszukiwania
9
Funkcja: ğOWHU
Sprawdza tekst atrybutu alt i wyświetla
dopasowane obrazy
10
Utworzenie zmiennej: query do przechowywania zapytania
11
Iteracja przez wszystkie obiekty
obrazów w tablicy cache
12
Utworzenie zmiennej: index do przechowywania położenia tekstu
Czy zmienna
query ma
wartość?
13
N
14
Wyszukanie wartości zmiennej search
w tekście za pomocą .indexOf()
i przechowywanie jego położenia
w zmiennej index
15
N
Czy wartość
zmiennej index
wynosi -1?
T
T
Przypisanie właściwości display
wartości ’’ w celu wyświetlenia
obrazu
Przypisanie właściwości display
wartości none w celu ukrycia obrazu
Przejście do następnego obrazu
WYSZUKIWANIE LIVE
16. 6SUDZG]HQLHF]\SU]HJOÈGDUNDLQWHUQHWRZD
REVïXJXMH]GDU]HQLHinput ']LDïDZQDMQRZV]\FK
SU]HJOÈGDUNDFKQLHMHVWREVïXJLZDQHZ,(
LZF]HĂQLHMV]\FKZHUVMDFK 17. -HĝHOLWDNSRMHJRZ\ZRïDQLXZSROXWHNVWR
Z\PQDVWÚSXMHZ\ZRïDQLHIXQNFMLğOWHU 18. :SU]HFLZQ\PUD]LHXĝ\ZDP\]GDU]HQLD
keyupGRZ\ZRïDQLDZ\PLHQLRQHMIXQNFML
FMVğOWHUVHDUFKMV
JAVASCRIPT
(function() {
8PLHV]F]HQLHZIXQNFMLW\SX,,)(
YDULPJV ĶJDOOHU\LPJij 3REUDQLHREUD]öZ
YDUVHDUFK ĶğOWHUVHDUFKij 3REUDQLHHOHPHQWXLQSXW!
YDUFDFKH >@8WZRU]HQLHWDEOLF\RQD]ZLHFDFKH
1
2
3
4
LPJVHDFK IXQFWLRQ ^'ODNDĝGHJRREUD]X
cache.push({
'RGDQLHRELHNWXGRWDEOLF\FDFKH
HOHPHQWWKLV7HQREUD]
WH[WWKLVDOWWULP WR/RZHU&DVH 7HNVWMHJRDWU\EXWXDOW PDïHOLWHU\XVXQLÚWH
]EÚGQH]QDNL ` ` 5
6
7
8
9
10
11
12
13
14
15
16
17
18
IXQFWLRQğOWHU ^=DGHNODURZDQLHIXQNFMLğOWHU
YDUTXHU\ WKLVYDOXHWULP WR/RZHU&DVH 3REUDQLH]DS\WDQLD
FDFKHIRU(DFK IXQFWLRQ LPJ ^'ODNDĝGHJRHOHPHQWXZWDEOLF\FDFKH
SU]HND]XMHP\REUD]
YDULQGH[ 3U]\SLVDQLH]PLHQQHMLQGH[ZDUWRĂFL
LI TXHU\ ^-HĝHOL]PLHQQDTXHU\PDZDUWRĂÊ
LQGH[ LPJWH[WLQGH[2I TXHU\ 6SUDZG]HQLHF]\WHNVW]PLHQQHMTXHU\]QDMGXMH
VLÚWXWDM
`
LPJHOHPHQWVW\OHGLVSOD\ LQGH[
` `
"ĶQRQHijĶij:\ĂZLHWOHQLHOXEXNU\FLH
LI ĶRQLQSXWijLQVHDUFK>@ ^-HĝHOLSU]HJOÈGDUNDLQWHUQHWRZDREVïXJXMH
]GDU]HQLHLQSXW
VHDUFKRQ ĶLQSXWijğOWHU 8ĝ\FLH]GDU]HQLDLQSXWGRZ\ZRïDQLDIXQNFMLğOWHU
`HOVH^:SU]HFLZQ\PUD]LH
VHDUFKRQ ĶNH\XSijğOWHU 8ĝ\FLH]GDU]HQLDNH\XSGRZ\ZRïDQLDIXQNFMLğOWHU
`
`
7HNVWDWU\EXWXDOWNDĝGHJRREUD]XRUD]WHNVW
ZSURZDG]DQ\SU]H]Xĝ\WNRZQLNDZSROXZ\V]XNL
ZDQLDVÈRF]\V]F]DQH]DSRPRFÈGZöFKPHWRG
M4XHU\2ELHPHWRG\G]LDïDMÈQDW\FKVDP\FK
Z\EUDQ\FKHOHPHQWDFKLVÈSRïÈF]RQH]HVREÈ
METODA
UŻYCIE
trim()
8VXZD]QDNLRGVWÚSXQDSRF]ÈWNXLQD
NRñFXFLÈJXWHNVWRZHJR
WR/RZHU&DVH
.RQZHUWXMHFLÈJWHNVWRZ\QDPDïHOLWHU\
SRQLHZDĝPHWRGDLQGH[2I UR]UöĝQLD
ZLHONRĂÊOLWHU
FILTROWANIE, WYSZUKIWANIE I SORTOWANIE SORTOWANIE
6RUWRZDQLHR]QDF]DSREUDQLH]ELRUXZDUWRĂFLDQDVWÚSQLH
]PLDQÚLFKNROHMQRĂFL.RPSXWHU\F]ÚVWRZ\PDJDMÈGRNïDGQ\FK
LQIRUPDFMLGRW\F]ÈF\FKNROHMQRĂFLVRUWRZDQLDGDQ\FK
:WHMF]ÚĂFLUR]G]LDïXSR]QDV]PHWRGÚsort()RELHNWXArray
.LHG\VRUWXMHV]WDEOLFÚ]D
SRPRFÈPHWRG\sort(),
]PLHQLDV]NROHMQRĂÊZMDNLHM
SU]HFKRZ\ZDQHVÈHOHPHQW\
WDEOLF\
3DPLÚWDMĝHHOHPHQW\ZWDE
OLF\PDMÈSU]\SLVDQ\QXPHU
LQGHNVX'ODWHJRWHĝVRUWRZDQLH
PRĝQDSRUöZQDÊGR]PLDQ\
QXPHUöZLQGHNVXHOHPHQWöZ
WDEOLF\
'RP\ĂOQLHPHWRGDsort()
XPLHV]F]DHOHPHQW\ZNROHMQR
ĂFLOHNV\NRJUDğF]QHM.ROHMQRĂÊ
WDVWRVRZDQDMHVWZVïRZQLNDFK
LPRĝHSURZDG]LÊGRRWU]\PDQLD
LQWHUHVXMÈF\FKZ\QLNöZ SDWU]
OLF]E\SRQLĝHM $E\SRVRUWRZDÊHOHPHQW\
ZLQQ\VSRVöEPRĝQDSU]\JRWR
ZDÊIXQNFMÚSRUöZQXMÈFÈ SDWU]
VWURQDSRSUDZHM .ROHMQRĂÊOHNV\NRJUDğF]QD
SU]HGVWDZLDVLÚQDVWÚSXMÈFR
1. 6SUDZGěSLHUZV]ÈOLWHUÚ
LXSRU]ÈGNXMVïRZDZHGïXJLFK
SLHUZV]\FKOLWHU
2. -HĝHOLGZDVïRZDPDMÈWÚ
VDPÈSLHUZV]ÈOLWHUÚXSRU]ÈG
NXMMHZNROHMQRĂFLGUXJLHMOLWHU\
3. -HĝHOLGZDVïRZDPDMÈWDNLH
VDPHGZLHSLHUZV]HOLWHU\
XSRU]ÈGNXMMHZNROHMQRĂFL
WU]HFLHMOLWHU\LWG
SORTOWANIE CIĄGÓW
TEKSTOWYCH
YDUQDPHV >ij$OLFMDijij$QQDijij$QGUHDijij$EHOij@
QDPHVVRUW 6SöMU]QDWDEOLFÚSRSUDZHM
VWURQLHSU]HFKRZXMÈFHMLPLRQD
3RXĝ\FLXPHWRG\sort()ZWHM
WDEOLF\]PLHQLDVLÚNROHMQRĂÊ
XïRĝHQLDLPLRQ
(OHPHQW\WDEOLF\VÈWHUD]XïRĝRQHZQDVWÚSXMÈFHMNROHMQRĂFL
>ij$EHOijij$OLFMDijij$QGUHDijij$QQDij@
SORTOWANIE LICZB
YDUSULFHV >@
SULFHVVRUW 'RP\ĂOQLHOLF]E\VÈVRUWRZDQH
OHNV\NRJUDğF]QLHFRPRĝH
SURZDG]LÊGRRWU]\PDQLD
QLHRF]HNLZDQ\FKZ\QLNöZ
5R]ZLÈ]DQLHPMHVWSU]\JRWRZD
QLHIXQNFMLSRUöZQXMÈFHM SDWU]
QDNROHMQHMVWURQLH (OHPHQW\WDEOLF\VÈWHUD]XïRĝRQHZQDVWÚSXMÈFHMNROHMQRĂFL
>@
FILTROWANIE, WYSZUKIWANIE I SORTOWANIE
ZMIANA KOLEJNOŚCI
ZA POMOCĄ FUNKCJI
PORÓWNUJĄCEJ
-HĝHOLFKFHV]]PLHQLÊNROHMQRĂÊVRUWRZDQLDPXVLV]XWZRU]\ÊIXQNFMÚ
SRUöZQXMÈFÈ=DGDQLHPWHMIXQNFMLMHVWSRUöZQDQLHGZöFKZDUWRĂFL
DMHMZDUWRĂFLÈ]ZURWQÈMHVWOLF]ED/LF]EDWDEÚG]LHQDVWÚSQLHXĝ\WD
GR]PLDQ\NROHMQRĂFLHOHPHQWöZZWDEOLF\
0HWRGDsort()MHGQRF]HĂQLH
SRUöZQXMHW\ONRGZLHZDUWRĂFL
RGZRïXMHP\VLÚGRQLFKMDNR
aLb LXVWDODF]\ZDUWRĂÊ
aSRZLQQDSRMDZLÊVLÚSU]HG
ZDUWRĂFLÈbF]\SRQLHM
3RQLHZDĝZGDQHMFKZLOL
SRUöZQ\ZDQHVÈW\ONRGZLH
ZDUWRĂFLPHWRGDsort()PRĝH
E\Ê]PXV]RQDGRSRUöZQ\ZD
QLDNDĝGHMZDUWRĂFLZWDEOLF\
]ZLHORPDLQQ\PLZDUWRĂFLDPL
WDEOLF\ SDWU]GLDJUDPQD
QDVWÚSQHMVWURQLH 0HWRGDsort()PRĝHPLHÊ
SDUDPHWUZSRVWDFLIXQNFML
DQRQLPRZHMOXEQD]ZDQHM
)XQNFMDWDMHVWQD]\ZDQD
IXQNFMÈSRUöZQXMÈFÈLSR]ZDOD
QDRSUDFRZDQLHUHJXïRNUHĂOD
QLDF]\ZDUWRĂÊaSRZLQQD
SRMDZLÊVLÚSU]HGZDUWRĂFLÈb,
F]\SRQLHM
FUNKCJA PORÓWNUJĄCA MUSI ZWRACAĆ LICZBY
)XQNFMDSRUöZQXMÈFDSRZLQQD
]ZUöFLÊOLF]EÚ/LF]EDWDZVND
]XMHNWöU\]GZöFKHOHPHQWöZ
SRZLQLHQE\ÊSLHUZV]\
:VND]XMHĝHZDUWRĂÊ
aSRZLQQDSRMDZLÊVLÚSU]HG
ZDUWRĂFLÈb
0HWRGDsort()EÚG]LHRNUHĂODïD
ZDUWRĂFLNRQLHF]QHGRSRUöZQD
QLDDE\]DSHZQLÊSUDZLGïRZH
XïRĝHQLHHOHPHQWöZZWDEOLF\
:VND]XMHĝHHOHPHQW\
SRZLQQ\SR]RVWDÊZWHMVDPHM
NROHMQRĂFL
:\VWDUF]\SRSURVWXXWZRU]\Ê
IXQNFMÚSRUöZQXMÈFÈĽ]ZUDFD
RQDOLF]EÚRG]ZLHUFLHGODMÈFÈ
NROHMQRĂÊZMDNLHMPDMÈ
SRMDZLDÊVLÚHOHPHQW\
!
:VND]XMHĝHZDUWRĂÊb
SRZLQQDSRMDZLÊVLÚSU]HG
ZDUWRĂFLÈa
$E\]REDF]\ÊZMDNLHMNROHMQRĂFLVÈSRUöZQ\ZDQHHOHPHQW\ZIXQNFMLSRUöZQXMÈFHMPRĝHV]XPLHĂFLÊ
Z\ZRïDQLHPHWRG\FRQVROHORJ QDSU]\NïDGFRQVROHORJ DijijEij ij ED FILTROWANIE, WYSZUKIWANIE I SORTOWANIE 561
JAK DZIAŁA SORTOWANIE?
3RQLĝHMPDP\WDEOLFÚSU]HFKRZXMÈFÈOLF]ENWöUHEÚGÈSRVRUWRZDQHZNR
OHMQRĂFLURVQÈFHM0RĝHV]]REDF]\ÊMDNGZLHZDUWRĂFL aLE VÈSRUöZQ\ZD
QH]HVREÈ)XQNFMDSRUöZQXMÈFDPD]GHğQLRZDQHUHJXï\NWöUHZVND]XMÈ
NWöUD]ZDUWRĂFLPDE\ÊSLHUZV]D
1
3
5
4
2
przesuń
aSRZLQQR]QDOHěÊVLÚSU]HG E
Ř Ř
aŘb 1
3
5
4
2
1
3
5
4
2
nie przesuwaj
nie przesuwaj
aSRZLQQR]QDOHěÊVLÚpo E
aSRZLQQR]QDOHěÊVLÚpo E
Ř aŘb !
Ř aŘb !
.ROHMQRĂÊVRUWRZDQLDHOHPHQWöZ]DOHĝ\RGSU]HJOÈGDUNLLQWHUQHWRZHM
3U]\NïDGWHQSRND]XMHNROHMQRĂÊVWRVRZDQÈSU]H]6DIDUL,QQHSU]HJOÈGDUNLVRUWXMÈHOHPHQW\ZLQQHM
NROHMQRĂFL
FILTROWANIE, WYSZUKIWANIE I SORTOWANIE
YDUSULFHV >@/LF]E\SU]HFKRZ\ZDQHZWDEOLF\
prices.sort(function(ab) {
'ZLHZDUWRĂFLVÈSRUöZQ\ZDQH
return ab8VWDOHQLHNWöUDZDUWRĂÊSRZLQQDE\ÊSLHUZV]D
` 1
3
5
4
2
przesuń
aSRZLQQR]QDOHěÊVLÚSU]HG E
Ř Ř
aŘb 1
3
4
5
2
1
2
3
4
5
przesuń
nie przesuwaj
aSRZLQQR]QDOHěÊVLÚSU]HG E
aSRZLQQR]QDOHěÊVLÚpo E
Ř Ř
aŘb Ř aŘb !
3U]HJOÈGDUND&KURPHSRUöZQXMHWÚWDEOLFÚZQDVWÚSXMÈFHMNROHMQRĂFLļļļļļ
3U]HJOÈGDUND)LUHIR[SRUöZQXMHWÚWDEOLFÚZQDVWÚSXMÈFHMNROHMQRĂFLļļļļļ
ļļļ
FILTROWANIE, WYSZUKIWANIE I SORTOWANIE 563
SORTOWANIE LICZB
3RQLĝHMSU]HGVWDZLRQRSU]\NïDG\IXQNFMLSRUöZQXMÈF\FKNWöUHPRJÈE\Ê
Xĝ\ZDQHMDNRSDUDPHWUPHWRG\sort()
ROSNĄCA KOLEJNOŚĆ
LICZBOWA
$E\SRVRUWRZDÊOLF]E\
ZNROHMQRĂFLURVQÈFHMQDOHĝ\
ZDUWRĂÊGUXJLHMOLF]E\bRGMÈÊ
RGSLHUZV]HMOLF]E\a:WDEHOL
SRSUDZHMVWURQLHZ\PLHQLRQR
SU]\NïDG\SRUöZQ\ZDQLD
ZDUWRĂFL]SRND]DQHMWDEOLF\
MALEJĄCA KOLEJNOŚĆ
LICZBOWA
$E\SRVRUWRZDÊOLF]E\
ZNROHMQRĂFLPDOHMÈFHMQDOHĝ\
ZDUWRĂÊSLHUZV]HMOLF]E\aRGMÈÊ
RGGUXJLHMOLF]E\b
KOLEJNOŚĆ LOSOWA
7HQIUDJPHQWNRGXORVRZR
]ZUDFDZDUWRĂÊ]]DNUHVXRG
GRDW\PVDP\PXPLHV]F]D
HOHPHQW\WDEOLF\ZNROHMQRĂFL
ORVRZHM
YDUSULFHV >@
SULFHVVRUW IXQFWLRQ DE ^
UHWXUQDE
` a
OPERATOR
b
WYNIK .2/(-12¥m
–
ļ
aZ\VWÚSXMHSU]HGb
–
NROHMQRĂÊSR]RVWDMHEH]]PLDQ
–
bZ\VWÚSXMHSU]HGa
YDUSULFHV >@
SULFHVVRUW IXQFWLRQ DE ^
UHWXUQED
` b
OPERATOR a
–
WYNIK
.2/(-12¥m
bZ\VWÚSXMHSU]HGa
–
NROHMQRĂÊSR]RVWDMHEH]]PLDQ
–
ļ
aZ\VWÚSXMHSU]HGb
YDUSULFHV >@
prices.sort(function() {
UHWXUQ0DWKUDQGRP ` 564 FILTROWANIE, WYSZUKIWANIE I SORTOWANIE
SORTOWANIE DAT
'DW\PXV]ÈE\ÊVNRQZHUWRZDQHQDRELHNW\'DWHDE\PRJï\E\ÊQDVWÚSQLH
SRUöZQ\ZDQH]DSRPRFÈRSHUDWRUöZ<L>
YDUKROLGD\V >
ijij
ijij
ijij
ijij
@
KROLGD\VVRUW IXQFWLRQ DE ^
YDUGDWH$ QHZ'DWH D YDUGDWH% QHZ'DWH E UHWXUQGDWH$GDWH%
` 7DEOLFDEÚG]LHWHUD]XïRĝRQDZQDVWÚSXMÈFHMNROHMQRĂFL
KROLGD\V >
ijij
ijij
ijij
ijij
]
DATY W KOLEJNOŚCI
ROSNĄCEJ
-HĝHOLGDW\VÈSU]HFKRZ\ZDQH
MDNRFLÈJLWHNVWRZHQDSU]\NïDG
MDNZWDEOLF\SRND]DQHMSR
OHZHMVWURQLHWRIXQNFMD
SRUöZQXMÈFDPXVLXWZRU]\Ê
RELHNW'DWHQDSRGVWDZLHFLÈJX
WHNVWRZHJRDE\PRĝOLZHE\ïR
SRUöZQ\ZDQLHGDW
3RNRQZHUVMLFLÈJXWHNVWRZHJR
QDRELHNW'DWH-DYD6FULSW
SU]HFKRZXMHGDWÚMDNROLF]EÚ
PLOLVHNXQGNWöUHXSï\QÚï\RG
VW\F]QLDURNX
.LHG\GDWDMHVWSU]HFKRZ\
ZDQDZSRVWDFLOLF]E\GZLH
GDW\PRĝQDSRUöZQ\ZDÊ
ZGRNïDGQLHWDNLVDPVSRVöE
MDNSRUöZQ\ZDQHVÈOLF]E\
QDVWURQLHSROHZHM
FILTROWANIE, WYSZUKIWANIE I SORTOWANIE 565
SORTOWANIE TABELI
:W\PSU]\NïDG]LH]PLHQLDQDMHVWNROHMQRĂÊWDEHOL.DĝG\ZLHUV]WDEHOLMHVW
SU]HFKRZ\ZDQ\ZWDEOLF\1DVWÚSQLHWDEOLFDMHVWVRUWRZDQDSRNOLNQLÚFLX
QDJïöZNDNROXPQ\WDEHOLSU]H]Xĝ\WNRZQLND
SORTOWANIE WEDŁUG
NAGŁÓWKA
.LHG\Xĝ\WNRZQLNNOLNQLH
QDJïöZHNNROXPQ\WDEHOL
Z\ZRï\ZDQDMHVWIXQNFMD
DQRQLPRZDRGSRZLHG]LDOQD]D
VRUWRZDQLH]DZDUWRĂFLWDEOLF\
ZLHUV]\WDEHOL :LHUV]HVÈ
VRUWRZDQHZNROHMQRĂFLURVQÈFHM
QDSRGVWDZLHGDQ\FK]QDMGXMÈ
F\FKVLÚZWHMNROXPQLH
3RQRZQHNOLNQLÚFLHQDJïöZND
WHMVDPHMNROXPQ\SRZRGXMH
VRUWRZDQLHZLHUV]\ZNROHMQRĂFL
PDOHMÈFHM
TYPY DANYCH
FUNKCJE PORÓWNUJĄCE
.DĝGDNROXPQDPRĝH]DZLHUDÊ
MHGHQ]QDVWÚSXMÈF\FKW\SöZ
GDQ\FK
.DĝG\W\SGDQ\FKZ\PDJD
Xĝ\FLDLQQHMIXQNFMLSRUöZQXMÈ
FHM)XQNFMHSRUöZQXMÈFHEÚGÈ
SU]HFKRZ\ZDQHMDNRWU]\PH
WRG\RELHNWXRQD]ZLHcompare,
NWöU\XWZRU]\P\ZSRGUR]G]LDOH
ķ2ELHNWFRPSDUHĵ
• FLÈJLWHNVWRZH
• F]DV PLQXW\LVHNXQG\ • GDW\
-HĝHOLVSRMU]\V]QDHOHPHQW\
<th>WRGRVWU]HĝHV]ĝHW\SGD
Q\FKMHVWZVND]DQ\ZDWU\EXFLH
RQD]ZLHGDWDVRUW
566 FILTROWANIE, WYSZUKIWANIE I SORTOWANIE
• name()VRUWXMHFLÈJLWHNVWR
ZH
• duration()VRUWXMHZDUWRĂFL
•
F]DVX PLQXW\LVHNXQG\ date()VRUWXMHGDW\
STRUKTURA TABELI HTML
1. (OHPHQWWDEOH!PXVL
]DZLHUDÊDWU\EXWFODVVNWöUHJR
ZDUWRĂÊWRVRUWDEOH
2. 1DJïöZNLNROXPQWDEHOLPDMÈ
DWU\EXWRQD]ZLHGDWDVRUW
2G]ZLHUFLHGODRQW\SGDQ\FK
ZWHMNROXPQLH
FVRUWWDEOHKWPO
HTML
1
2
:DUWRĂÊDWU\EXWXGDWDVRUW
RGSRZLDGDPHWRGRPZRELHNFLH
compare
<body>
WDEOHFODVV ĵVRUWDEOHĵ!
<thead>
<tr>
WKGDWDVRUW ĵQDPHĵ!GatunekWK!
WKGDWDVRUW ĵQDPHĵ!7\WXïWK!
WKGDWDVRUW ĵGXUDWLRQĵ!&]DVWUZDQLDWK!
WKGDWDVRUW ĵGDWHĵ!'DWDWK!
WU!
WKHDG!
<tbody>
<tr>
<td>$QLPDFMDWG!
<td>:LOGIRRGWG!
<td>WG!
<td>WG!
WU!
<tr>
<td>)LOPWG!
<td>7KH'HHUWG!
<td>WG!
<td>WG!
WU!
<tr>
<td>$QLPDFMDWG!
<td>7KH*KRVWWG!
<td>WG!
<td>WG!
WU!
WERG\!
WDEOH!
VFULSWVUF ĵMVMTXHU\MVĵ!VFULSW!
VFULSWVUF ĵMVVRUWWDEOHMVĵ!VFULSW!
ERG\!
FILTROWANIE, WYSZUKIWANIE I SORTOWANIE 567
FUNKCJE PORÓWNUJĄCE
1. =DGHNODURZDQLHRELHNWXcompare=DZLHUDRQ
WU]\PHWRG\SU]H]QDF]RQHGRVRUWRZDQLDQD]Z
ZDUWRĂFLF]DVXLGDW
1
Utworzenie obiektu: compare
2
DEKLARACJA METODY: QDPH DE
3
Użycie wyrażenia regularnego do zastąpienia
wszystkich wystąpień słowa the na początku ciągu
tekstowego parametru pustym ciągiem tekstowym
METODA NAME()
2. 'RGDQLHPHWRG\RQD]ZLHname()3RGREQLH
MDNZV]\VWNLHIXQNFMHSRUöZQXMÈFHPHWRGDWD
SRZLQQDSRELHUDÊGZDSDUDPHWU\aLb
3. 8ĝ\FLHZ\UDĝHQLDUHJXODUQHJRGRXVXQLÚFLD
VïRZDthe]SRF]ÈWNXREXDUJXPHQWöZSU]HND]\
ZDQ\FKIXQNFML ZLÚFHMLQIRUPDFMLRWHMWHFKQLFH
]QDMG]LHV]QDVWURQLHSRSUDZHM 4. -HĝHOLZDUWRĂÊaMHVWPQLHMV]DQLĝbWRĮ
5.ĮZDUWRĂFLÈ]ZURWQÈEÚG]LH R]QDF]DĝH
aSRZLQQR]QDOHěÊVLÚSU]HGb 6. :SU]HFLZQ\PUD]LHMHĝHOLaMHVWZLÚNV]HQLĝb,
ZDUWRĂFLÈ]ZURWQÈMHVW1DWRPLDVWMHĂOLVÈWDNLH
VDPHZDUWRĂFLÈ]ZURWQÈMHVW SDWU]QDGROH
VWURQ\ 4
Czy a jest
mniejsze
niż b?
N
Wartość zwrotna Ř
5
N
6
T
Czy a jest
większe niż b?
Wartość zwrotna T
Wartość zwrotna METODA DURATION()
7
7. 'RGDQLHPHWRG\RQD]ZLHduration()3RGRE
8
QLHMDNZV]\VWNLHIXQNFMHSRUöZQXMÈFHPHWRGDWD
SRZLQQDSRELHUDÊGZDSDUDPHWU\aLb
8. &]DVMHVWSU]HFKRZ\ZDQ\ZSRVWDFLPLQXW
9
LVHNXQGmm:ss0HWRGDVSOLW RELHNWX6WULQJ
10
G]LHOLFLÈJWHNVWRZ\ZPLHMVFDFKZ\VWÚSRZDQLD
GZXNURSNDLWZRU]\WDEOLFÚZNWöUHMPLQXW\
LVHNXQG\WRRGG]LHOQHHOHPHQW\
9. $E\RNUHĂOLÊF]DVFDïNRZLW\Z\UDĝRQ\ZVHNXQ 11
GDFKPHWRGDNumber()NRQZHUWXMHFLÈJLWHNVWRZH
12
ZWDEOLF\QDOLF]E\0LQXW\VÈPQRĝRQHSU]H]
LGRGDZDQHGROLF]E\VHNXQG
13
10. =ZUDFDQDMHVWREOLF]RQDZDUWRĂÊZ\UDĝHQLD
DE
METODA DATE()
11. 'RGDQLHPHWRG\RQD]ZLHdate()3RGREQLH
MDNZV]\VWNLHIXQNFMHSRUöZQXMÈFHPHWRGDWD
SRZLQQDSRELHUDÊGZDSDUDPHWU\aLb
12. 8WZRU]HQLHQRZHJRRELHNWX'DWHGRSU]HGVWD
ZLHQLDSRV]F]HJöOQ\FKDUJXPHQWöZSU]HND]\ZD
Q\FKPHWRG]LH
13. =ZUDFDQDMHVWREOLF]RQDZDUWRĂÊZ\UDĝHQLD
DE
568 FILTROWANIE, WYSZUKIWANIE I SORTOWANIE
DEKLARACJA METODY: GXUDWLRQ DE
Konwersja obu parametrów na tablice
Konwersja obu parametrów na sekundy
Wartość zwrotna to wynik wyrażenia DE
DEKLARACJA METODY: GDWH DE
Konwersja obu parametrów na obiekty 'DWH
Wartość zwrotna to wynik wyrażenia DE
UHWXUQD!E"
6NUöWHPGODRSHUDWRUDZDUXQNRZHJRMHVWoperator
WUöMDUJXPHQWRZ\2EOLF]DZDUWRĂÊZDUXQNX
L]ZUDFDMHGQÈ]GZöFKZDUWRĂFL:DUXQHN
]QDMGXMHVLÚSROHZHMVWURQLH]QDNX]DS\WDQLD
=NROHLGZLHRSFMH]QDMGXMÈVLÚSRSUDZHMVWURQLH
]QDNX]DS\WDQLDLVÈUR]G]LHORQHGZXNURSNLHP
-HĝHOLREOLF]RQHZ\UDĝHQLHEÚG]LHZDUWRĂFLÈ
truthyWR]ZUöFRQD]RVWDQLHSLHUZV]DZDUWRĂÊ
:SU]\SDGNXZDUWRĂFL IDOV\]ZUDFDQDMHVW
ZDUWRĂÊSRGZXNURSNX
OBIEKT COMPARE
FMVVRUWWDEOHMV
JAVASCRIPT
YDUFRPSDUH ^=DGHNODURZDQLHRELHNWXFRPSDUH
QDPHIXQFWLRQ DE ^'RGDQLHPHWRG\RQD]ZLHQDPH D DUHSODFH AWKHLijij 8VXQLÚFLHVïRZD7KH]SRF]ÈWNXSDUDPHWUX
E EUHSODFH AWKHLijij 8VXQLÚFLHVïRZD7KH]SRF]ÈWNXSDUDPHWUX
1
2
3
if (a < b) {
-HĝHOLZDUWRĂÊDMHVWPQLHMV]DRGE
UHWXUQ:DUWRĂÊ]ZURWQDZ\QRVL
`HOVH^:SU]HFLZQ\PUD]LH
UHWXUQD!E"-HĝHOLDMHVWZLÚNV]HQLĝE]ZUöÊ/8%
`MHĂOLVÈWDNLHVDPH]ZUöÊ
`
GXUDWLRQIXQFWLRQ DE ^'RGDQLHPHWRG\RQD]ZLHGXUDWLRQ D DVSOLW ijij 3RG]LDïF]DVXZPLHMVFXGZXNURSND
E EVSOLW ijij 3RG]LDïF]DVXZPLHMVFXGZXNURSND
4
5
6
7
8
D 1XPEHU D>@ 1XPEHU D>@ .RQZHUVMDF]DVXQDVHNXQG\
E 1XPEHU E>@ 1XPEHU E>@ .RQZHUVMDF]DVXQDVHNXQG\
9
10
11
12
13
UHWXUQDE:DUWRĂÊ]ZURWQDZ\QRVLDPLQXVE
`
GDWHIXQFWLRQ DE ^'RGDQLHPHWRG\RQD]ZLHGDWH D QHZ'DWH D 1RZ\RELHNW'DWHGRSU]HFKRZ\ZDQLDGDW\
E QHZ'DWH E 1RZ\RELHNW'DWHGRSU]HFKRZ\ZDQLDGDW\
UHWXUQDE:DUWRĂÊ]ZURWQDZ\QRVLDPLQXVE
`
`
DUHSODFH AWKHLijij 0HWRGDUHSODFH MHVWXĝ\ZDQDGRXVXQLÚFLD
ZV]\VWNLFKZ\VWÈSLHñVïRZD7KH]SRF]ÈWNXFLÈJX
WHNVWRZHJR']LDïDZNDĝG\PFLÈJXWHNVWRZ\P
LSRELHUDW\ONRMHGHQDUJXPHQWZ\UDĝHQLHUHJX
ODUQH SDWU]UR]G]LDïSRGUR]G]LDïķ:\UDĝHQLD
UHJXODUQHĵ -HVWWRSU]\GDWQHJG\VïRZR7KHQLH
]DZV]HMHVWXĝ\ZDQHZQD]ZDFKQDSU]\NïDG
ZQD]ZDFK]HVSRïöZPX]\F]Q\FKOXEW\WXïDFK
ğOPöZ:\UDĝHQLHUHJXODUQHMHVWSLHUZV]\P
SDUDPHWUHPPHWRG\UHSODFH • V]XNDQ\FLÈJWHNVWRZ\]RVWDïXPLHV]F]RQ\
•
•
•
PLÚG]\XNRĂQLNDPL
]QDNAR]QDF]DĝHVïRZRthePXVL]QDMGRZDÊ
VLÚQDSRF]ÈWNXFLÈJXWHNVWRZHJR
spacjaSRtheR]QDF]DĝHSRW\PVïRZLHPXVL
]QDMGRZDÊVLÚVSDFMD
RSFMDiR]QDF]DĝHZLHONRĂÊ]QDNöZQLHPD
]QDF]HQLD
*G\]RVWDQLH]QDOH]LRQHGRSDVRZDQLHGR
Z\UDĝHQLDUHJXODUQHJRGUXJLSDUDPHWUPHWRG\
RNUHĂOD]DVWÚSXMÈF\FLÈJWHNVWRZ\:RPDZLDQ\P
SU]\NïDG]LHMHVWWRSXVW\FLÈJWHNVWRZ\
FILTROWANIE, WYSZUKIWANIE I SORTOWANIE SORTOWANIE KOLUMN
1. 'ODNDĝGHJRHOHPHQWXSRVLDGDMÈFHJRDWU\EXW
FODVVRZDUWRĂFLVRUWDEOHQDOHĝ\Z\NRQDÊ
IXQNFMÚDQRQLPRZÈ
2. 3U]HFKRZ\ZDQLHELHĝÈFHJRHOHPHQWXWDEOH!
Z]PLHQQHMWDEOH
3. 3U]HFKRZ\ZDQLH]DZDUWRĂFLWDEHOLZ]PLHQQHM
$tbody
4. 3U]HFKRZ\ZDQLHHOHPHQWöZ<th>Z]PLHQQHM
FRQWUROV
5. .DĝG\ZLHUV]]$tbody]RVWDMHXPLHV]F]RQ\
ZWDEOLF\RQD]ZLHURZV
6. 'RGDQLHSURFHGXU\REVïXJL]GDU]HñJG\Xĝ\W
NRZQLNNOLNQLHQDJïöZHNNROXPQ\WDEHOL:WHG\
SRZLQQD]RVWDÊZ\ZRïDQDIXQNFMDDQRQLPRZD
7. =PLHQQD$headerSU]HFKRZXMHWHQHOHPHQW
ZRELHNFLHM4XHU\
8. 8PLHV]F]HQLHZ]PLHQQHMRQD]ZLHorder
ZDUWRĂFLDWU\EXWXGDWDVRUW
9. =DGHNODURZDQLH]PLHQQHMRQD]ZLHFROXPQ
10. :SU]\SDGNXQDJïöZNDNOLNQLÚWHJRSU]H]
Xĝ\WNRZQLNDMHĝHOLDWU\EXWFODVVPDZDUWRĂÊ
DVFHQGLQJOXEGHVFHQGLQJR]QDF]DWRĝH
NROXPQD]RVWDïDMXĝSRVRUWRZDQD
11. =PLDQDZDUWRĂFLDWU\EXWXFODVV
DE\]DZLHUDïZDUWRĂÊSU]HFLZQÈGRDVFHQGLQJ
OXEGHVFHQGLQJ 12. 2GZUöFHQLHNROHMQRĂFLZLHUV]\ SU]HFKRZ\ZD
Q\FKZWDEOLF\URZV ]DSRPRFÈPHWRG\WDEOLF\
RQD]ZLHreverse()
13. :SU]HFLZQ\PUD]LHMHĝHOLZLHUV]NOLNQLÚW\
SU]H]Xĝ\WNRZQLNDQLHE\ïZ\EUDQ\GRGDMHP\
NODVÚDVFHQGLQJGRQDJïöZND
14. 8VXQLÚFLHNODV\DVFHQGLQJOXEGHVFHQGLQJ
]HZV]\VWNLFKSR]RVWDï\FKHOHPHQWöZ<th>ZWHM
WDEHOL
15. -HĝHOLRELHNWcomparePDPHWRGÚGRSDVRZDQÈ
GRZDUWRĂFLDWU\EXWXGDWDW\SHGODWHMNROXPQ\
WRĮ
16.ĮQDVWÚSXMHSREUDQLHQXPHUXNROXPQ\]D
SRPRFÈPHWRG\LQGH[ NWöUD]ZUDFDQXPHU
LQGHNVXHOHPHQWXZGRSDVRZDQ\P]ELRU]HM4XHU\
:DUWRĂÊWDMHVWSU]HFKRZ\ZDQDZ]PLHQQHM
FROXPQ
17. 0HWRGDsort()]RVWDMHZ\NRQDQDGODWDEOLF\
UHNRUGöZLSRUöZQXMHGZDZLHUV]HMHGQRF]HĂQLH
:WUDNFLHSRUöZQ\ZDQLDZDUWRĂFL
1
2
3
4
5
ITERACJA PRZEZ TABELĘ
Utworzenie zmiennych:
WDEOH: element WDEOH!
$tbody: element <tbody>
FRQWUROV: elementy <th>
URZV: tablica elementów <tr>
Zdarzenie: FOLFN w elemencie <th>
6
FUNKCJA ANONIMOWA:
Sortuje dane na podstawie nagłówka
klikniętej kolumny
7
8
9
Utworzenie zmiennych (na podstawie klikniętego nagłówka kolumny)
header: nagłówek klikniętej kolumny
order: wartość atrybutu GDWDVRUW
FROXPQ: indeks nagłówka klikniętej kolumny
Czy atrybut FODVV ma
wartość DVFHQGLQJ, czy
GHVFHQGLQJ?
10
N
13
Do elementu <th>
dodaj atrybut FODVV
o wartości DVFHQGLQJ
11
Wartość atrybutu
FODVV zmień na
przeciwną
14
Usuń wartość DVFHQGLQJ
lub GHVFHQGLQJ z pozostałych nagłówków
12
Odwróć kolejność
wierszy w tabeli
15
N
Czy obiekt compare
ma wartość dopasowaną
do zmiennej order?
T
16
Zmienna FROXPQ otrzymuje numer indeksu
klikniętego elementu <th>
17
Sortowanie tablicy URZV za pomocą funkcji
porównującej
18
a to tekst z pierwszego porównywanego
wiersza, natomiast b to tekst z drugiego wiersza
19
Użycie obiektu compare do porównania a i b za
pomocą metody wskazanej w zmiennej order
20
Wstawienie zawartości tablicy do elementu
<tbody>
GO TO NEXT SORTABLE TABLE
FILTROWANIE, WYSZUKIWANIE I SORTOWANIE
T
SKRYPT SORTUJĄCY TABELĘ
FMVVRUWWDEOHMV
JAVASCRIPT
5
$(’.VRUWDEOHij HDFK IXQFWLRQ ^
YDUWDEOH WKLV // Tabela do sortowania.
YDUWERG\ WDEOHğQG ijWERG\ij =DZDUWRĂÊWDEHOL
YDUFRQWUROV WDEOHğQG ijWKij 1DJïöZNLWDEHOL
YDUURZV WERG\ğQG ijWUij WR$UUD\ 7DEOLFDSU]HFKRZXMÈFDZLHUV]H
6
7
8
9
FRQWUROVRQ ijFOLFNijIXQFWLRQ ^.LHG\Xĝ\WNRZQLNNOLNQLHQDJïöZHN
YDUKHDGHU WKLV 3REUDQLHQDJïöZND
YDURUGHU KHDGHUGDWD ijVRUWij 3REUDQLHZDUWRĂFLDWU\EXWXGDWDVRUW
YDUFROXPQ=DGHNODURZDQLH]PLHQQHMRQD]ZLHFROXPQ
1
2
3
4
10
11
12
13
14
15
16
17
18
19
20
-HĝHOLZ\EUDQ\HOHPHQWPDDWU\EXWFODVVRZDUWRĂFLDVFHQGLQJOXEGHVFHQGLQJ
WU]HEDRGZUöFLÊNROHMQRĂÊZLHUV]\
LI KHDGHULV ijDVFHQGLQJij __KHDGHULV ijGHVFHQGLQJij ^
KHDGHUWRJJOH&ODVV ijDVFHQGLQJGHVFHQGLQJij =PLDQDZDUWRĂFLDWU\EXWXFODVVQDSU]HFLZQÈ
WERG\DSSHQG URZVUHYHUVH
2GZUöFHQLHNROHMQRĂFLHOHPHQWöZWDEOLF\
`HOVH^:SU]HFLZQ\PUD]LHWU]HEDSRVRUWRZDÊWDEOLFÚ
KHDGHUDGG&ODVV ijDVFHQGLQJij 'RGDQLHNODV\GRQDJïöZND
8VXQLÚFLHNODV\]ZV]\VWNLFKSR]RVWDï\FKQDJïöZNöZ
KHDGHUVLEOLQJV UHPRYH&ODVV ijDVFHQGLQJGHVFHQGLQJij LI FRPSDUHKDV2ZQ3URSHUW\ RUGHU ^-HĝHOLRELHNWFRPSDUHPDZVND]DQÈPHWRGÚ
FROXPQ FRQWUROVLQGH[ WKLV :\V]XNDQLHQXPHUXLQGHNVXNROXPQ\
URZVVRUW IXQFWLRQ DE
D D ğQG ijWGij HT
E E ğQG ijWGij HT
UHWXUQFRPSDUH>RUGHU@
` ^:\ZRïDQLHPHWRG\VRUW ZWDEOLF\URZV
FROXPQ WH[W 3REUDQLHWHNVWXNROXPQ\ZZLHUV]XD
FROXPQ WH[W 3REUDQLHWHNVWXNROXPQ\ZZLHUV]XE
DE :\ZRïDQLHPHWRG\SRUöZQXMÈFHM
WERG\DSSHQG URZV `
`
` ` 18. :DUWRĂFLaLbVÈSU]HFKRZ\ZDQHZ]PLHQ
Q\FK0HWRGDğQG SRELHUDHOHPHQW\<td>GOD
GDQHJRZLHUV]DWDEHOL0HWRGDHT VSUDZG]D
NRPöUNÚZZLHUV]XNWöUHMQXPHULQGHNVXMHVWGR
SDVRZDQ\GR]PLHQQHMFROXPQ0HWRGDWH[W
SRELHUDWHNVW]HZVND]DQHMNRPöUNL
19. 2ELHNWcompareMHVWXĝ\ZDQ\GRSRUöZQDQLD
ZDUWRĂFLaLb:\NRU]\VWDQDEÚG]LHPHWRGD
ZVND]DQDZ]PLHQQHMtype SREUDQDZNURNX
]DWU\EXWXGDWDVRUW 20. :VWDZLHQLHZLHUV]\ SU]HFKRZ\ZDQH
ZWDEOLF\URZV GRWDEHOL
FILTROWANIE, WYSZUKIWANIE I SORTOWANIE
571
PODSUMOWANIE
FILTROWANIE, WYSZUKIWANIE I SORTOWANIE
f 7DEOLFHVÈQDMF]ÚĂFLHMXĝ\ZDQHGRSU]HFKRZ\ZDQLD]ELRUX
RELHNWöZ
f 7DEOLFHRIHUXMÈSU]\GDWQHPHWRG\SR]ZDODMÈFHQDGRGDZDQLH
XVXZDQLHğOWURZDQLHLVRUWRZDQLH]QDMGXMÈF\FKVLÚZQLFK
HOHPHQWöZ
f )LOWURZDQLHXPRĝOLZLDXVXQLÚFLHHOHPHQWöZLZ\ĂZLHWOHQLH
MHG\QLHLFKSRG]ELRUXQDSRGVWDZLHZVND]DQ\FKNU\WHULöZ
f )LOWURZDQLHF]ÚVWRRSLHUDVLÚQDZïDVQ\FKIXQNFMDFKNWöUH
VSUDZG]DMÈF]\HOHPHQW\VSHïQLDMÈGDQHNU\WHULD
f :\V]XNLZDQLHSR]ZDODQDSU]HSURZDG]HQLHğOWURZDQLDQD
SRGVWDZLHGDQ\FKZSURZDG]RQ\FKSU]H]Xĝ\WNRZQLND
f 6RUWRZDQLHSR]ZDODQD]PLDQÚNROHMQRĂFLHOHPHQWöZZWDEOLF\
f -HĝHOLFKFHV]]\VNDÊNRQWUROÚQDGNROHMQRĂFLÈZMDNLHMVÈ
VRUWRZDQHHOHPHQW\PRĝHV]Xĝ\ÊIXQNFMLSRUöZQ\ZDQLD
f $E\]DSHZQLÊREVïXJÚVWDUV]\FKSU]HJOÈGDUHNLQWHUQHWRZ\FK
PRĝQDZ\NRU]\VWDÊVNU\SW(&0$6FULSW6KLP
FILTROWANIE, WYSZUKIWANIE I SORTOWANIE
13
USPRAWNIENIA
I WERYFIKACJA
FORMULARZY
SIECIOWYCH
)RUPXODU]HVLHFLRZHSR]ZDODMÈQD]HEUDQLHLQIRUPDFML
RGRGZLHG]DMÈF\FK-DYD6FULSWSRPRĝH&LZSREUDQLX
RGSRZLHGQLFKGDQ\FK]IRUPXODU]\
2GVDPHJRSRF]ÈWNXVZRMHJRLVWQLHQLDMÚ]\N-DYD6FULSWMHVWZ\NRU]\VW\ZDQ\GRXVSUDZQLDQLD
LZHU\ğNDFMLIRUPXODU]\VLHFLRZ\FK']LÚNLXVSUDZQLHQLRPIRUPXODU]HVWDMÈVLÚïDWZLHMV]H
ZXĝ\FLX1DWRPLDVWZHU\ğNDFMDGDQ\FKSU]HGZ\VïDQLHPIRUPXODU]DSR]ZDODXSHZQLÊVLÚ
ĝHXĝ\WNRZQLNZSURZDG]LïSUDZLGïRZHLQIRUPDFMH MHĝHOLQLHWU]HEDZ\ĂZLHWOLÊRGSRZLHGQL
NRPXQLNDW 5R]G]LDïWHQ]RVWDïSRG]LHORQ\QDWU]\F]ÚĂFL
USPRAWNIENIA
FORMULARZY
ELEMENTY
FORMULARZY HTML5
WERYFIKACJA
FORMULARZY
:WHMF]ÚĂFL]QDMG]LHV]ZLHOH
SU]\NïDGöZXVSUDZQLHñ
IRUPXODU]\VLHFLRZ\FK
.DĝG\ZSURZDG]DUöĝQH
ZïDĂFLZRĂFLLPHWRG\NWöUH
PRĝQDZ\NRU]\VWDÊSRGF]DV
SUDF\]HOHPHQWDPLIRUPXODU]D
6SHF\ğNDFMD+70/]DZLHUD
IXQNFMHZHU\ğNDFMLQLHXĝ\ZDMÈFH-DYD6FULSW:WHM
F]ÚĂFL]RVWDQÈRPöZLRQH
VSRVRE\QDMDNLHZHU\ğNDFMÚ
PRĝQDVSöMQLH]DVWRVRZDÊ
Z]DUöZQRVWDUV]\FKMDN
LQRZ\FKSU]HJOÈGDUNDFK
LQWHUQHWRZ\FK
2VWDWQLLQDMGïXĝV]\SU]\NïDG
ZNVLÈĝFHSU]HGVWDZLDVNU\SW
SU]H]QDF]RQ\GRZHU\ğNDFML
LXVSUDZQLHQLD IRUPXODU]D
UHMHVWUDF\MQHJRNWöU\PRĝHV]
]REDF]\ÊQDVWURQLHSR
SUDZHM6NU\SWWHQ]DZLHUD
SRQDGZLHUV]\NRGX
3RQDGWRZSLHUZV]HMF]ÚĂFLUR]G]LDïXUH]\JQXMHP\]M4XHU\QDU]HF]]Z\NïHJR-DYD6FULSW
SRQLHZDĝQLH]DZV]HQDOHĝ\RSLHUDÊVLÚQDELEOLRWHFHM4XHU\ ]ZïDV]F]DZSU]\SDGNXVNU\SWöZ
NWöUHZ\NRU]\VWXMÈMHG\QLHQLHZLHONÈF]ÚĂÊIXQNFMRQDOQRĂFLM4XHU\ 574
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
575
FUNKCJE POMOCNICZE
:F]ÚĂFLSLHUZV]HMUR]G]LDïX
EÚG]LHP\Xĝ\ZDÊ]Z\NïHJRNRGX
-DYD6FULSWDQLHM4XHU\8WZRU]\P\
ZïDVQ\SOLN-DYD6FULSWSU]H]QDF]RQ\
GRUR]ZLÈ]\ZDQLDSUREOHPöZ]ZLÈ]DQ\FK]UöĝQLFDPLPLÚG]\SU]HJOÈGDUNDPLLQWHUQHWRZ\PL:SOLNX
]QDMG]LHVLÚIXQNFMDSRPRFQLF]D
SU]H]QDF]RQDGRWZRU]HQLD]GDU]Hñ
)RUPXODU]HVLHFLRZHXĝ\ZDMÈZLHOXSURFHGXU
REVïXJL]GDU]HñD MDNZLG]LDïHĂZUR]G]LDOH SU]HJOÈGDUNL,(ļPDMÈLQQ\PRGHO]GDU]Hñ
QLĝSR]RVWDïHSU]HJOÈGDUNL'RUR]ZLÈ]\ZDQLD
SUREOHPöZ]ZLÈ]DQ\FK]UöĝQÈREVïXJÈ]GDU]Hñ
ZSU]HJOÈGDUNDFKPRĝQDZ\NRU]\VWDÊELEOLRWHNÚ
M4XHU\-HĝHOLMHGQDNQLHFKFHV]GRïÈF]DÊFDïHJR
VNU\SWXM4XHU\W\ONRZFHOXREVïXJL]GDU]Hñ
ZVWDUV]\FKZHUVMDFK,(PXVLV]VDPRG]LHOQLH
XWZRU]\ÊNRGRGSRZLHG]LDOQ\]DREVïXJÚ]GDU]Hñ
=DPLDVWWZRU]\ÊWHQVDPNRG]DNDĝG\PUD]HP
JG\SRWU]HEXMHV]SURFHGXU\REVïXJL]GDU]HñRGSRZLHGQLNRGPRĝHV]SU]\JRWRZDÊUD]LXPLHĂFLÊ
go w funkcji pomocniczej1DVWÚSQLHIXQNFMÚ
WÚZ\ZRïXMHV]JG\QDVWURQLHWU]HEDXPLHĂFLÊ
SURFHGXUÚREVïXJL]GDU]Hñ
1DVWURQLHSRSUDZHMSU]HGVWDZLRQRNRGIXQNFML
RQD]ZLHaddEvent()7DIXQNFMD]RVWDïDXPLHV]F]RQDZSOLNXRQD]ZLHutilities.js3RGRGDQLX
WHJRSOLNXGRVWURQ\+70/ZV]\VWNLHVNU\SW\
NWöUH]RVWDQÈGRïÈF]RQHpoVNU\SFLHZ\PLHQLRQ\P
ZF]HĂQLHMEÚGÈPRJï\Xĝ\ZDÊMHJRIXQNFMLZFHOX
XWZRU]HQLDSURFHGXU\REVïXJL]GDU]HñVSöMQLH
G]LDïDMÈFHMZSU]HJOÈGDUNDFK
addEvent(el, event, callback);
i
ii
iii
)XQNFMDSRELHUDWU]\SDUDPHWU\
i) elWRZÚ]HïPRGHOX'20SU]HGVWDZLDMÈF\
HOHPHQWGRNWöUHJR]RVWDQLHGRGDQH]GDU]HQLHOXE
]NWöUHJR]RVWDQLHXVXQLÚWH
ii) eventWRURG]DMQDVïXFKLZDQHJR]GDU]HQLD
576
iii) callbackWRIXQNFMDZ\ZRïDQLD]ZURWQHJR
NWöUD]RVWDQLHZ\ZRïDQDSRZ\VWÈSLHQLXZVND]DQHJR]GDU]HQLDZW\PHOHPHQFLH
3OLNutilities.jsZZLWU\QLHLQWHUQHWRZHMSRĂZLÚFRQHMNVLÈĝFHPDWDNĝHPHWRGÚSU]H]QDF]RQÈGR
XVXZDQLD]GDU]Hñ
-HĝHOLSU]\MU]\V]VLÚPHWRG]LHaddEvent()SU]HGVWDZLRQHMQDVWURQLHSRSUDZHMWR]REDF]\V]ĝHSROHFHQLHZDUXQNRZHVSUDZG]DF]\SU]HJOÈGDUNDREVïXJXMH
addEventListener()-HĝHOLWDNGRGDQ\]RVWDQLH
VWDQGDUGRZ\REVHUZDWRU]GDU]Hñ:SU]HFLZQ\P
UD]LHWZRU]RQHMHVWUR]ZLÈ]DQLHDZDU\MQHGOD,(
5R]ZLÈ]DQLHDZDU\MQHPDQDVWÚSXMÈFHFHFK\
8ĝ\ZDRIHURZDQHMSU]H],(PHWRG\attachEvent()
:SU]HJOÈGDUNDFK,(ļRELHNWeventQLHMHVW
DXWRPDW\F]QLHSU]HND]\ZDQ\IXQNFMLREVïXJL
]GDU]Hñ LQLHMHVWGRVWÚSQ\]DSRPRFÈVïRZD
NOXF]RZHJRthis MDNRPöZLRQRZUR]G]LDOH
ZSRGUR]G]LDOHķ2ELHNW]GDU]HQLDZSU]HJOÈGDUFH,QWHUQHW([SORUHUļĵ=DPLDVWWHJR
GRVWÚSQ\MHVWZRELHNFLHwindow'ODWHJRWHĝ
NRGPXVLSU]HND]DÊRELHNWeventMDNRSDUDPHWU
SURFHGXU\REVïXJL]GDU]Hñ
3RGF]DVSU]HND]\ZDQLDSDUDPHWUöZGR
IXQNFMLREVïXJL]GDU]HñZ\ZRïDQLHPXVLE\Ê
RSDNRZDQHIXQNFMÈDQRQLPRZÈMDNSRND]DQRZUR]G]LDOHZSRGUR]G]LDOHķ8ĝ\FLH
SDUDPHWUöZZSURFHGXUDFKREVïXJL]GDU]Hñ
LREVHUZDWRUDFK]GDU]Hñĵ
•
•
•
$E\X]\VNDÊRF]HNLZDQ\HIHNWUR]ZLÈ]DQLH
DZDU\MQHGRGDMHGZLHPHWRG\GRHOHPHQWX
GODNWöUHJRSU]\JRWRZ\ZDQDMHVWSURFHGXUD
REVïXJL]GDU]Hñ SDWU]NURNLLQDVWURQLHSR
SUDZHM 1DVWÚSQLHXĝ\ZDPHWRG\,(RQD]ZLH
attachEvent()ZFHOXGRGDQLDGRHOHPHQWXNRGX
SURFHGXU\REVïXJL]GDU]Hñ
)XQNFMHGHPRQVWUXMÈGZLHQRZHWHFKQLNL
'RGDQLHQRZ\FKPHWRGGRZÚ]ïöZPRGHOX'20
0HWRG\PRĝQDGRGDÊGRZÚ]ïöZPRGHOX'20
SRQLHZDĝVÈSRSURVWXRELHNWDPL NWöUHSU]HGVWDZLDMÈHOHPHQW\ 8WZRU]HQLHQD]ZPHWRG]DSRPRFÈ]PLHQQHM
1DZLDVöZNZDGUDWRZ\FKPRĝQDXĝ\ÊGRXVWDZLHQLDZïDĂFLZRĂFLOXEPHWRG\]DZDUWRĂÊQDZLDVöZ
EÚG]LHSU]HNV]WDïFRQDQDSRVWDÊFLÈJXWHNVWRZHJR
•
•
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
PLIK UTILITIES.JS
3RQLĝHMSU]HGVWDZLRQRIXQNFMÚaddEvent()NWöUD
EÚG]LHZ\NRU]\VWDQDGRXWZRU]HQLDZV]\VWNLFK
SURFHGXUREVïXJL]GDU]HñZW\PUR]G]LDOH'HğQLFMDWHMIXQNFML]QDMGXMHVLÚZSOLNXutilities.js
7HJRURG]DMXJRWRZHGRSRQRZQHJRXĝ\FLDIXQNFMH
VÈF]ÚVWRRNUHĂODQHPLDQHPfunkcji pomocniczych*G\EÚG]LHV]WZRU]\ÊZLÚNV]ÈLORĂÊ
NRGX-DYD6FULSWSUDZGRSRGREQLHFRUD]F]ÚĂFLHM
EÚG]LHV]RSUDFRZ\ZDÊWHJRURG]DMXIXQNFMH
c13/js/utilities.js
JAVASCRIPT
1
2
3
4
5
6
7
)XQNFMDSRPRFQLF]DRGSRZLHG]LDOQD]DGRGDQLHREVHUZDWRUD]GDU]Hñ
function addEvent(el, event, callback) {
if (’addEventListener’ in el) {
-HĝHOLPHWRGDDGG(YHQW/LVWHQHU G]LDïD
el.addEventListener(event, callback, false); QDOHĝ\MHMXĝ\Ê
} else {
:SU]HFLZQ\PUD]LH
el[’e’ + event + callback] = callback;
:\ZRïDQLH]ZURWQHPHWRG\HO
el[event + callback] = function() {
'RGDQLHGUXJLHMPHWRG\
el[’e’ + event + callback](window.event); 8ĝ\FLHMHMGRZ\ZRïDQLD
SRSU]HGQLHMIXQNFML
};
el.attachEvent(’on’ + event, el[event + callback]); 8ĝ\FLHDWWDFK(YHQW
}
GRZ\ZRïDQLDGUXJLHMIXQNFMLNWöUD]NROHLZ\ZRïDSLHUZV]È
}
1. =DGHNODURZDQLHIXQNFMLaddEvent()ZUD]
]WU]HPDSDUDPHWUDPLHOHPHQWW\S]GDU]HQLD
LIXQNFMDZ\ZRïDQLD]ZURWQHJR
2. 3ROHFHQLHZDUXQNRZHVSUDZG]DF]\HOHPHQW
REVïXJXMHPHWRGÚaddEventListener()
3. -HĝHOLWDNXĝ\ZDQDMHVWPHWRGD
addEventListener()
4. -HĝHOLQLH]RVWDQLH]DVWRVRZDQ\NRGUR]ZLÈ]DQLDDZDU\MQHJR
5R]ZLÈ]DQLHDZDU\MQHPXVLGRGDÊGZLHPHWRG\GR
HOHPHQWXGODNWöUHJRWZRU]RQDMHVWSURFHGXUDREVïXJL
]GDU]Hñ1DVWÚSQLHPHWRGDattachEvent()GRVWÚSQD
Z,(MHVWXĝ\ZDQDGRZ\ZRïDQLDQRZ\FKPHWRGSR
Z\VWÈSLHQLX]GDU]HQLDZGDQ\PHOHPHQFLH
5. 3LHUZV]DPHWRGDGRGDZDQDGRHOHPHQWXWR
NRGNWöU\SRZLQLHQE\ÊZ\NRQDQ\SRZ\VWÈSLHQLX
]GDU]HQLDZGDQ\PHOHPHQFLH WHQE\ïZVND]DQ\
MDNRWU]HFLSDUDPHWUIXQNFML 6. 'UXJDPHWRGDZ\ZRïXMHPHWRGÚ]SRSU]HGQLHJRNURNX7RMHVWNRQLHF]QHZFHOXSU]HND]DQLD
RELHNWXeventGRIXQNFMLZVND]DQHMZNURNX
7. 0HWRGDattachEvent()MHVWZ\NRU]\VW\ZDQD
ZFHOXQDVïXFKLZDQLDRNUHĂORQHJR]GDU]HQLDZH
ZVND]DQ\PHOHPHQFLH3RZ\VWÈSLHQLX]GDU]HQLD
QDVWÚSXMHZ\ZRïDQLHPHWRG\GRGDQHMZNURNX
NWöUD]NROHLZ\ZRïXMHPHWRGÚ]NURNXXĝ\ZDMÈF
RGSRZLHGQLHJRRGQLHVLHQLDGRRELHNWXevent
:NURNDFKLZ\NRU]\VWDQRQRWDFMÚQDZLDVX
NZDGUDWRZHJRDE\GRGDÊQD]ZÚPHWRG\GR
HOHPHQWX
el[’e’ + event + callback]
i
ii
i) :Ú]HïPRGHOX'20MHVWSU]HFKRZ\ZDQ\
Zel1DZLDVNZDGUDWRZ\SR]ZDODQDGRGDQLH
QD]Z\PHWRG\GRWHJRZÚ]ïD1D]ZDWDPXVLE\Ê
XQLNDOQDGODHOHPHQWXLGODWHJRMHVWWZRU]RQDQD
SRGVWDZLHWU]HFKIUDJPHQWöZLQIRUPDFML
ii) 1D]ZDPHWRG\VNïDGDVLÚ]
OLWHU\e ]DVWRVRZDQDGODSLHUZV]HMPHWRG\
ZNURNXDOHQLHXĝ\ZDQDZNURNX W\SX]GDU]HQLD QDSU]\NïDGclick, blur,
mouseover NRGXSRFKRG]ÈFHJR]IXQNFMLZ\ZRïDQLD
]ZURWQHJR
:NRG]LHSU]HGVWDZLRQ\PQDVWURQLHSRSUDZHM
ZDUWRĂFLÈPHWRG\MHVWIXQNFMDZ\ZRïDQLD
]ZURWQHJR 7DNLHUR]ZLÈ]DQLHPRĝHSURZDG]LÊ
GRSRZVWDQLDGïXJLFKQD]ZPHWRGDOHGREU]H
VSUDZG]DVLÚZSU]\SDGNXQDV]\FKSRWU]HE )XQNFMDWDMHVWRSDUWDQDIXQNFMLRSUDFRZDQHM
SU]H]-RKQD5HVLJDNWöU\VWZRU]\ïM4XHU\
KWWSHMRKQRUJEORJĠH[LEOHMDYDVFULSWHYHQWV •
•
•
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH 577
ELEMENT <FORM>
:Ú]ï\PRGHOX'20NRQWUROHNIRUPXODU]DVLHFLRZHJRPDMÈZïDĂFLZRĂFL
PHWRG\L]GDU]HQLDUöĝQHRGHOHPHQWöZNWöUHE\ï\RPDZLDQHGRWÈG
3RQLĝHMZ\PLHQLRQRNLONDZïDĂFLZRĂFLPHWRGL]GDU]HñFKDUDNWHU\VW\F]Q\FK
GODHOHPHQWX<form>
:’$¥&,:2¥m 23,6
action
$GUHV85/QDNWöU\MHVWZ\V\ïDQ\
IRUPXODU]
method
2NUHĂOHQLHPHWRG\Z\VïDQLD
IRUPXODU]DGETOXEPOST
name
5]DGNRXĝ\ZDQD]QDF]QLH
F]ÚĂFLHMIRUPXODU]MHVWSRELHUDQ\
]Z\NRU]\VWDQLHPZDUWRĂFLMHJR
DWU\EXWXid
elements
.ROHNFMDHOHPHQWöZZIRUPXODU]X]NWöU\PLPRĝHSUDFRZDÊ
Xĝ\WNRZQLN6ÈRQHGRVWÚSQH]D
SRĂUHGQLFWZHPQXPHUöZLQGHNVX
OXEZDUWRĂFLLFKDWU\EXWöZname
3U]HGVWDZLRQHZUR]G]LDOHPHWRG\PRGHOX'20WDNLHMDNgetElementById()
getElementsByTagName() i querySelector()VÈ
QDMSRSXODUQLHMV]\PLWHFKQLNDPLX]\VNDQLDGRVWÚSX
GR]DUöZQRHOHPHQWX<form>MDNLNRQWUROHUD
IRUPXODU]DZGRZROQ\PIRUPXODU]XVLHFLRZ\P
-HGQDNRELHNWdocumentRIHUXMHWHĝWDN]ZDQÈ
NROHNFMÚIRUPXODU]\.ROHNFMDWD]DZLHUDRGQLHVLHQLDGRZV]\VWNLFKHOHPHQWöZ<form>]QDMGXMÈF\FK
VLÚQDVWURQLH
.DĝG\HOHPHQWZNROHNFMLPDSU]\SLVDQ\QXPHU
LQGHNVX SRGREQLHMDNZWDEOLF\QXPHU\UR]SRF]\QDMÈVLÚ0 3RQLĝV]HZ\ZRïDQLHSR]ZDODQD
X]\VNDQLHGRVWÚSXGRGUXJLHJRIRUPXODU]D
document.forms[1];
,VWQLHMHUöZQLHĝPRĝOLZRĂÊX]\VNDQLDGRVWÚSX
GRIRUPXODU]D]DSRĂUHGQLFWZHPZDUWRĂFLMHJR
DWU\EXWXname3RQLĝV]HZ\ZRïDQLHSRZRGXMH
SREUDQLHIRUPXODU]DNWöUHJRDWU\EXWname ma
ZDUWRĂÊlogin
document.forms.login
0(72'$
23,6
submit()
:\ZRïDQLHPHWRG\PDWDNLVDPHIHNW
MDNNOLNQLÚFLHSU]\FLVNXZ\V\ïDMÈFHJR
IRUPXODU]
reset()
:\]HURZDQLHIRUPXODU]DGRMHJR
ZDUWRĂFLSRF]ÈWNRZ\FKMDNLHPLDïSR
ZF]\WDQLXVWURQ\
='$5=(1,(
23,6
submit
:\ZRï\ZDQHSRZ\VïDQLXIRUPXODU]D
reset
:\ZRï\ZDQHSRZ\]HURZDQLX
IRUPXODU]D
.DĝG\HOHPHQW<form>QDVWURQLHPDUöZQLHĝWDN
]ZDQÈNROHNFMÚHOHPHQWöZ3U]HFKRZXMHRQD
ZV]\VWNLHNRQWURONL]GDQHJRIRUPXODU]D'RVWÚS
GRSRV]F]HJöOQ\FKHOHPHQWöZNROHNFMLelements
UöZQLHĝPRĝHRGE\ZDÊVLÚ]DSRĂUHGQLFWZHP
QXPHUXLQGHNVXOXEZDUWRĂFLMHJRDWU\EXWXname
3RQLĝV]HZ\ZRïDQLHVSRZRGXMHX]\VNDQLHGRVWÚSX
do drugiegoIRUPXODU]DQDVWURQLHDQDVWÚSQLH
SREUDQLHMHJRpierwszejNRQWURONL
document.forms[1].elements[0];
=NROHLSRQLĝV]HZ\ZRïDQLHVSRZRGXMHX]\VNDQLH
GRVWÚSXGRdrugiegoIRUPXODU]DQDVWURQLH
DQDVWÚSQLHSREUDQLHHOHPHQWXNWöUHJRDWU\EXW
namePDZDUWRĂÊpassword
document.forms[1].elements.password;
Uwaga:1XPHU\LQGHNVöZZNROHNFMLHOHPHQWöZ
PRJÈXOHF]PLDQLHSRPRG\ğNDFMLNRGX]QDF]QLNöZQDVWURQLH'ODWHJRWHĝXĝ\FLHQXPHUöZ
LQGHNVXSRZRGXMHSRZLÈ]DQLHVNU\SWX]NRGHP
]QDF]QLNöZ+70/ QLHVSHïQLRQDMHVWZLÚF]DVDGD
SRG]LDïXRGSRZLHG]LDOQRĂFL USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
KONTROLKI FORMULARZA
3RV]F]HJöOQHURG]DMHNRQWUROHNIRUPXODU]DXĝ\ZDMÈRGPLHQQ\FKSRïÈF]Hñ
Z\PLHQLRQ\FKSRQLĝHMZïDĂFLZRĂFLPHWRGL]GDU]Hñ=ZUöÊXZDJÚQD
PRĝOLZRĂÊZ\NRU]\VWDQLDPHWRGGRV\PXODFMLVSRVREXZMDNLXĝ\WNRZQLN
SRZLQLHQSUDFRZDÊ]NRQWURONDPLIRUPXODU]D
:’$¥&,:2¥m
23,6
value
:SROXWHNVWRZ\PMHVWWRWHNVWZSURZDG]DQ\SU]H]Xĝ\WNRZQLND:SR]RVWDï\FK
SU]\SDGNDFKMHVWWRZDUWRĂÊDWU\EXWXvalue
type
.LHG\NRQWURONDIRUPXODU]DMHVWWZRU]RQD]DSRPRFÈHOHPHQWX<input>ZïDĂFLZRĂÊWD
RNUHĂODURG]DMHOHPHQWXIRUPXODU]DQDSU]\NïDGWHNVW text KDVïR password SU]\FLVN
RSFML radio SROHZ\ERUX checkbox name
3RELHUDOXEXVWDZLDZDUWRĂÊDWU\EXWXname
defaultValue
:DUWRĂÊSRF]ÈWNRZDSRODOXEREV]DUXWHNVWRZHJRSRZ\JHQHURZDQLXVWURQ\
form
)RUPXODU]GRNWöUHJRQDOHĝ\NRQWUROND
disabled
:\ïÈF]HQLHHOHPHQWX<form>
checked
:VND]XMHF]\SROHZ\ERUX OXESU]\FLVN RSFMLSRZLQQRE\Ê]D]QDF]RQH:ïDĂFLZRĂÊ
WDSU]\MPXMHZDUWRĂÊERRORZVNÈZ-DYD6FULSW]D]QDF]HQLHSRODOXENOLNQLÚFLHSU]\FLVNX
R]QDF]DZDUWRĂÊtrue
defaultChecked
2NUHĂODF]\GDQHSROHZ\ERUX OXESU]\FLVN RSFMLPDE\Ê]D]QDF]RQHSRZF]\WDQLX
VWURQ\ ZDUWRĂÊERRORZVND selected
:VND]XMHF]\HOHPHQWOLVW\UR]ZLMDQHMPDE\Ê]D]QDF]RQ\ ZDUWRĂÊERRORZVNDtrue
R]QDF]D]D]QDF]HQLH 0(72'$
23,6
focus()
(OHPHQWVWDMHVLÚDNW\ZQ\
blur()
(OHPHQWVWDMHVLÚQLHDNW\ZQ\
select()
:\ELHUDLSRGĂZLHWOD]DZDUWRĂÊWHNVWRZÈHOHPHQWX QDSU]\NïDGZSRODFKWHNVWRZ\FK
REV]DUDFKWHNVWRZ\FKSRODFKKDVHïLWG click()
:\ZRïXMH]GDU]HQLHclickZSU]\FLVNDFKSRODFKZ\ERUXLSU]\FLVNDFKSRZRGXMÈF\FK
SU]HND]DQLHSOLNX3RQDGWRZ\ZRïXMH]GDU]HQLHsubmitZSU]\FLVNXZ\VïDQLDIRUPXODU]D
L]GDU]HQLHresetZSU]\FLVNX]HUXMÈF\PIRUPXODU]
='$5=(1,(
23,6
blur
:\ZRï\ZDQHJG\Xĝ\WNRZQLNRSXĂFLSROH
focus
:\ZRï\ZDQHJG\Xĝ\WNRZQLNSU]HMG]LHGRSROD
click
:\ZRï\ZDQHJG\Xĝ\WNRZQLNNOLNQLHHOHPHQW
change
:\ZRï\ZDQHJG\ZDUWRĂÊHOHPHQWXXOHJQLH]PLDQLH
input
:\ZRï\ZDQHJG\]PLDQLHXOHJQLHHOHPHQW<input>OXE<textarea>
keydown, keyup,
keypress
:\ZRï\ZDQHJG\Xĝ\WNRZQLNNRU]\VWD]NODZLDWXU\
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
579
WYSŁANIE FORMULARZA
7. 8WZRU]HQLHNRPXQLNDWX]SRZLWDQLHP
LXPLHV]F]HQLHJRZ]PLHQQHMRQD]ZLHmsg
:NRPXQLNDFLHW\PZLGQLHMHQD]ZDXĝ\WNRZQLND
SRGDQDSU]H]RGZLHG]DMÈFHJR
8. 3U]\JRWRZDQ\NRPXQLNDW]DVWÚSXMHQDVWURQLH
+70/IRUPXODU]VLHFLRZ\
:RPDZLDQ\PSU]\NïDG]LHSURVW\IRUPXODU]ORJRZDQLDSR]ZDODQDSRGDQLHQD]Z\Xĝ\WNRZQLND
LKDVïD.LHG\Xĝ\WNRZQLNZ\ĂOHIRUPXODU]]RVWDQLHRQ]DVWÈSLRQ\SU]H]NRPXQLNDW]SRZLWDQLHP
1DVWURQLHSRSUDZHMSU]HGVWDZLRQRNRG]DUöZQR
+70/MDNL-DYD6FULSWWHJRSU]\NïDGX
:GRNXPHQFLH+70/SOLNutilities.js RPDZLDQ\
ZSRGUR]G]LDOHķ3OLNXWLOLWLHVMVĵ MHVWGRïÈF]DQ\
SU]HGVNU\SWHPVXEPLWHYHQWMVSRQLHZDĝIXQNFMD
addEvent()MHVWXĝ\ZDQDGRXWZRU]HQLDSURFHGXU\REVïXJL]GDU]HñZW\PSU]\NïDG]LH:\PLHQLRQ\
SOLNutilities.jsEÚG]LHGRïÈF]DQ\ZHZV]\VWNLFK
SU]\NïDGDFKRPDZLDQ\FKZUR]G]LDOH
1. 8PLHV]F]HQLHVNU\SWXZSU]HGVWDZLRQHM
ZUR]G]LDOHZSRGUR]G]LDOHķ1DW\FKPLDVW
Z\NRQ\ZDQDIXQNFMDZ\UDĝHQLDĵIXQNFMLW\SX,,)(
QLHSRND]DQRWHJRZRPDZLDQ\PGLDJUDPLH 2. 8WZRU]HQLH]PLHQQHMRQD]ZLHform prze]QDF]RQHMGRSU]HFKRZ\ZDQLHOHPHQWX<form>
%ÚG]LHXĝ\ZDQDZREVHUZDWRU]H]GDU]Hñ
ZNROHMQ\PZLHUV]XNRGX
3. 2EVHUZDWRU]GDU]HñSRZRGXMHZ\NRQDQLH
IXQNFMLDQRQLPRZHMSRZ\VïDQLXIRUPXODU]D
VLHFLRZHJR=ZUöÊXZDJÚQDSU]HSURZDG]HQLH
NRQğJXUDFML]DSRPRFÈIXQNFMLaddEvent()
]GHğQLRZDQHMZSOLNXutilities.jsSU]HGVWDZLRQ\P
ZSRGUR]G]LDOHķ3OLNXWLOLWLHVMVĵ
4. $E\XQLHPRĝOLZLÊZ\VïDQLHIRUPXODU]D LMHGQRF]HĂQLHSR]ZROLÊQDZ\ĂZLHWOHQLHNRPXQLNDWX
Xĝ\WNRZQLNRZL ZIRUPXODU]X]RVWDMH]DVWRVRZDQDPHWRGDpreventDefault()
5. .ROHNFMDHOHPHQWöZWHJRIRUPXODU]DMHVW
SU]HFKRZ\ZDQDZ]PLHQQHMRQD]ZLHelements
6. $E\SREUDÊQD]ZÚXĝ\WNRZQLND]NROHNFML
elementsSRELHUDQHMHVWRGSRZLHGQLHSROHWHNVWRZHQDSRGVWDZLHZDUWRĂFLMHJRDWU\EXWXname
1DVWÚSQLHSREUDQLHWHNVWXZSURZDG]RQHJRSU]H]
Xĝ\WNRZQLNDMHVWPRĝOLZH]DSRPRFÈZïDĂFLZRĂFL
valueWHJRHOHPHQWX
2
Utworzenie zmiennej: form przechowującej
element <form>
3
Zdarzenie: submit w formularzu
FUNKCJA ANONIMOWA:
Powitanie użytkownika jego imieniem
Uniemożliwienie akcji domyślnej, czyli
wysłania formularza
4
5
6
7
Utworzenie zmiennych:
elements: kolekcja elementów
username: nazwa użytkownika
msg: komunikat z powitaniem
Zastąpienie formularza komunikatem
z powitaniem
8
2EVHUZDWRU]GDU]HñRF]HNXMHQDZ\VWÈSLHQLH
]GDU]HQLDsubmitZIRUPXODU]XVLHFLRZ\P DQLH
clickZSU]\FLVNXZ\V\ïDMÈF\PIRUPXODU] SRQLHZDĝIRUPXODU]PRĝQDZ\VïDÊQDLQQHVSRVRE\
QLHW\ONRNOLNDMÈFSU]\FLVNĽXĝ\WNRZQLNPRĝHQD
SU]\NïDGQDFLVQÈÊNODZLV]Enter
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
ZDARZENIE SUBMIT I POBRANIE
WARTOŚCI Z FORMULARZA
c13/submit-event.html
HTML
<form id=”login” action=”/login” method=”post”>...
<div class=”two-thirds column” id=”main”>
ğHOGVHW!
<legend>Logowanie</legend>
<label for=”username”>1D]ZDXĝ\WNRZQLND</label>
<input type=”text” id=”username” name=”username” />
<label for=”pwd”>+DVïR</label>
<input type=”password” id=”pwd” name=”pwd” />
<input type=”submit” value=”Zaloguj” />
ğHOGVHW!
</div> WZRWKLUGV!
</form> ...
<script src=”js/utilities.js”></script>
<script src=”js/submit-event.js”></script>
c13/js/submit-event.js
JAVASCRIPT
1
2
(function(){
var form = document.getElementById(’login’);
3
4
5
6
addEvent(form, ’submit’, function(e) { .LHG\Xĝ\WNRZQLNZ\ĂOHIRUPXODU]
e.preventDefault();
8QLHPRĝOLZLHQLHZ\VïDQLDIRUPXODU]D
var elements = this.elements;
3REUDQLHZV]\VWNLFKHOHPHQWöZIRUPXODU]D
var username = elements.username.value; 3REUDQLHZSURZDG]RQHMQD]Z\Xĝ\WNRZQLND
var msg
= ’Witaj, ’ + username;
8WZRU]HQLHNRPXQLNDWX]SRZLWDQLHP
document.getElementById(’main’).textContent = msg; :\ĂZLHWOHQLHNRPXQLNDWX
]SRZLWDQLHP
});
}());
7
8
3RZ\EUDQLXZÚ]ïDPRGHOX'20MHĝHOLSODQXMHV]
Xĝ\ÊJRSRQRZQLHWRGREU\PUR]ZLÈ]DQLHP
EÚG]LHMHJREXIRURZDQLH3RSUDZHMVWURQLHSU]HGVWDZLRQRZDULDQWSRZ\ĝV]HJRNRGXZNWöU\P
QD]ZDXĝ\WNRZQLNDLHOHPHQWmainVÈSU]HFKRZ\ZDQHZ]PLHQQ\FK]GHğQLRZDQ\FKQD]HZQÈWU]
REVHUZDWRUD]GDU]Hñ-HĝHOLXĝ\WNRZQLNSRVWDQRZL
SRQRZQLHZ\VïDÊIRUPXODU]WRSU]HJOÈGDUND
QLHEÚG]LHPXVLDïD]QöZZ\ELHUDÊW\FKVDP\FK
HOHPHQWöZ
3REUDQLHHOHPHQWXIRUP!
var form = document.
getElementById(’login’);
var elements = form.elements;
var elUsername = elements.username;
var elMain = document.
getElementById(’main’);
addEvent(form, ’submit’, function(e) {
e.preventDefault();
var msg = ’Witaj, ’ + elUsername.value;
elMain.textContent = msg;
});
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH ZMIANA RODZAJU ELEMENTU
<INPUT>
:W\PSU]\NïDG]LHSRGSROHPWHNVWRZ\P
VïXĝÈF\PGRSRGDQLDKDVïDXPLHĂFLP\SROH
Z\ERUX-HĝHOLXĝ\WNRZQLNMH]D]QDF]\KDVïR
VWDQLHVLÚZLGRF]QH-HVWWRPRĝOLZHG]LÚNLXĝ\FLX
ZïDĂFLZRĂFL-DYD6FULSWRQD]ZLHtypeL]PLDQLH
URG]DMXHOHPHQWX<input> z passwordQDtext
:ïDĂFLZRĂÊtypeZPRGHOX'20RGSRZLDGD
DWU\EXWRZLtypeZ+70/ 8. :SU]HFLZQ\PUD]LHZDUWRĂFLÈMHVWpassword
9. -HĝHOLSUöED]PLDQ\URG]DMXSRODZ\ZRïXMH
EïÈGWRNODX]XODcatchSRZRGXMHZ\NRQDQLH
LQQHJREORNXNRGX
10. :\ĂZLHWOHQLHNRPXQLNDWXXĝ\WNRZQLNRZL
2
Utworzenie zmiennych:
pwd: pole tekstowe dla hasła
chk: pole wyboru
=PLDQDZïDĂFLZRĂFLtypeSRZRGXMHZ\JHQHURZD3
QLHEïÚGXZSU]HJOÈGDUFH,( RUD]MHMZF]HĂQLHMV]\FKZHUVMDFK DZLÚFNRG]RVWDïXPLHV]F]RQ\
ZNRQVWUXNFMLtry-catch-HĝHOLSU]HJOÈGDUND
Z\NU\MHEïÈGVNU\SWEÚG]LHNRQW\QXRZDïG]LDïDQLH
LZ\NRQDGUXJÈF]ÚĂÊNRGX
4
5
Zdarzenie: event w polu wyboru
FUNKCJA ANONIMOWA:
Zmiana wartości atrybutu type pola hasła
Pobranie klikniętego elementu
Próba przetworzenia poniższego bloku kodu
6
Czy pole wyboru
jest zaznaczone?
N
8
7
Atrybutowi type
przypisz wartość
password
1. 8PLHV]F]HQLHVNU\SWXZIXQNFMLW\SX,,)( QLH
SRND]DQRWHJRZRPDZLDQ\PGLDJUDPLH 2. 8PLHV]F]HQLHSRODGODKDVïDRUD]SRODZ\ERUX
Z]PLHQQ\FK
3. 2EVHUZDWRU]GDU]HñSRZRGXMHZ\ZRïDQLH
IXQNFMLDQRQLPRZHMJG\]PLDQLHXOHJQLHSROH
Z\ERUXZ\ĂZLHWODQHSRGSROHPGODKDVïD
4. (OHPHQWGRFHORZ\ SROHZ\ERUX GOD]GDU]HQLD
MHVWSU]HFKRZ\ZDQ\Z]PLHQQHMRQD]ZLH
target-DN]REDF]\ïHĂZUR]G]LDOHZ\ZRïDQLH
e.targetG]LDïDZZLÚNV]RĂFLSU]HJOÈGDUHN
1DWRPLDVWZ\ZRïDQLHe.srcElementMHVWXĝ\ZDQH
W\ONRZSU]\SDGNXVWDUV]\FKZHUVML,(
5. .RQVWUXNFMDtry-catchVSUDZG]DF]\Z\VWÈSLï
EïÈGSRGF]DVXDNWXDOQLDQLDDWU\EXWXtype
6. -HĝHOLSROHZ\ERUX]RVWDïR]D]QDF]RQH
7. :DUWRĂÊDWU\EXWXtypeSRODWHNVWRZHJRGOD
KDVïD]RVWDMH]PLHQLRQDQDtext
N
9
T
Atrybutowi
type przypisz
wartość text
Blok catch:
Czy wystąpił błąd?
T
Wyświetlenie komunikatu: <= IE8 nie
umożliwia zmiany rodzaju elementu
10
-DN]REDF]\ïHĂZUR]G]LDOHEïÈGPRĝH
VSRZRGRZDÊ]DWU]\PDQLHZ\NRQ\ZDQLDVNU\SWX
-HĝHOLZLHV]ĝHFRĂPRĝHVSRZRGRZDÊEïÈG
ZSHZQ\FKSU]HJOÈGDUNDFKWRXPLHV]F]HQLHNRGX
ZNRQVWUXNFMLtry-catchSR]ZDODLQWHUSUHWHURZL
QDNRQW\QXDFMÚG]LDïDQLDZUD]]DOWHUQDW\ZQ\P
]HVWDZHPNRGX
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
WYŚWIETLENIE HASŁA
c13/input-type.html
HTML
ğHOGVHW!
<legend>Logowanie</legend>
<label for=”username”>1D]ZDXĝ\WNRZQLND</label>
<input type=”text” id=”username” name=”username” />
<label for=”pwd”>+DVïR</label>
<input type=”password” id=”pwd” name=”pwd” />
<input type=”checkbox” id=”showPwd”>
<label for=”showPwd”>SRNDĝKDVïR</label>
<input type=”submit” value=”Zaloguj” />
ğHOGVHW!
<script src=”js/utilities.js”></script>
<script src=”js/input-type.js”></script>
JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
c13/js/input-type.js
(function(){
var pwd = document.getElementById(’pwd’);
3REUDQLHSRODKDVïD
var chk = document.getElementById(’showPwd’); 3REUDQLHSRODZ\ERUX
addEvent(chk, ’change’, function(e) {
*G\Xĝ\WNRZQLNNOLNQLHSROHZ\ERUX
var target = e.target || e.srcElement;
3REUDQLHWHJRHOHPHQWX
try {
3UöEDZ\NRQDQLDSRQLĝV]HJRIUDJPHQWXNRGX
if (target.checked) {
-HĝHOLSROHZ\ERUXMHVW]D]QDF]RQH
pwd.type = ’text’;
3U]\SLVDQLHDWU\EXWRZLW\SHZDUWRĂFLWH[W
} else {
:SU]HFLZQ\PUD]LH
pwd.type = ’password’;
3U]\SLVDQLHDWU\EXWRZLW\SHZDUWRĂFLSDVVZRUG
}
} catch(error) {
-HĝHOL]PLDQDVSRZRGXMHZ\VWÈSLHQLHEïÚGX
DOHUW ij3U]HJOÈGDUNDQLHPRĝH]PLHQLÊURG]DMXSRODij :\ĂZLHWOHQLHRGSRZLHGQLHJRNRPXQLNDWX
}
});
}());
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH PRZYCISKI
WYSYŁAJĄCE
FORMULARZ
3U]HGVWDZLRQ\WXWDMVNU\SWZ\ïÈF]\SU]\FLVN
Z\V\ïDMÈF\IRUPXODU]
3RSLHUZV]\PZF]\WDQLXVNU\SWX=GDU]HQLH
changeQDVWÚSQLHVSUDZG]DF]\SROHKDVïD
XOHJïR]PLDQLHLZïÈF]DSU]\FLVNJG\Xĝ\WNRZQLN]DF]QLHZSLV\ZDÊKDVïR
3RZ\VïDQLXIRUPXODU]D DE\XQLHPRĝOLZLÊMHJR
ZLHORNURWQHZ\VïDQLH •
•
2
3
Utworzenie zmiennych:
form: element <form>
password: pole przeznaczone na hasło
submit: przycisk wysyłający formularz
submitted: przypisanie wartości false (formularz
nie został wysłany)
4
Wyłączenie przycisku wysyłającego formularz
oraz przypisanie atrybutowi class wartości
disabled
5
Zdarzenie: input w polu hasła
FUNKCJA ANONIMOWA:
Sprawdzenie, czy przycisk wysyłający
formularz powinien być włączony
Pobranie elementu docelowego
(pole hasła)
6
7
N
Przypisanie właściwości disabled
wartości false
3U]\FLVN]RVWDMHZ\ïÈF]RQ\]DSRPRFÈZïDĂFLZRĂFL
disabled2GSRZLDGDRQDDWU\EXWRZL+70/
RQD]ZLHdisabledLPRĝHE\ÊVWRVRZDQDZGRZROQ\FKHOHPHQWDFKIRUPXODU]D]NWöU\PLSUDFXMH
Xĝ\WNRZQLN:DUWRĂÊtrueWHMZïDĂFLZRĂFLSRZRGXMH 8
Z\ïÈF]HQLHSU]\FLVNXQDWRPLDVWfalseZïÈF]DJR
1. 8PLHV]F]HQLHVNU\SWXZIXQNFMLW\SX,,)( QLH
SRND]DQRWHJRZRPDZLDQ\PGLDJUDPLH 2. )RUPXODU]SROHWHNVWRZHGODKDVïDLSU]\FLVN
Z\V\ïDMÈF\IRUPXODU]VÈSU]HFKRZ\ZDQH
9
Z]PLHQQ\FK
3. =PLHQQDsubmittedMHVWRNUHĂODQDPLDQHP
opcjiSU]HFKRZXMHLQIRUPDFMHRW\PF]\IRUPXODU]]RVWDïMXĝZ\VïDQ\
4. 3U]\FLVNZ\V\ïDMÈF\IRUPXODU]]RVWDMHZ\ïÈF]RQ\QDSRF]ÈWNXVNU\SWX ]DPLDVWZNRG]LH+70/ DZLÚFIRUPXODU]PRĝHE\ÊQDGDOIXQNFMRQDOQ\GOD 10
Xĝ\WNRZQLNöZNWöU]\Z\ïÈF]\OLREVïXJÚ-DYD6FULSW
ZSU]HJOÈGDUNDFK
5. 2EVHUZDWRU]GDU]HñRF]HNXMHQD]GDU]HQLH
inputZSROXSU]H]QDF]RQ\PQDSRGDQLHKDVïD
LSRZRGXMHZ\ZRïDQLHIXQNFMLDQRQLPRZHM
6. (OHPHQWGRFHORZ\GOD]GDU]HQLDMHVWSU]HFKRZ\ZDQ\Z]PLHQQHMtarget
7. -HĝHOLZSROXSU]H]QDF]RQ\PQDKDVïR]RVWDïR
FRNROZLHNZSLVDQHQDVWÚSXMHZïÈF]HQLHSU]\FLVNX
Z\V\ïDMÈFHJRIRUPXODU]
8. 8DNWXDOQLHQLHVW\OX
Czy formularz
został wysłany?
N
T
Przypisanie właściwości disabled
wartości true
Czy element
docelowy ma
wartość?
Przypisanie
atrybutowi class
wartości disabled
T
Przypisanie
atrybutowi class
wartości enabled
Zdarzenie: submit w elemencie <form>
FUNKCJA ANONIMOWA:
Sprawdzenie, czy formularz może być wysłany
Czy przycisk
wysyłający formularz
jest wyłączony lub
czy formularz został
wysłany?
N
12
Zezwolenie na wysłanie
formularza, a następnie:
• wyłączenie formularza
• uaktualnienie zmiennej
wskazującej, czy formularz
został wysłany
• przypisanie atrybutowi
class wartości disabled
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
T
11
Uniemożliwienie
wysłania
formularza
9. 'UXJLREVHUZDWRU]GDU]HñVSUDZG]DF]\
Xĝ\WNRZQLNZ\VïDïIRUPXODU]:öZF]DVQDVWÚSXMH
Z\NRQDQLHIXQNFMLDQRQLPRZHM
10. -HĝHOLSU]\FLVNZ\V\ïDMÈF\IRUPXODU]MHVW
Z\ïÈF]RQ\OXEIRUPXODU]]RVWDïZ\VïDQ\QDVWÚSXMH
Z\NRQDQLHGUXJLHJREORNXNRGX
11. 8QLHPRĝOLZLHQLHGRP\ĂOQHMDNFMLIRUPXODU]D
Z\VïDQLH DVïRZRNOXF]RZHreturn powoduje
RSXV]F]HQLHIXQNFML
12. -HĝHOLNURNQLH]RVWDïZ\NRQDQ\R]QDF]D
WRĝHIRUPXODU]MHVWZ\VïDQ\
SU]\FLVNZ\V\ïDMÈF\IRUPXODU]MHVW
c13/all-checkboxes.html
HTML
Z\ïÈF]RQ\]PLHQQDsubmitted
<label for=”pwd”>1RZHKDVïR</label>
MHVWXDNWXDOQLRQDZDUWRĂFLÈtrue
<input type=”password” id=”pwd” />
DSRQDGWRXDNWXDOQLRQ\MHVWDWU\EXW
LQSXWW\SH ĵVXEPLWĵLG ĵVXEPLWĵYDOXH ĵ:\ĂOLMĵ!
classHOHPHQWX
WYŁĄCZENIE
PRZYCISKU
WYSYŁAJĄCEGO
FORMULARZ
c13/js/disable-submit.js
JAVASCRIPT
1
2
(function(){
var form
var password
var submit
= document.getElementById(’newPwd’);
= document.getElementById(’pwd’);
= document.getElementById(’submit’);
3
var submitted = false;
4
submit.disabled = true;
submit.className = ’disabled’;
5
6
7
8
9
10
11
12
)RUPXODU]
3ROHKDVïD
3U]\FLVNZ\V\ïDMÈF\IRUPXODU]
&]\IRUPXODU]]RVWDïZ\VïDQ\"
:\ïÈF]HQLHSU]\FLVNXZ\V\ïDMÈFHJRIRUPXODU]
1DGDQLHVW\OXSU]\FLVNRZLZ\V\ïDMÈFHPXIRUPXODU]
=GDU]HQLHLQSXWVSUDZG]HQLHF]\QDOHĝ\ZïÈF]\ÊSU]\FLVNZ\V\ïDMÈF\IRUPXODU]
addEvent(password, ’input’, function(e) { 3RZ\VWÈSLHQLX]GDU]HQLDLQSXWZSROXKDVïD
var target = e.target || e.srcElement;
(OHPHQWGRFHORZ\]GDU]HQLD
submit.disabled = submitted || !target.value;
8VWDZLHQLHZïDĂFLZRĂFLGLVDEOHG
-HĝHOLIRUPXODU]]RVWDïZ\VïDQ\OXESROHKDVïDMHVWSXVWHQDOHĝ\XVWDZLÊ
ZDUWRĂÊ&66GLVDEOHG
VXEPLWFODVV1DPH WDUJHWYDOXH__VXEPLWWHG "ijGLVDEOHGijijHQDEOHGij
});
=GDU]HQLHVXEPLWZ\ïÈF]HQLHIRUPXODU]DDE\QLHPöJïE\ÊSRQRZQLHZ\VïDQ\
addEvent(form, ’submit’, function(e) {
3RZ\VWÈSLHQLX]GDU]HQLDVXEPLW
if (submit.disabled || submitted) {
-HĝHOLSU]\FLVNMHVWZ\ïÈF]RQ\/8%IRUPXODU]
]RVWDïZ\VïDQ\
e.preventDefault();
=DWU]\PDQLHZ\V\ïDQLDIRUPXODU]D
return;
=DWU]\PDQLHSU]HWZDU]DQLDIXQNFML
}
:SU]HFLZQ\PUD]LHQDOHĝ\NRQW\QXRZDÊ
submit.disabled = true;
:\ïÈF]HQLHSU]\FLVNXZ\V\ïDMÈFHJRIRUPXODU]
submitted = true;
8DNWXDOQLHQLH]PLHQQHMVXEPLWWHG
submit.className = ’disabled’;
8DNWXDOQLHQLHVW\OX
7\ONRZFHODFKGHPRQVWUDF\MQ\FK]REDF]FR]RVWDïRZ\VïDQHLSU]HNRQDMVLÚ
ĝHSU]\FLVNZ\V\ïDMÈF\IRUPXODU]MHVWZ\ïÈF]RQ\
e.preventDefault();
8QLHPRĝOLZLHQLHZ\VïDQLDIRUPXODU]D
DOHUW ij+DVïRWRijSDVVZRUGYDOXH :\ĂZLHWOHQLHNRPXQLNDWX
});
}());
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH POLA WYBORU
8. 3REUDQLHFHOXRSFMLNOLNQLÚWHMSU]H]Xĝ\WNRZQLND
9. 3RXVXQLÚFLX]D]QDF]HQLDRSFMLQDOHĝ\WDNĝH
XVXQÈÊ]D]QDF]HQLHRSFMLWszystkie SRQLHZDĝ
ZöZF]DVQLHVÈMXĝ]D]QDF]RQHZV]\VWNLHRSFMH 10. ,WHUDFMDSU]H]RSFMHLGRGDQLHREVHUZDWRUD
]GDU]Hñ*G\Z\VWÈSL]GDU]HQLHchange dla
GRZROQHMRSFMLQDVWÚSXMHZ\ZRïDQLHIXQNFML
clearAllOption()
:W\PSU]\NïDG]LHSURVLP\Xĝ\WNRZQLNDDE\
ZVND]DïVZRMH]DLQWHUHVRZDQLD8ĝ\WNRZQLNPD
PRĝOLZRĂÊ]D]QDF]HQLDOXEXVXQLÚFLD]D]QDF]HQLD
]HZV]\VWNLFKSöOZ\ERUX:NRG]LH]QDMGXMÈVLÚ
GZLHSURFHGXU\REVïXJL]GDU]Hñ
3LHUZV]DMHVWZ\ZRï\ZDQDSR]D]QDF]HQLX
wszystkichSöOZ\ERUX.RGSU]HSURZDG]D
LWHUDFMHSU]H]RSFMHLXDNWXDOQLDMH
'UXJDMHVWZ\ZRï\ZDQDSR]PLDQLHopcji-HĝHOL
]MHGQHMRSFML]RVWDQLHXVXQLÚWH]D]QDF]HQLH
QDOHĝ\WRVDPR]URELÊ]RSFMÈWszystkie
•
•
2
6
Utworzenie zmiennych:
form: element <form>
elements: element znajdujące się w <form>
options: tablica pól wyboru
all: pole wyboru pozwalające na włączenie lub
wyłączenie wszystkich opcji
Zdarzenie: change w elemencie, którego atrybut
id ma wartość all
3
FUNKCJA: updateAll()
Zaznacza lub usuwa zaznaczenie
wszystkich pól wyboru
4
Iteracja przez wszystkie pola
wyboru
=GDU]HQLHchangePRĝQDZ\NRU]\VWDÊGRZ\NU\FLD
]PLDQ\ZDUWRĂFLSRODZ\ERUXSU]\FLVNXRSFMLOXE
OLVW\UR]ZLMDQHM:RPDZLDQ\PSU]\NïDG]LHVïXĝ\ 5
RQRGRZVND]DQLDNLHG\Xĝ\WNRZQLN]D]QDF]\ïOXE
XVXQÈï]D]QDF]HQLH]SRODZ\ERUX3ROHZ\ERUX
PRĝHE\ÊXDNWXDOQLRQH]DSRPRFÈZïDĂFLZRĂFL
checkedNWöUDRGSRZLDGDDWU\EXWRZL+70/
RQD]ZLHchecked
10
1. 8PLHV]F]HQLHVNU\SWXZIXQNFMLW\SX,,)( QLH
SRND]DQRWHJRZRPDZLDQ\PGLDJUDPLH 2. )RUPXODU]ZV]\VWNLHMHJRHOHPHQW\RSFMHRUD] 7
SROHZ\ERUXWszystkieSRODZ\ERUXVÈSU]HFKRZ\ZDQHZ]PLHQQ\FK
8
3. =DGHNODURZDQLHIXQNFMLupdateAll()
4. ,WHUDFMDSU]H]ZV]\VWNLHRSFMH
5. 'ODNDĝGHMRSFMLZïDĂFLZRĂÊcheckedRWU]\PXMH
9
WDNÈVDPÈZDUWRĂÊMDNZïDĂFLZRĂÊchecked
w opcji Wszystkie
6. 2EVHUZDWRU]GDU]HñF]HNDDĝXĝ\WNRZQLN
NOLNQLHSROHZ\ERUXWszystkieFRSRZRGXMH
Z\ZRïDQLH]GDU]HQLDchangeLZ\ZRïDQLHIXQNFML
updateAll()
7. =GHğQLRZDQLHIXQNFMLclearAllOption()
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
Przypisanie wszystkim polom
wyboru tej samej wartości
właściwości checked
Przejście do kolejnego pola wyboru
Iteracja przez wszystkie pola wyboru
Zdarzenie: change w polu wyboru opcji
FUNKCJA: clearAllOption()
Usunięcie zaznaczenia opcji :V]\VWNLH
Pobranie elementu klikniętego przez
użytkownika
N
Czy nie jest
zaznaczony?
T
Usunięcie zaznaczenia opcji :V]\VWNLH
Przejście do kolejnego pola wyboru
ZAZNACZENIE WSZYSTKICH
PÓL WYBORU
c13/all-checkboxes.html
HTML
<label><input
<label><input
<label><input
<label><input
type=”checkbox”
type=”checkbox”
type=”checkbox”
type=”checkbox”
c13/js/all-checkboxes.js
JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
(function(){
var form
var elements
var options
var all
value=”all” id=”all”>Wszystkie</label>
name=”genre” value=”animation”>Animowane</label>
name=”genre” value=”docs”>Dokumentalne</label>
name=”genre” value=”shorts”>.UöWNRPHWUDĝRZH</label>
=
=
=
=
document.getElementById(’interests’); 3REUDQLHIRUPXODU]D
form.elements;
:V]\VWNLHHOHPHQW\ZIRUPXODU]X
elements.genre;
7DEOLFDSRODZ\ERUX]DLQWHUHVRZDñ
document.getElementById(’all’);
3ROHZ\ERUXij:V]\VWNLHij
function updateAll() {
for (var i = 0; i < options.length; i++) {
,WHUDFMDSU]H]SRODZ\ERUX
options[i].checked = all.checked;
8DNWXDOQLHQLHZïDĂFLZRĂFLFKHFNHG
}
}
addEvent(all, ’change’, updateAll);
'RGDQLHREVHUZDWRUD]GDU]Hñ
function clearAllOption(e) {
var target = e.target || e.srcElement; // Pobranie elementu docelowego
GOD]GDU]HQLD
if (!target.checked) {
-HĝHOLHOHPHQWQLHMHVW]D]QDF]RQ\
all.checked = false;
8VXQLÚFLH]D]QDF]HQLDRSFMLij:V]\VWNLHij
}
}
for (var i = 0; i < options.length; i++) {
,WHUDFMDSU]H]SRODZ\ERUX
addEvent(options[i], ’change’, clearAllOption); 'RGDQLHREVHUZDWRUD]GDU]Hñ
}
}());
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH PRZYCISKI OPCJI
7HQSU]\NïDGSR]ZDODXĝ\WNRZQLNRZLQDZVND]DQLHěUöGïD]NWöUHJRGRZLHG]LDïVLÚRZLWU\QLH
=DNDĝG\PUD]HPJG\Xĝ\WNRZQLNNOLNDSU]\FLVN
RSFMLNRGVSUDZG]DRSFMÚZ\EUDQÈSU]H]Xĝ\WNRZQLNDLSRGHMPXMHMHGQR]GZöFKPRĝOLZ\FK
G]LDïDñ
-HĝHOLZ\EUDQRRSFMÚInne]RVWDQLHZ\ĂZLHWORQHSROHWHNVWRZHSR]ZDODMÈFHQDSRGDQLH
GDOV]\FKLQIRUPDFMLV]F]HJöïRZ\FK
-HĝHOLZ\EUDQRGRZROQÈ]SLHUZV]\FKGZöFK
RSFMLSROHWHNVWRZH]RVWDQLHXNU\WHDMHJR
ZDUWRĂÊEÚG]LHXVXQLÚWD
•
8. -HĝHOLDWU\EXWhidePDZDUWRĂÊhide]DZDUWRĂÊSRODWHNVWRZHJR]RVWDMHXVXQLÚWD DE\SR
Z\ĂZLHWOHQLXSROHWHNVWRZHE\ïRSXVWH 2
•
3
Utworzenie zmiennych:
form: formularz
options: wszystkie przyciski opcji
other: tylko przycisk Inne
otherText: tylko pole other-text
hide: zawiera informacje o widoczności pola
other-info
Ustawienie atrybutowi class elementu
other-text wartości, która ten element ukrywa
Iteracja przez wszystkie przyciski opcji
4
Zdarzenie: click w tym elemencie
przycisku opcji
5
FUNKCJA: radioChanged()
Wyświetla lub ukrywa pole tekstowe
6
1. 8PLHV]F]HQLHVNU\SWXZIXQNFMLW\SX,,)( QLH
SRND]DQRZRPDZLDQ\PGLDJUDPLH 2. ']LDïDQLHNRGXUR]SRF]\QDVLÚRGXVWDZLHQLD
]PLHQQ\FKSU]H]QDF]RQ\FKGRSU]HFKRZ\ZDQLD
IRUPXODU]DZV]\VWNLFKSU]\FLVNöZRSFMLSU]\FLVNX
GODRSFMLInneRUD]SRODWHNVWRZHJR
7
3. 3ROHWHNVWRZHMHVWXNU\WH.RG-DYD6FULSW
XDNWXDOQLDZDUWRĂÊDWU\EXWXclassDE\IRUPXODU]
QDGDOG]LDïDïQDZHWMHĂOLXĝ\WNRZQLNPDZSU]HJOÈGDUFHZ\ïÈF]RQÈREVïXJÚ-DYD6FULSW
8
4. =DSRPRFÈSÚWOLforREVHUZDWRU]GDU]Hñ
]RVWDMHGRGDQ\GRNDĝGHJRSU]\FLVNXRSFML3R
NOLNQLÚFLXGRZROQHJRSU]\FLVNXRSFMLZ\ZRï\ZDQD
MHVWIXQNFMDradioChanged()
5. =DGHNODURZDQLHIXQNFMLradioChanged()
6. 3RZ\EUDQLXSU]\FLVNXInneZDUWRĂFLÈ]PLHQQHM
hideMHVWSXVW\FLÈJWHNVWRZ\:SU]HFLZQ\PUD]LH
ZDUWRĂFLÈMHVWhide
7. =PLHQQDhideMHVWXĝ\ZDQDGRXVWDZLHQLD
ZDUWRĂFLDWU\EXWXclassSRODWHNVWRZHJR%UDN
ZDUWRĂFLR]QDF]DZ\EöULQQHMRSFML]NROHL
ZDUWRĂÊhideSRZRGXMHXNU\FLHSRODWHNVWRZHJR
588 USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
N
Czy zaznaczony jest
przycisk Inne?
Przypisanie
zmiennej hide
wartości hide
T
Usunięcie
wartości zmiennej
hide
Przypisanie atrybutowi class wartości
zmiennej hide
N
Czy
wartość zmiennej
hidden jest
truthy?
T
Usunięcie tekstu elementu
Przejście do kolejnego przycisku opcji
PRZYCISKI OPCJI
c13/show-option.html
HTML
<form id=”how-heard” action=”/heard” method=”post”>
...
<input type=”radio” name=”heard” value=”search” id=”search” />
<label for=”search”>Wyszukiwarka internetowa</label><br>
<input type=”radio” name=”heard” value=”print” id=”print” />
<label for=”print”>Gazeta lub magazyn</label><br>
<input type=”radio” name=”heard” value=”other” id=”other” />
<label for=”other”>Inne</label><br>
<input type=”text” name=”other-input” id=”other-text” />
LQSXWLG ĵVXEPLWĵW\SH ĵVXEPLWĵYDOXH ĵ:\ĂOLMĵ!
...
</form>
c13/js/show-option.js
JAVASCRIPT
1
2
(function(){
var form, options, other, otherText, hide;
form
= document.getElementById(’how-heard’);
options
= form.elements.heard;
other
= document.getElementById(’other’);
otherText = document.getElementById(’other-text’);
=DGHNODURZDQLH]PLHQQ\FK
// Pobranie formularza
3REUDQLHSU]\FLVNöZRSFML
3U]\FLVN,QQH
// Pole tekstowe pod
SU]\FLVNLHP,QQH
8NU\FLHSRODWHNVWRZHJR
3
otherText.className = ’hide’;
4
for (var i = [0]; i < options.length; i++) {
,WHUDFMDSU]H]SU]\FLVNLRSFML
addEvent(options[i], ’click’, radioChanged); 'RGDQLHREVHUZDWRUD]GDU]Hñ
}
5
6
7
8
function radioChanged() {
KLGH RWKHUFKHFNHG"ijijijKLGHij&]\]D]QDF]RQ\MHVWSU]\FLVN,QQH"
otherText.className = hide;
:LGRF]QRĂÊSRODWHNVWRZHJR
if (hide) {
-HĝHOLSROHWHNVWRZHMHVWXNU\WH
otherText.value = ’’;
QDOHĝ\XVXQÈÊMHJR]DZDUWRĂÊ
}
}
}());
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH LISTY ROZWIJANE
(OHPHQW<select>MHVW]QDF]QLHEDUG]LHMVNRPSOLNRZDQ\QLĝLQQHNRQWURONL
IRUPXODU]\:Ú]HïPRGHOX'20NRQWURONL<select>PDZLHOHGRGDWNRZ\FK
ZïDĂFLZRĂFLLPHWRG(OHPHQW\<option>NRQWURONL]DZLHUDMÈZDUWRĂFL
NWöUHPRJÈE\ÊZ\ELHUDQHSU]H]Xĝ\WNRZQLND
:RPDZLDQ\PSU]\NïDG]LH]QDMGXMÈVLÚGZLH
OLVW\UR]ZLMDQH.LHG\Xĝ\WNRZQLNZ\ELHU]HRSFMÚ
]SLHUZV]HMOLVW\GUXJD]RVWDQLHXDNWXDOQLRQD
RGSRZLHGQLPLRSFMDPL
:SLHUZV]HMOLĂFLHUR]ZLMDQHMXĝ\WNRZQLNPRĝH
Z\EUDÊZ\SRĝ\F]HQLHDSDUDWXIRWRJUDğF]QHJROXE
SURMHNWRUD3RGRNRQDQLXZ\ERUXRGSRZLHGQLHRSFMH]RVWDMÈXPLHV]F]RQHZGUXJLHMOLĂFLHUR]ZLMDQHM
3RQLHZDĝWHQSU]\NïDGMHVWQLHFREDUG]LHMVNRPSOLNRZDQ\QLĝSU]HGVWDZLRQHGRWÈGZUR]G]LDOHNRG
+70/LU\VXQHNSRND]DQRQDVWURQLHSRSUDZHM
QDWRPLDVWRPöZLHQLHSOLNX-DYD6FULSW]QDMG]LHV]
ZSRGUR]G]LDOHķ/LVW\UR]ZLMDQHĵ
.LHG\Xĝ\WNRZQLNZ\ELHU]HRSFMÚ]OLVW\UR]ZLMDQHMQDVWÚSXMHZ\ZRïDQLH]GDU]HQLDchange
=GDU]HQLHWRMHVWF]ÚVWRZ\NRU]\VW\ZDQHGR
XUXFKDPLDQLDVNU\SWöZJG\Xĝ\WNRZQLN]PLHQL
ZDUWRĂÊQDOLĂFLHUR]ZLMDQHM
(OHPHQW<select>PDUöZQLHĝSHZQHGRGDWNRZH
ZïDĂFLZRĂFLLPHWRG\FKDUDNWHU\VW\F]QHGODWHM
NRQWURONLZ\PLHQLRQRMHZSRQLĝV]\FKWDEHODFK
-HĝHOLFKFHV]PLHÊPRĝOLZRĂÊSUDF\]SRV]F]HJöOQ\PLRSFMDPLNWöUHPRJÈE\ÊZ\ELHUDQHSU]H]
Xĝ\WNRZQLNDVNRU]\VWDM]NROHNFMLHOHPHQWöZ
<option>
:’$¥&,:2¥m
23,6
options
.ROHNFMDZV]\VWNLFKHOHPHQWöZ<option>
selectedIndex
1XPHULQGHNVXRSFMLNWöUDMHVWDNWXDOQLHZ\EUDQD
length
/LF]EDGRVWÚSQ\FKRSFML
multiple
3R]ZDODXĝ\WNRZQLNRZLQDZ\EöUZLHOXRSFML]OLVW\ WDNDPRĝOLZRĂÊMHVWU]DGNR
VWRVRZDQDSRQLHZDĝQLH]DSHZQLDQDMOHSV]\FKZUDĝHñXĝ\WNRZQLNRP selectedOptions
.ROHNFMDZV]\VWNLFKZ\EUDQ\FKHOHPHQWöZ<option>
0(72'$
23,6
add(option, before)
'RGDQLHHOHPHQWXGROLVW\
3LHUZV]\PSDUDPHWUHPMHVWQRZDRSFMDQDWRPLDVWGUXJDWRHOHPHQWSU]HG
NWöU\PPD]RVWDÊZVWDZLRQ\QRZ\:SU]\SDGNXEUDNXZDUWRĂFLGUXJLHJR
SDUDPHWUXQRZDRSFMD]RVWDQLHGRGDQDQDNRñFXLVWQLHMÈF\FK
remove(index)
8VXQLÚFLHHOHPHQWX]OLVW\
0HWRGDPDW\ONRMHGHQSDUDPHWUĽQXPHULQGHNVXRSFMLSU]H]QDF]RQHMGR
XVXQLÚFLD
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
LISTY ROZWIJANE
c13/populate-selectbox.html
HTML
<label for=”equipmentType”>rodzaj</label>
<select id=”equipmentType” name=”equipmentType”>
<option value=”choose”>3URV]ÚZ\EUDÊURG]DM</option>
<option value=”cameras”>DSDUDWIRWRJUDğF]Q\</option>
<option value=”projectors”>projektor</option>
</select><br>
<label for=”model”>model</label>
<select id=”model” name=”model”>
<option>3URV]ÚQDMSLHUZZ\EUDÊURG]DMVSU]ÚWX</option>
</select>
LQSXWLG ĵVXEPLWĵW\SH ĵVXEPLWĵYDOXH ĵ:\ĂOLMĵ!
WYNIK
1
2
3
4
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
LISTY ROZWIJANE
1. 8PLHV]F]HQLHVNU\SWXZIXQNFMLW\SX,,)( QLH
SRND]DQRWHJRZRPDZLDQ\PGLDJUDPLH 2. =PLHQQHSU]HFKRZXMÈGZLHOLVW\UR]ZLMDQH
3. 8WZRU]HQLHGZöFKRELHNWöZSU]H]QDF]RQ\FK
GRSU]HFKRZ\ZDQLDRSFMLXPLHV]F]DQ\FKQD
GUXJLHMOLĂFLHUR]ZLMDQHM SLHUZV]\RELHNW]DZLHUD
PRGHOHDSDUDWöZIRWRJUDğF]Q\FKQDWRPLDVWGUXJL
ĽSURMHNWRUöZ 4. .LHG\Xĝ\WNRZQLN]PLHQLZDUWRĂÊQDSLHUZV]HM
OLĂFLHUR]ZLMDQHMREVHUZDWRU]GDU]HñZ\ZRïXMH
IXQNFMÚDQRQLPRZÈ
5. )XQNFMDDQRQLPRZDVSUDZG]DF]\SLHUZV]D
OLVWDUR]ZLMDQDPDZDUWRĂÊchoose
6. -HĝHOLWDNGUXJDOLVWDUR]ZLMDQDMHVWXDNWXDOQLDQDSRSURVWXMHGQÈRSFMÈNWöUDLQIRUPXMH
Xĝ\WNRZQLNDRPRĝOLZRĂFLZ\ERUXW\SX
7. 1LHMHVWZ\PDJDQHGDOV]HSU]HWZDU]DQLHLVïRZR
NOXF]RZHreturnSRZRGXMHRSXV]F]HQLHIXQNFML
DQRQLPRZHM DĝGRFKZLOLJG\Xĝ\WNRZQLNSRQRZQLH]PLHQLZDUWRĂÊSLHUZV]HMOLVW\UR]ZLMDQHM 8. -HĝHOLZ\EUDQ\]RVWDQLHURG]DMVSU]ÚWXIXQNFMD
DQRQLPRZDNRQW\QXXMHG]LDïDQLHLQDVWÚSXMH
XWZRU]HQLH]PLHQQHMmodels3U]HFKRZ\ZDQ\
EÚG]LHMHGHQ]RELHNWöZ]GHğQLRZDQ\FK
ZNURNX DSDUDW\IRWRJUDğF]QHOXESURMHNWRU\ 2GSRZLHGQLRELHNWMHVWSRELHUDQ\]DSRPRFÈ
IXQNFMLgetModels()]DGHNODURZDQHMQDNRñFX
VNU\SWX )XQNFMDSRELHUDMHGHQSDUDPHWUthis.valueRGSRZLDGDMÈF\ZDUWRĂFLRSFML
Z\EUDQHMZSLHUZV]HMOLĂFLHUR]ZLMDQHM
9. :HZQÈWU]IXQNFMLgetModels()SROHFHQLHif
VSUDZG]DF]\SU]HND]DQÈZDUWRĂFLÈMHVWcameras
-HĝHOLWDNZDUWRĂFLÈ]ZURWQÈEÚG]LHRELHNW
cameras
10. -HĝHOLQLHSROHFHQLHifNRQW\QXXMHG]LDïDQLH
LVSUDZG]DF]\SU]HND]DQÈZDUWRĂFLÈMHVW
projectors-HĝHOLWDNZDUWRĂFLÈ]ZURWQÈEÚG]LH
RELHNWprojectors
11. 8WZRU]HQLH]PLHQQHMRQD]ZLHoptions
3U]HFKRZXMHRQDZV]\VWNLHHOHPHQW\<option>
GODGUXJLHMOLVW\UR]ZLMDQHM.LHG\WD]PLHQQDMHVW
WZRU]RQDQDVWÚSXMHGRGDQLHGRQLHMSLHUZV]HM
opcji <option>,QIRUPXMHRQDXĝ\WNRZQLND
RPRĝOLZRĂFLZ\ERUXURG]DMXVSU]ÚWX
12. 3ÚWODforSU]HSURZDG]DLWHUDFMÚSU]H]]DZDUWRĂÊRELHNWXXPLHV]F]RQHJRZ]PLHQQHMmodels
NURNLRGGR :HZQÈWU]SÚWOLkeyRGQRVL
VLÚGRSRV]F]HJöOQ\FKHOHPHQWöZZRELHNFLH
2
3
4
Utworzenie zmiennych:
type i model przechowują listy rozwijane
Utworzenie obiektów:
cameras i projectors przechowują listy wyposażenia
Zdarzenie: change na liście rozwijanej do wyboru
rodzaju urządzenia
FUNKCJA ANONIMOWA:
Wypełnia listę rozwijaną
5
N
Czy wartością
jest choose?
T
6
Wywołanie getModels()
i przechowywanie
w zmiennej models
dopasowanego
obiektu
Dodanie elementu <option>
o treści 3URV]Ú
QDMSLHUZZ\EUDÊ
URG]DMVSU]ÚWX
7
11
Utworzenie zmiennej: options
Dodanie elementu <option> o treści 3URV]Ú
Z\EUDÊPRGHO
12
Iteracja przez wszystkie klucze
w obiekcie
Dodanie elementu <option>
13
Przejście do następnego
klucza w obiekcie
Po pętli: uaktualnienie <select>
14
FUNKCJA: getModels()
Pobranie modeli dla wybranego rodzaju sprzętu
9
N
Czy
użytkownik
szukał aparatu
fotograficznego?
T
Zwróć obiekt: cameras
10
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
N
Czy
użytkownik
szukał projektora?
T
Zwróć obiekt: projectors
LISTY ROZWIJANE
13. (OHPHQW<option>MHVWWZRU]RQ\GODNDĝGHJR
HOHPHQWXZRELHNFLH$WU\EXWvalueXĝ\ZDQD]Z\
ZïDĂFLZRĂFL]RELHNWX=DZDUWRĂÊXPLHV]F]DQDPLÚG]\]QDF]QLNDPL<option>WRZDUWRĂÊZïDĂFLZRĂFL
JAVASCRIPT
1
2
3
4
5
6
7
8
11
12
13
14
9
10
14. 2SFMH]RVWDMÈGRGDQHGRGUXJLHMOLVW\UR]ZLMDQHM]Z\NRU]\VWDQLHPZïDĂFLZRĂFLinnerHTML
c13/js/populate-selectbox.js
(function(){
var type = document.getElementById(’equipmentType’); // 5RG]DMOLVW\UR]ZLMDQHM
var model = document.getElementById(’model’); /LVWDUR]ZLMDQDGRZ\ERUXPRGHOX
var cameras = {
2ELHNWSU]HFKRZXMÈF\GRVWÚSQHDSDUDW\IRWRJUDğF]QH
EROH[ij%ROH[3DLOODUG+ij
\DVKLFDij<DVKLFDij
SDWKHVFDSHij3DWKHVFDSH6XSHU5HOD[ij
FDQRQij&DQRQij
};
var projectors = {
2ELHNWSU]HFKRZXMÈF\GRVWÚSQHSURMHNWRU\
NRGDNij.RGDN,QVWDPDWLF0ij
EROH[ij%ROH[6RXQGij
HXPLJij(XPLJ0DUN6ij
VDQN\Rij6DQN\R'XDOX[ij
};
.LHG\Xĝ\WNRZQLN]PLHQLZDUWRĂÊSLHUZV]HMOLVW\UR]ZLMDQHM
addEvent(type, ’change’, function() {
if (this.value === ’choose’) {
1LHGRNRQDQRZ\ERUX
PRGHOLQQHU+70/ ijRSWLRQ!3URV]ÚQDMSLHUZZ\EUDÊURG]DMVSU]ÚWXRSWLRQ!ij
return;
1LHPDSRWU]HE\GDOV]HJRSU]HWZDU]DQLD
}
var models = getModels(this.value);
:\EöURGSRZLHGQLHJRRELHNWX
,WHUDFMDSU]H]RSFMHZRELHNFLHZFHOXXWZRU]HQLDRSFMLGODOLVW\
YDURSWLRQV ijRSWLRQ!3URV]ÚZ\EUDÊPRGHORSWLRQ!ij
for (var key in models) {
,WHUDFMDSU]H]PRGHOH
options += ’<option value=”’ + key + ’”>’ + models[key] + ’</option>’;
} -HĝHOLRSFMDPRĝH]DZLHUDÊ]QDNF\WRZDQLDNOXF]SRZLQLHQE\Ê
XQLHV]NRGOLZLRQ\
model.innerHTML = options;
8DNWXDOQLHQLHGUXJLHMOLVW\UR]ZLMDQHM
});
function getModels(equipmentType) {
if (equipmentType === ’cameras’) {
-HĝHOLZ\EUDQRDSDUDWIRWRJUDğF]Q\
return cameras;
QDOHĝ\]ZUöFLÊRELHNWFDPHUDV
} else if (equipmentType === ’projectors’) {
-HĝHOLZ\EUDQRSURMHNWRU\
return projectors;
QDOHĝ\]ZUöFLÊRELHNWSURMHFWRUV
}
}
}());
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH 593
WIELOWIERSZOWE POLE
TEKSTOWE
:W\PSU]\NïDG]LHXĝ\WNRZQLNPRĝHSRGDÊ
LQIRUPDFMHRVRELHZ\NRU]\VWXMÈFGRWHJR
PDNV\PDOQLH]QDNöZ.LHG\NXUVRU]QDMGXMH
VLÚZZLHORZLHUV]RZ\PSROXWHNVWRZ\PHOHPHQW
<span>EÚG]LHZ\ĂZLHWORQ\ZUD]]OLF]EÈ]QDNöZ
SR]RVWDï\FKGRXĝ\FLD*G\ZLHORZLHUV]RZHSROH
WHNVWRZHSU]HVWDQLHE\ÊDNW\ZQHNRPXQLNDW
LQIRUPXMÈF\ROLF]ELHSR]RVWDï\FK]QDNöZ]RVWDQLH
XNU\W\
2
Utworzenie zmiennych:
bio: element <textarea> na informacje o użytkowniku
bioCount: element wyświetlający liczbę pozostałych znaków
3
Zdarzenia: focus i input w elemencie <textarea>
6
FUNKCJA: updateCounter()
Uaktualnia licznik i (lub) komunikat
7
Pobranie elementu docelowego dla
zdarzenia (<textarea>)
8
Utworzenie zmiennej: count: wynik
przeprowadzonego obliczenia (140
minus liczba znaków w elemencie
<textarea>)
9
Czy
zmienna
count ma wartość
mniejszą niż
0?
1. 8PLHV]F]HQLHVNU\SWXZIXQNFMLW\SX,,)( QLH
SRND]DQRWHJRZRPDZLDQ\PGLDJUDPLH 2. 8WZRU]HQLHGZöFK]PLHQQ\FKSU]H]QDF]RQ\FK
GRSU]HFKRZ\ZDQLDRGQLHVLHQLDGRHOHPHQWX
<textarea>RUD]HOHPHQWX<span>]DZLHUDMÈFHJR
NRPXQLNDW
3. 'ZDREVHUZDWRU\]GDU]HñPRQLWRUXMÈHOHPHQW
<textarea>3LHUZV]\F]HNDDĝZLHORZLHUV]RZH
SROHWHNVWRZHVWDQLHVLÚDNW\ZQHZöZF]DVGUXJL
RF]HNXMHQD]GDU]HQLHinput2EDZ\ZRïXMÈ
IXQNFMÚRQD]ZLHupdateCounter()RPöZLRQÈ
ZNURNDFKRGGR=GDU]HQLHinputQLH
G]LDïDZ,(DOHREVïXJÚVWDUV]\FKSU]HJOÈGDUHN 10
PRĝQD]DSHZQLÊSU]\Xĝ\FLX]GDU]HQLDkeyup
4. 7U]HFLREVHUZDWRU]GDU]HñZ\ZRïXMHIXQNFMÚ
DQRQLPRZÈJG\Xĝ\WNRZQLNRSXĂFLHOHPHQW
11
<textarea>
5. -HĝHOLOLF]ED]QDNöZZ\QRVLOXEMHVW
4
PQLHMV]DLORĂÊLQIRUPDFMLZSURZDG]DQ\FKSU]H]
Xĝ\WNRZQLNDMHVWDNFHSWRZDQDLQDVWÚSXMHXNU\FLH
NRPXQLNDWX SRQLHZDĝQLHPDNRQLHF]QRĂFL
MHJRZ\ĂZLHWODQLDJG\Xĝ\WNRZQLNQLHSUDFXMH
]HOHPHQWHP<textarea> 6. =DGHNODURZDQLHIXQNFMLupdateCounter()
5
7. 3REUDQLHRGQLHVLHQLDGRHOHPHQWXNWöU\
Z\ZRïDïIXQNFMÚ
N
T
Dodaj klasę error
N
Czy zmienna
count ma wartość
mniejszą lub równą
?
Dodaj klasę good
T
Dodaj klasę warn
Utworzenie zmiennej: charMsg:
komunikat zawierający informacje
o pozostałej liczbie znaków
Wyświetlenie komunikatu na ekranie
Zdarzenie: blur w elemencie <textarea>
FUNKCJA ANONIMOWA:
Ukrycie licznika
N
Czy zmienna
count ma wartość
mniejszą lub
równą 140?
T
Ukrycie licznika
594 USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
LICZNIK ZNAKÓW
9. =PLHQQDRQD]ZLHcountSU]HFKRZXMHOLF]EÚ
]QDNöZSR]RVWDï\FKGRZ\NRU]\VWDQLD MHVWRQD
REOLF]DQDSU]H]RGMÚFLHOLF]E\Xĝ\W\FKGRWÈG
]QDNöZRGZDUWRĂFL140 9. .RQVWUXNFMDif-elseMHVWXĝ\WDGRXVWDZLHQLD
NODV\&66HOHPHQWX]DZLHUDMÈFHJRNRPXQLNDW
PRĝHUöZQLHĝZ\ĂZLHWOLÊNRPXQLNDWMHĂOLMHVWRQ
XNU\W\ 10. =PLHQQDRQD]ZLHcharMsg]RVWDMHXWZRU]RQD
LMHVWSU]H]QDF]RQDGRSU]HFKRZ\ZDQLDNRPXQLNDWXZ\ĂZLHWODQHJRXĝ\WNRZQLNRZL
11. .RPXQLNDW]RVWDMHZ\ĂZLHWORQ\QDVWURQLH
c13/textarea-counter.html
HTML
<label for=”bio”>Krótko o sobie (maksymalnie 140 znaków)</label>
WH[WDUHDQDPH ĵELRĵLG ĵELRĵURZV ĵĵFROV ĵĵ!WH[WDUHD!
<span id=”bio-count” class=”hide”></span>
...
<script src=”js/utilities.js”></script>
<script src=”js/textarea-counter.js”></script>
c13/js/textarea-counter.js
JAVASCRIPT
1
2
(function () {
var bio
= document.getElementById(’bio’);
(OHPHQWWH[WDUHD!
var bioCount = document.getElementById(’bio-count’);(OHPHQWOLF]QLND]QDNöZ
addEvent(bio, ’focus’, updateCounter);
3
addEvent(bio, ’input’, updateCounter);
4
addEvent(bio, ’blur’, function () {
if (bio.value.length <= 140) {
bioCount.className = ’hide’;
}
});
5
6
7
8
9
10
11
:\ZRïDQLHXSGDWH&RXQWHU SR
SRZ\VWÈSLHQLX]GDU]HQLDIRFXV
:\ZRïDQLHXSGDWH&RXQWHU SRZ\VWÈSLHQLX]GDU]HQLDLQSXW
3RRSXV]F]HQLXHOHPHQWX
-HĝHOLZSURZDG]RQHLQIRUPDFMHQLHVÈ]DGïXJLH
8NU\FLHOLF]QLND
function updateCounter(e) {
var target = e.target || e.srcElement;
3REUDQLHFHOX]GDU]HQLD
var count = 140 - target.value.length;
/LF]ED]QDNöZSR]RVWDï\FKGRXĝ\FLD
if (count < 0) {
-HĝHOLSR]RVWDïRPQLHMQLĝ]QDNöZ
bioCount.className = ’error’;
ZWHG\QDOHĝ\GRGDÊNODVÚHUURU
`HOVHLI FRXQW ^-HĝHOLSR]RVWDïRPQLHMQLĝ]QDNöZ
bioCount.className = ’warn’;
QDOHĝ\GRGDÊNODVÚZDUQ
} else {
:SU]HFLZQ\PUD]LH
bioCount.className = ’good’;
QDOHĝ\GRGDÊNODVÚJRRG
}
var charMsg = ’<b>’ + count + ’</b>’ + ’ znaków’; .RPXQLNDWGRZ\ĂZLHWOHQLD
bioCount.innerHTML = charMsg;
8DNWXDOQLHQLHHOHPHQWXOLF]QLND
}
}());
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH 595
ELEMENTY I ATRYBUTY HTML5
:VSHF\ğNDFML+70/ZSURZDG]RQRHOHPHQW\IRUPXODU]DLDWU\EXW\
SU]H]QDF]RQHGRZ\NRQ\ZDQLD]DGDñNWöUHSRSU]HGQLRE\ï\UHDOL]RZDQH
]Z\NRU]\VWDQLHPMÚ]\ND-DYD6FULSW-HGQDNLFKZ\JOÈGPRĝHZGXĝHMPLHU]H
]DOHĝHÊRGSU]HJOÈGDUNLLQWHUQHWRZHM GRW\F]\WR]ZïDV]F]DNRPXQLNDWöZ
REïÚGDFK WYSZUKIWANIE
E-MAIL, ADRES URL,
NUMER TELEFONU
LICZBA
<input type=”search”
<input type=”email”>
placeholder=”Wyszukiwanie...” <input type=”url”>
autofocus>
<input type=”telephone”>
<input type=”number”
min=”0”
max=”10”
VWHS ĵĵ
value=”6”>
SAFARI
SAFARI
SAFARI
FIREFOX
FIREFOX
FIREFOX
CHROME
CHROME
CHROME
6DIDUL]DRNUÈJODNUDZÚG]LH
ZHZV]\VWNLFKSRODFKWHNVWR
Z\FKZ\V]XNLZDQLDFRPD
MHXSRGREQLÊGRLQWHUIHMVX
Xĝ\WNRZQLNDZV\VWHPLH
RSHUDF\MQ\P3RGF]DVZSURZD
G]DQLDWHNVWX6DIDULZ\ĂZLHWOD
LNRQÚNU]\ĝ\NDNWöUHMNOLNQLÚFLH
SR]ZDODXĝ\WNRZQLNRZLQD
XVXQLÚFLH]DZDUWRĂFLSROD
,QQHSU]HJOÈGDUNLZ\ĂZLHWODMÈ
SROHZ\V]XNLZDQLDZWDNLVDP
VSRVöEMDNZV]\VWNLHSR]RVWDïH
SROD
3RODWHNVWRZHGODDGUHVX
HPDLO85/LQXPHUX
WHOHIRQXZ\JOÈGDMÈSRGREQLH
MDNZV]\VWNLHSR]RVWDïHSROD
DOHSU]HJOÈGDUNDVSUDZG]D
ZSURZDG]DQHZQLFKGDQH0D
WRQDFHOXXVWDOHQLHF]\GDQH
VÈZSUDZLGïRZ\PIRUPDFLH
-HĝHOLIRUPDWMHVWQLHSUDZLG
ïRZ\QDVWÚSXMHZ\ĂZLHWOHQLH
RGSRZLHGQLHJRNRPXQLNDWX
:SRODFKWHNVWRZ\FKGOD
OLF]EF]DVDPLVÈGRGDZDQH
VWU]DïNL W]ZHOHPHQW\
spinbox SR]ZDODMÈFHQD
]ZLÚNV]HQLHOXE]PQLHMV]HQLH
ZSURZDG]RQHMOLF]E\,VWQLHMH
PRĝOLZRĂÊRNUHĂOHQLDZDUWRĂFL
PLQLPDOQHMPDNV\PDOQHM
ZDUWRĂFLLQNUHPHQWDFMLRUD]
ZDUWRĂFLSRF]ÈWNRZHM3U]HJOÈ
GDUNDVSUDZG]DF]\Xĝ\WNRZQLN
IDNW\F]QLHZSURZDG]LïOLF]EÚ
-HĝHOLQLHQDVWÚSXMHZ\ĂZLHWOH
QLHRGSRZLHGQLHJRNRPXQLNDWX
596 USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
ATRYBUT
OPIS
autofocus
Aktywuje dany element po wczytaniu strony.
placeholder
=DZDUWRĂÊWHJRDWU\EXWXMHVWZ\ĂZLHWODQDZHOHPHQFLH<input>MDNRSRGSRZLHGě SDWU]
SRGUR]G]LDïķ5R]ZLÈ]DQLHDZDU\MQHGODDWU\EXWXSODFHKROGHUĵ required
6SUDZG]DF]\SROHPDZDUWRĂÊĽPRĝHWRE\ÊZSURZDG]RQ\WHNVWOXEZ\EUDQDRSFMD
SDWU]SRGUR]G]LDïķ:\PDJDQHHOHPHQW\IRUPXODU]Dĵ min
0LQLPDOQDGR]ZRORQDZDUWRĂÊ
max
0DNV\PDOQDGR]ZRORQDZDUWRĂÊ
step
:DUWRĂÊRMDNÈPRJÈVLÚ]ZLÚNV]DÊOXE]PQLHMV]DÊOLF]E\
value
:DUWRĂÊGRP\ĂOQDGODOLF]E\SRGF]DVSLHUZV]HJRZF]\WDQLDNRQWURONLQDVWURQLH
autocomplete
:ïÈF]RQDGRP\ĂOQLHZ\ĂZLHWODOLVWÚSRSU]HGQLRXĝ\W\FKZDUWRĂFL Z\ïÈF]RQDGOD
QXPHUöZNDUWNUHG\WRZ\FKRUD]LQQ\FKGDQ\FKZUDĝOLZ\FK pattern
3R]ZDODQDRNUHĂOHQLHZ\UDĝHQLDUHJXODUQHJRSU]H]QDF]RQHJRGRZHU\ğNDFMLZDUWRĂFL
SDWU]SRGUR]G]LDïķ:\UDĝHQLDUHJXODUQHĵ novalidate
8ĝ\ZDQDZHOHPHQFLH<form>GRZ\ïÈF]HQLDZHU\ğNDFMLRIHURZDQHMSU]H]+70/ SDWU]
SRGUR]G]LDïķ2JöOQHRPöZLHQLHNRGXĵ ZAKRES
KONTROLKA WYBORU
KOLORU
DATA
<input type=”range”
min=”0”
max=”10”
step=”2”
value=”6”>
<input type=”color”>
<input
<input
<input
<input
<input
SAFARI
CHROME
CHROME
type=”date”> SRQLĝHM
type=”month”>
type=”week”>
type=”time”>
type=”datetime”>
FIREFOX
CHROME
.RQWUROND]DNUHVXRIHUXMHLQQ\
VSRVöEZSURZDG]DQLDOLF]E\
W\PUD]HP]DSRPRFÈsuwaka.
3RGREQLHMDNZSU]\SDGNX
HOHPHQWXVSLQER[LVWQLHMHWX
PRĝOLZRĂÊRNUHĂOHQLDZDUWRĂFL
minimalnej, maksymalnej,
SRF]ÈWNRZHMRUD]LQNUHPHQWDFML
RMDNLH]PLHQLDVLÚZDUWRĂÊ
*G\SRZVWDZDïDWDNVLÈĝND
&KURPHL2SHUDE\ï\MHG\Q\PL
SU]HJOÈGDUNDPLZNWöU\FK
]DLPSOHPHQWRZDQRWÚNRQWURO
NÚ3R]ZDODRQDQDZVND]DQLH
NRORUX.LHG\Xĝ\WNRZQLNNOLNQLH
WÚNRQWURONÚSU]HJOÈGDUND
Z\ĂZLHWOLSUDZGRSRGREQLH
GRP\ĂOQÈZV\VWHPLHNRQWURONÚ
SU]H]QDF]RQÈGRZ\ERUX
NRORUX ]Z\MÈWNLHPV\VWHPX
/LQX[ZNWöU\PRIHURZDQD
MHVW]QDF]QLHSURVWV]DSDOHWD :VWDZLDQDMHVWZDUWRĂÊ
V]HVQDVWNRZDNRORUXZ\EUDQHJR
SU]H]Xĝ\WNRZQLND
,VWQLHMHZLHOHUöĝQ\FKNRQWUROHN
SU]H]QDF]RQ\FKGRZVWDZLDQLD
GDW\*G\SRZVWDZDïDWD
NVLÈĝND&KURPHE\ïMHG\QÈ
SU]HJOÈGDUNÈZNWöUHM]DLPSOH
PHQWRZDQRWÚNRQWURONÚ
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
597
OBSŁUGA I STYLE
(OHPHQW\IRUPXODU]\+70/QLHVÈREVïXJLZDQHZHZV]\VWNLFK
SU]HJOÈGDUNDFK1DZHWNLHG\VÈSRODWHNVWRZHLNRPXQLNDW\REïÚGDFK
PRJÈZ\JOÈGDÊRGPLHQQLH
PRZEGLĄDARKI W KOMPUTERACH
BIUROWYCH
PRZEGLĄDARKI W URZĄDZENIACH
MOBILNYCH
*G\SRZVWDZDïDWDNVLÈĝNDZLHOXSURJUDPLVWöZ
Xĝ\ZDïRNRGX-DYD6FULSW]DPLDVWQRZ\FKIXQNFML
ZSURZDG]RQ\FKZ+70/Ľ]Z\PLHQLRQ\FK
SRQLĝHMSRZRGöZ
:XU]ÈG]HQLDFKPRELOQ\FKV\WXDFMDMHVW]QDF]QLH
LQQDSRQLHZDĝZLÚNV]RĂÊQRZRF]HVQ\FKSU]HJOÈGDUHN
]DSHZQLDREVïXJÚQDMZDĝQLHMV]\FKHOHPHQWöZ
HTML5;
Z\ĂZLHWODNODZLDWXUÚGRVWRVRZDQÈGRURG]DMX
SRODQDSU]\NïDGW\SemailSRZRGXMHZ\ĂZLHWOHQLHNODZLDWXU\]H]QDNLHP@QDWRPLDVW
numberZ\ĂZLHWODNODZLDWXUÚQXPHU\F]QÈ
XGRVWÚSQLDXĝ\WHF]QHZHUVMHNRQWURONLZ\ERUX
GDW\
'ODWHJRWHĝZSU]HJOÈGDUNDFKZXU]ÈG]HQLDFK
PRELOQ\FKQRZHHOHPHQW\+70/LW\S\NRQWUROHN
GDQ\FKZHMĂFLRZ\FKSRZRGXMÈĝHIRUPXODU]H
VLHFLRZHFKDUDNWHU\]XMÈVLÚZLÚNV]ÈGRVWÚSQRĂFLÈ
LXĝ\WHF]QRĂFLÈGODRGZLHG]DMÈF\FKGDQÈVWURQÚ
• 6WDUV]HSU]HJOÈGDUNLQLHREVïXJXMÈQRZ\FK
URG]DMöZSöOGDQ\FKZHMĂFLRZ\FK ZLFK
PLHMVFXZ\ĂZLHWODMÈSRSURVWXSROHWHNVWRZH • 3RV]F]HJöOQHSU]HJOÈGDUNLZ\ĂZLHWODMÈHOHPHQW\
LNRPXQLNDW\REïÚGDFKQDUöĝQHVSRVRE\
DSURMHNWDQFLEDUG]RF]ÚVWRFKFÈ]DSHZQLÊ
Xĝ\WNRZQLNRPDSOLNDFMÚVSöMQLHZ\JOÈGDMÈFÈ
LG]LDïDMÈFÈZUöĝQ\FKSU]HJOÈGDUNDFK 3RQLĝHMPRĝHV]]REDF]\ÊĝHNRPXQLNDW\
REïÚGDFKZ\JOÈGDMÈ]XSHïQLHRGPLHQQLHZGZöFK
QDMZDĝQLHMV]\FKSU]HJOÈGDUNDFK
KOMUNIKAT O BŁĘDZIE DOTYCZĄCY POLA TYPU
•
•
•
WYBÓR DATY W SYSTEMIE IOS
E-MAIL W PRZEGLĄDARCE CHROME
KOMUNIKAT O BŁĘDZIE DOTYCZĄCY POLA TYPU
E-MAIL W PRZEGLĄDARCE FIREFOX
598 USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
AKTUALNE PODEJŚCIA
'RSöNLZLÚNV]RĂÊXĝ\WNRZQLNöZQLHEÚG]LHNRU]\VWDÊ]SU]HJOÈGDUHNLQWHUQHWRZ\FKREVïXJXMÈF\FKQRZHIXQNFMHDVDPHSU]HJOÈGDUNLQLHEÚGÈLFK
REVïXJLZDÊZVSöMQ\VSRVöESURJUDPLĂFLPXV]ÈVWDUDQQLHSU]HP\ĂOHÊMDN
VWRVRZDÊQRZHIXQNFMH
POLYFILL
WYKRYWANIE FUNKCJI
SPÓJNOŚĆ
SRO\ğOOWRVNU\SW]DSHZQLDMÈF\
SU]HJOÈGDUFHGRP\ĂOQÈREVïXJÚ
IXQNFMRQDOQRĂFLNWöUHMPRĝHV]
RF]HNLZDÊ3RQLHZDĝVWDUV]H
SU]HJOÈGDUNLQLHREVïXJXMÈ
QRZ\FKHOHPHQWöZ+70/
VNU\SWXSRO\ğOOPRĝQDXĝ\Ê
QDSU]\NïDGGRLPSOHPHQWDFML
ZQLFKSRGREQ\FKIXQNFMRQDOQRĂFL=UHJXï\RGE\ZDVLÚ
WR]DSRĂUHGQLFWZHPMÚ]\ND
-DYD6FULSWOXEZW\F]NLM4XHU\
Wykrywanie funkcjiR]QDF]D
VSUDZG]HQLHF]\SU]HJOÈGDUND
REVïXJXMHGDQÈIXQNFMÚ
1DVWÚSQLHPRĝQD]GHF\GRZDÊ
FR]URELÊMHĝHOLGDQDIXQNFMD
MHVWOXEQLHMHVWREVïXJLZDQD
:UR]G]LDOHZSRGUR]G]LDOH
ķ0RGHUQL]UĵSR]QDïHĂVNU\SW
RQD]ZLHmodernizr.js prze]QDF]RQ\GRVSUDZG]DQLDF]\
GDQDIXQNFMDMHVWREVïXJLZDQD
SU]H]SU]HJOÈGDUNÚ
:LHOXSURMHNWDQWöZLSURJUDPLVWöZFKFHNRQWURORZDÊ
Z\JOÈGNRQWUROHNIRUPXODU]D
LNRPXQLNDWöZREïÚGDFKDE\
W\PVDP\P]DSHZQLÊVSöMQRĂÊ
DSOLNDFMLZHZV]\VWNLFK
SU]HJOÈGDUNDFK =DFKRZDQLH
VSöMQRĂFL]ZïDV]F]DZSU]\SDGNXNRPXQLNDWöZREïÚGDFK
MHVWXZDĝDQH]DEDUG]RZDĝQH
SRQLHZDĝUöĝQHVW\OHEïÚGöZ
PRJÈGH]RULHQWRZDÊXĝ\WNRZQLNöZ 6NU\SW\SRO\ğOOVÈF]ÚVWR
GRVWDUF]DQHZUD]]SOLNDPL&66
Xĝ\ZDQ\PLGRQDGDQLDVW\OX
IXQNFMRQDOQRĂFLRIHURZDQHM
SU]H]VNU\SW
-HĝHOLGDQDIXQNFMDQLHMHVW
REVïXJLZDQDSU]H]SU]HJOÈGDUNÚZF]\W\ZDQ\MHVWVNU\SW
SRO\ğOOSU]H]QDF]RQ\GRHPXODFMLWHMIXQNFML$E\XQLNQÈÊ
ZF]\W\ZDQLDVNU\SWXSRO\ğOO
ZSU]HJOÈGDUNDFKNWöUHJRQLH
SRWU]HEXMÈ0RGHUQL]U]DZLHUD
warunkowy program wczytuMÈF\6NU\SW]RVWDQLHZF]\WDQ\
W\ONRZWHG\JG\Z\QLNWHVWX
ZVNDĝHQDNRQLHF]QRĂÊXĝ\FLD
VNU\SWX
/LVWÚVNU\SWöZSRO\ğOOGOD
UöĝQ\FKIXQNFML]QDMG]LHV]QD
ZLWU\QLHKWWSKWPOSOHDVH
FRP
:SRGUR]G]LDOHķ5R]ZLÈ]DQLH
DZDU\MQHGODDWU\EXWXSODFHKROGHUĵ]QDMG]LHV]SU]\NïDG
SRND]XMÈF\]DVWRVRZDQLH
VNU\SWXSRO\ğOOZFHOX]DSHZQLHQLDREVïXJLDWU\EXWX+70/
placeholderZVWDUV]\FK
SU]HJOÈGDUNDFKLQWHUQHWRZ\FK
,QQ\SRSXODUQ\SURJUDPZF]\WXMÈF\WRRequire.js GRVWÚSQ\
ZZLWU\QLHhttp://requirejs.org/ -HGQDNMHVWRQQLHFREDUG]LHM
VNRPSOLNRZDQ\GODSRF]ÈWNXMÈF\FKSRQLHZDĝRIHUXMHMHV]F]H
ZLHOHLQQ\FKIXQNFML
'ODWHJRWHĝZREV]HUQ\P
SU]\NïDG]LH]DSUH]HQWRZDQ\P
QDNRñFXUR]G]LDïXZ\ïÈF]\P\
ZHU\ğNDFMÚZEXGRZDQÈ
Z+70/LZSLHUZV]HMNROHMQRĂFLVSUöEXMHP\Z\NRU]\VWDÊ
-DYD6FULSWGRSU]HSURZDG]HQLD
ZHU\ğNDFML :EXGRZDQD
Z+70/ZHU\ğNDFMD]RVWDQLH
]DVWRVRZDQDW\ONRZWHG\JG\
Xĝ\WNRZQLNPDZ\ïÈF]RQÈ
REVïXJÚ-DYD6FULSW:QRZRF]HVQ\FKSU]HJOÈGDUNDFK
ZHU\ğNDFMÚ+70/WUDNWXMHP\
MDNRUR]ZLÈ]DQLHDZDU\MQH :RPDZLDQ\PSU]\NïDG]LH
]DVWRVXMHP\WDNĝHM4XHU\8,
GR]DJZDUDQWRZDQLDVSöMQRĂFL
NRQWURONLGDW\ZHZV]\VWNLFK
XU]ÈG]HQLDFKSU]\Xĝ\FLX
PLQLPDOQHMLORĂFLNRGX
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH 599
ROZWIĄZANIE AWARYJNE DLA
ATRYBUTU PLACEHOLDER
$WU\EXW+70/placeholderSR]ZDODQD
XPLHV]F]HQLHRSLVXZSROXWHNVWRZ\P DE\
2
Z\HOLPLQRZDÊNRQLHF]QRĂÊXĝ\FLDHW\NLHWOXESR
SURVWXGRVWDUF]\ÊSRGSRZLHG]L .LHG\SROHWHNVWRZHVWDMHVLÚDNW\ZQHLXĝ\WNRZQLNUR]SRF]\QD
3
ZSURZDG]DQLHGDQ\FKWHNVWSRGSRZLHG]L]QLND
-HGQDNWDNLHUR]ZLÈ]DQLHG]LDïDMHG\QLHZQDMQRZV]\FKSU]HJOÈGDUNDFK'ODWHJRWHĝRPDZLDQ\ 4
WXWDMVNU\SW]DSHZQLDĝHXĝ\WNRZQLN]REDF]\
SRGSRZLHG]LWDNĝHZVWDUV]\FKSU]HJOÈGDUNDFK
7RMHVWSURVW\SU]\NïDGVNU\SWXW\SXSRO\ğOO
5
N
Czy atrybut
placeholder jest
obsługiwany?
T
Utworzenie zmiennej: length: liczba formularzy
Iteracja przez każdy element <form> na stronie
Wywołanie funkcji: showPlaceholder()
Przejście do kolejnego formularza
FUNKCJA: showPlaceholder()
umieszcza podpowiedź w elementach, które jej
nie mają
6
Iteracja przez wszystkie elementy
formularza
Utworzenie zmiennej: el: bieżący element
1. 8PLHV]F]HQLHVNU\SWXZIXQNFMLW\SX,,)( QLH
SRND]DQRWHJRZRPDZLDQ\PGLDJUDPLH 2. 6SUDZG]HQLHF]\SU]HJOÈGDUNDREVïXJXMH
DWU\EXW+70/placeholder-HĝHOLWDNQLHPD
NRQLHF]QRĂFLVWRVRZDQLDUR]ZLÈ]DQLDDZDU\MQHJR
=DSRPRFÈSROHFHQLDreturnQDVWÚSXMHRSXV]F]HQLHIXQNFML
3. 8VWDOHQLHOLF]E\IRUPXODU]\VLHFLRZ\FKQD
VWURQLH'RWHJRFHOXXĝ\ZDQDMHVWZïDĂFLZRĂÊ
lengthNROHNFMLforms
4. ,WHUDFMDSU]H]ZV]\VWNLHHOHPHQW\<form>QD
VWURQLHLZ\ZRïDQLHIXQNFMLshowPlaceholder()
GODNDĝGHJR]QLFK]SU]HND]DQLHPNROHNFML
HOHPHQWöZZGDQ\PIRUPXODU]X
5. =DGHNODURZDQLHIXQNFMLshowPlaceholder()
6. 8ĝ\FLHSÚWOLforGRLWHUDFMLSU]H]HOHPHQW\
NROHNFML
7. 3ROHFHQLHifVSUDZG]DNDĝG\HOHPHQWZFHOX
XVWDOHQLDF]\]DZLHUDRQDWU\EXWplaceholder
ZUD]]ZDUWRĂFLÈ
8. -HĝHOLQLHPDDWU\EXWXplaceholderSROHFHQLH
continueSRZRGXMHSU]HMĂFLHGRNROHMQHJR
HOHPHQWX:SU]HFLZQ\PUD]LH
9. .RORUWHNVWX]RVWDMH]PLHQLRQ\QDV]DU\
DZDUWRĂFLÈHOHPHQWXVWDMHVLÚWHNVWSRGSRZLHG]L
7
N
Czy używany
jest atrybut
placeholder?
T
8
Ustawienie koloru tekstu na szary
9
Ustawienie tekstu podpowiedzi
10
11
Zdarzenie: focus w tym elemencie
FUNKCJA ANONIMOWA:
Jeżeli tekst podpowiedzi
znajduje się w elemencie,
należy go usunąć i przywrócić
czarny kolor tekstu
12
Zdarzenie: blur w tym elemencie
13
FUNKCJA ANONIMOWA:
Jeżeli pole tekstowe jest puste, należy
wyświetlić podpowiedź w kolorze
szarym
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
Przejście do kolejnego elementu
10. *G\HOHPHQWVWDQLHVLÚDNW\ZQ\REVHUZDWRU
]GDU]HñZ\ZRïXMHIXQNFMÚDQRQLPRZÈ
11. -HĝHOLZDUWRĂÊELHĝÈFDHOHPHQWXMHVWGRSDVRZDQDGRWHNVWXSRGSRZLHG]LZDUWRĂÊ]RVWDQLH
XVXQLÚWD DNRORUWHNVWX]SRZURWHPEÚG]LH
]PLHQLRQ\QDGRP\ĂOQ\ 12. *G\HOHPHQWVWDQLHVLÚQLHDNW\ZQ\REVHUZDWRU]GDU]HñZ\ZRïXMHIXQNFMÚDQRQLPRZÈ
13. -HĝHOLSROHWHNVWRZHMHVWSXVWHQDVWÚSXMH
GRGDQLHWHNVWXSRGSRZLHG]L DMHJRNRORUMHVW
]PLHQLDQ\QDV]DU\ FMVSODFHKROGHUSRO\ğOOMV
JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
SKRYPT TYPU
POLYFILL DLA
ATRYBUTU
PLACEHOLDER
(function () {
8PLHV]F]HQLHNRGXZIXQNFMLW\SX,,)(
7HVWXWZRU]HQLHHOHPHQWXLQSXW!LVSUDZG]HQLHF]\DWU\EXWSODFHKROGHUMHVWREVïXJLZDQ\
if (’placeholder’ in document.createElement(’input’)) {
return;
}
var length = document.forms.length;
2NUHĂOHQLHOLF]E\IRUPXODU]\QDVWURQLH
for (var i = 0, l = length; i < l; i++ ) {
,WHUDFMDSU]H]ZV]\VWNLHIRUPXODU]H
showPlaceholder(document.forms[i].elements);
:\ZRïDQLHIXQNFMLVKRZ3ODFHKROGHU }
function showPlaceholder(elements) {
=DGHNODURZDQLHIXQNFML
for (var i = 0, l = elements.length; i < l; i++) { 'ODNDĝGHJRHOHPHQWX
var el = elements[i];
3U]HFKRZ\ZDQLHWHJRHOHPHQWX
if (!el.placeholder) {
-HĝHOLQLH]RVWDï]GHğQLRZDQ\DWU\EXWSODFHKROGHU
continue;
3U]HMĂFLHGRQDVWÚSQHJRHOHPHQWX
}
:SU]HFLZQ\PUD]LH
el.style.color = ’#666666’;
8VWDZLHQLHNRORUXWHNVWXQDV]DU\
el.value = el.placeholder;
'RGDQLHWHNVWXSRGSRZLHG]L
addEvent(el, ’focus’, function () {
if (this.value === this.placeholder) {
this.value = ’’;
this.style.color = ’#000000’;
11
-HĝHOLHOHPHQWVWDQLHVLÚDNW\ZQ\
-HĝHOLZDUWRĂÊ ZDUWRĂÊDWU\EXWX
SODFHKROGHU
8VXQLÚFLH]DZDUWRĂFLSRODWHNVWRZHJR
3U]\ZUöFHQLHGRP\ĂOQHJRNRORUXWHNVWX
}
});
12
13
addEvent(el, ’blur’, function () {
if (this.value === ’’) {
this.value = this.placeholder;
this.style.color = ’#666666’;
}
});
} .RQLHFSÚWOLIRU
}
.RQLHFIXQNFMLVKRZ3ODFHKROGHU
}());
3RZ\VWÈSLHQLX]GDU]HQLDEOXU
-HĝHOLSROHWHNVWRZHMHVWSXVWH
:DUWRĂÊVWDMHVLÚSRGSRZLHG]LÈ
8VWDZLHQLHNRORUXV]DUHJRGODWHNVWX
,VWQLHMHNLONDUöĝQLFZVWRVXQNXGRDWU\EXWX
placeholderRIHURZDQHJRSU]H]+70/-HĝHOLXĝ\W NRZQLNXVXQLHWHNVWSRGSRZLHGě]RVWDQLHZ\ĂZLHWORQD
JG\Xĝ\WNRZQLNRSXĂFLNRQWURONÚ QLHQDW\FKPLDVWMDN
PDWRPLHMVFHZQLHNWöU\FKSU]HJOÈGDUNDFK 1LHEÚG]LH
Z\VïDQ\WHNVWNWöU\PDWDNÈVDPÈZDUWRĂÊMDNSRGSRZLHGě:DUWRĂFLSRGSRZLHG]LPRJÈE\Ê]DSDPLÚWDQH
SU]H]IXQNFMÚDXWRPDW\F]QHJRX]XSHïQLDQLD
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
SKRYPT TYPU POLYFILL
WYKORZYSTANY
Z ZASTOSOWANIEM SKRYPTÓW
MODERNIZR I YEPNOPE
6NU\SW0RGHUQL]USR]QDïHĂZUR]G]LDOH7XWDMZ\NRU]\VWDP\JR
]ZDUXQNRZ\PSURJUDPHPZF]\WXMÈF\PDE\ZF]\WDQLHVNU\SWXQDVWÚSRZDïR
W\ONRZWHG\JG\QLH]EÚGQHMHVWUR]ZLÈ]DQLHDZDU\MQH
0RGHUQL]USR]ZDODQDVSUDZG]HQLHF]\SU]HJOÈGDUNDLXU]ÈG]HQLHREVïXJXMÈSHZQHIXQNFMH1RVL
WRQD]ZÚZ\NU\ZDQLDIXQNFML1DVWÚSQLHPRĝQD
SRGMÈÊRGSRZLHGQLHG]LDïDQLDZ]DOHĝQRĂFLRG
Z\QLNXVSUDZG]HQLD1DSU]\NïDGMHĂOLVWDUV]D
SU]HJOÈGDUNDQLHREVïXJXMHGDQHMIXQNFMLPRĝQD
Xĝ\ÊVNU\SWXW\SXSRO\ğOO
0RGHUQL]UMHVWF]DVDPLXPLHV]F]DQ\ZVHNFML
<head>VWURQ\+70/JG\]DFKRG]LSRWU]HED
SU]HSURZDG]HQLDRSHUDFMLVSUDZG]HQLDMHV]F]H
SU]HGZF]\WDQLHPVWURQ\ QDSU]\NïDGSHZQH
VNU\SW\W\SXSRO\ğOOGOD+70/L&66PXV]ÈE\Ê
ZF]\WDQHSU]HGVWURQÈ =DPLDVWZF]\W\ZDÊVNU\SWW\SXSRO\ğOOSU]H]
NDĝGHJRRGZLHG]DMÈFHJRVWURQÚ QDZHWMHĂOLQLH
EÚG]LHPXVLDïJRXĝ\ZDÊ PRĝQDZ\NRU]\VWDÊWDN
]ZDQ\ZDUXQNRZ\SURJUDPZF]\WXMÈF\3R]ZDOD
RQQDZF]\W\ZDQLHUöĝQ\FKSOLNöZZ]DOHĝQRĂFL
RGZDUWRĂFL trueOXEfalse ]ZUDFDQHMSU]H]
ZDUXQHN0RGHUQL]UMHVWEDUG]RF]ÚVWRXĝ\ZDQ\
ZUD]]ZDUXQNRZ\PSURJUDPHPZF]\WXMÈF\P
RQD]ZLH<HS1RSHMVDE\VNU\SWW\SXSRO\ğOOE\ï
ZF]\W\ZDQ\W\ONRZWHG\JG\MHVWQLH]EÚGQ\
*G\QDVWURQLH]RVWDQLHGRïÈF]RQ\VNU\SW<HS1RSHPRĝQDZ\ZRïDÊIXQNFMÚyepnope()8ĝ\ZD
RQDVNïDGQLOLWHUDïXRELHNWXGRZVND]DQLDZDUXQNX
SU]H]QDF]RQHJRGRSU]HWHVWRZDQLD1DVWÚSQLHSOLN
MHVWZF]\W\ZDQ\Z]DOHĝQRĂFLRGZDUWRĂFL true
OXEfalse ]ZUDFDQHMSU]H]ZDUXQHN
TYLKO MODERNIZR
MODERNIZR PLUS YEPNOPE
.DĝGDIXQNFMDVSUDZG]DQD]DSRPRFÈVNU\SWX
0RGHUQL]UVWDMHVLÚZïDĂFLZRĂFLÈRELHNWX
Modernizr-HĝHOLGDQDIXQNFMDMHVWREVïXJLZDQD
ZïDĂFLZRĂÊ]DZLHUDZDUWRĂÊtrue1DWRPLDVWMHĂOL
QLHMHVWREVïXJLZDQDZDUWRĂFLÈZïDĂFLZRĂFLMHVW
false1DVWÚSQLHZïDĂFLZRĂFLRELHNWXModernizr
PRĝQDVWRVRZDÊZSROHFHQLDFKZDUXQNRZ\FK
WDNLHMDNSU]HGVWDZLRQHSRQLĝHM:RPDZLDQ\P
SU]\NïDG]LHMHĝHOLZïDĂFLZRĂÊcssanimations
RELHNWXModernizrQLH]ZUöFLZDUWRĂFLtrue
]RVWDQLHZ\NRQDQ\NRGZQDZLDVLHNODPURZ\P
<HS1RSHRWU]\PXMHOLWHUDïRELHNWXNWöU\]Z\NOH
VNïDGDVLÚ]PLQLPXPWU]HFKZïDĂFLZRĂFL
testWRVSUDZG]DQ\ZDUXQHNWXWDM0RGHUQL]U
MHVWXĝ\ZDQ\GRVSUDZG]HQLDF]\REVïXJLZDQD
MHVWZïDĂFLZRĂÊcssanimations
yepWRSOLNGRZF]\WDQLDMHĂOLZDUXQHN]ZUDFD
ZDUWRĂÊtrue
nopeWRSOLNGRZF]\WDQLDMHĂOLZDUXQHN]ZUDFD
ZDUWRĂÊfalse WXWDMZF]\WDQHEÚGÈGZDSOLNL
SRGDQHZSRVWDFLVNïDGQLWDEOLF\ if (!Modernizr.cssanimations) {
$QLPDFMH&66VÈQLHREVïXJLZDQH
=DPLDVWQLFKXĝ\MDQLPDFMLM4XHU\
}
yepnope({
WHVW0RGHUQL]UFVVDQLPDWLRQV
\HSijFVVDQLPDWLRQVFVVij
QRSH>ijMVMTXHU\MVijijMVDQLPDWHMVij@
});
•
•
•
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
WARUNKOWE WCZYTANIE
SKRYPTU TYPU POLYFILL
HTML
FQXPEHUSRO\ğOOKWPO
<head>
...
<script src=”js/modernizr.js”></script>
<script src=”js/yepnope.js”></script>
VFULSWVUF ĵMVQXPEHUSRO\ğOOHJMVĵ!VFULSW!
</head>
<body>
<label for=”age”>3RGDMZLHN</label>
<input type=”number” id=”age” />
</body>
JAVASCRIPT
FMVQXPEHUSRO\ğOOHJMV
yepnope({
WHVW0RGHUQL]ULQSXWW\SHVQXPEHU
QRSH>ijMVQXP3RO\ğOOMVijijFVVQXPEHUFVVij@
FRPSOHWHIXQFWLRQ ^
FRQVROHORJ ij<HS1RSH0RGHUQL]U]DNRñF]\ï\
SUDFÚij }
});
WYNIK
.RGZRPDZLDQ\PSU]\NïDG]LH
VSUDZG]DF]\SU]HJOÈGDUND
REVïXJXMHHOHPHQW<input>
NWöUHJRZDUWRĂFLÈDWU\EXWXtype
MHVWnumber:QDJïöZNXVWURQ\
HOHPHQW<head> GRïÈF]RQHVÈ
VNU\SW\0RGHUQL]UL<HS1RSH
DE\UR]ZLÈ]DQLHDZDU\MQH
G]LDïDïRSUDZLGïRZR
)XQNFMDyepnope()SRELHUD
SDUDPHWUZSRVWDFLOLWHUDïX
RELHNWX2WRZïDĂFLZRĂFLWHJR
RELHNWX
testVSUDZG]DQDIXQNFMD
:RPDZLDQ\PSU]\NïDG]LH
0RGHUQL]UVSUDZG]DF]\
REVïXJLZDQHMHVWSROH
WHNVWRZHW\SXnumber
yepQLHXĝ\ZDQ\ZW\P
SU]\NïDG]LHSR]ZDODQD
ZVND]DQLHSOLNöZZF]\W\ZDQ\FKJG\VSUDZG]DQD
IXQNFMDjestREVïXJLZDQD
nopeSR]ZDODQDZVND]DQLH
G]LDïDQLDJG\VSUDZG]DQD
IXQNFMDnie jestREVïXJLZDQD
PRĝQDZF]\WDÊZLHOHSOLNöZ
SRGDMÈFMH]Z\NRU]\VWDQLHP
VNïDGQLWDEOLF\ completeSR]ZDODQD
ZVND]DQLHIXQNFMLZ\NRQ\ZDQHMSR]DNRñF]HQLXRSHUDFML
VSUDZG]HQLDLZF]\WDQLX
ZV]\VWNLFKQLH]EÚGQ\FK
SOLNöZ:RPDZLDQ\P
SU]\NïDG]LHIXQNFMDZ\ĂZLHWOD
NRPXQLNDWZNRQVROLLPD
QDFHOX]DGHPRQVWURZDQLH
G]LDïDQLDWHMZïDĂFLZRĂFL
•
•
•
•
=ZUöÊXZDJÚĝHZDUWRĂÊDWU\EXWXtypeHOHPHQWX<input>
0RGHUQL]USU]HFKRZXMHZRELHNFLHSRWRPQ\PRQD]ZLHinputtypes
1DSU]\NïDGZFHOXVSUDZG]HQLDF]\REVïXJLZDQ\MHVWVHOHNWRU
GDW\Z+70/PRĝQDXĝ\ÊModernizr.inputtypes.date QLH
Modernizr.date USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH WERYFIKACJA FORMULARZA
SIECIOWEGO
:RVWDWQLHMF]ÚĂFLWHJRUR]G]LDïXSU]HGVWDZLRQ\EÚG]LHMHGHQGXĝ\VNU\SW
QDSRGVWDZLHNWöUHJR]RVWDQÈRPöZLRQH]DJDGQLHQLD]ZLÈ]DQH]ZHU\ğNDFMÈ
IRUPXODU]DVLHFLRZHJR7RSRPDJDXĝ\WNRZQLNRPGRVWDUF]DÊGDQH
ZIRUPDFLHNWöUHJRRF]HNXMHV] :SU]\NïDG]LH]DVWRVRZDQRWDNĝHSHZQH
XVSUDZQLHQLDIRUPXODU]\ tĞƌLJĮŬĂĐũĂƚŽƉƌŽĐĞƐƐƉƌĂǁĚnjĞŶŝĂ͕ĐnjLJǁĂƌƚŽƑđ
ƐƉĞųŶŝĂŽŬƌĞƑůŽŶĞƌĞŐƵųLJ;ŶĂƉƌnjLJŬųĂĚĐnjLJŚĂƐųŽƐŬųĂĚĂ
ƐŝħnjƵƐƚĂůŽŶĞũŵŝŶŝŵĂůŶĞũůŝĐnjďLJnjŶĂŬſǁͿ͘njŝħŬŝƚĞŵƵ͕
ũĞƑůŝǁLJƐƚČƉŝũĂŬŝŬŽůǁŝĞŬƉƌŽďůĞŵnjǁĂƌƚŽƑĐŝĂŵŝǁƉƌŽǁĂĚnjŽŶLJŵŝƉƌnjĞnjƵǏLJƚŬŽǁŶŝŬĂ͕ŵŽǏŶĂƉŽŝŶĨŽƌŵŽǁĂđ
ŐŽ͕ĂďLJƉŽƉƌĂǁŝųĨŽƌŵƵůĂƌnjƉƌnjĞĚũĞŐŽƉŽŶŽǁŶLJŵ
ǁLJƐųĂŶŝĞŵ͘dĂŬŝĞƌŽnjǁŝČnjĂŶŝĞŵĂƚƌnjLJŝƐƚŽƚŶĞnjĂůĞƚLJ͘
• ,VWQLHMH]QDF]QLHZLÚNV]HSUDZGRSRGRELHñVWZR
•
•
ĝHRWU]\PDV]LQIRUPDFMHZIRUPDFLHNWöUHJR
EÚG]LHV]PöJïXĝ\Ê
6SUDZG]HQLHGDQ\FKZSU]HJOÈGDUFHRGE\ZD
VLÚV]\EFLHMQLĝZSU]\SDGNXLFKZ\VïDQLDGR
VHUZHUDFHOHPVSUDZG]HQLD
3R]ZDODQDRV]F]ÚG]DQLH]DVREöZZVHUZHU]H
:WHMF]ÚĂFLUR]G]LDïX]REDF]\V]MDNVSUDZG]DÊ
ZDUWRĂFLZSURZDG]DQHSU]H]Xĝ\WNRZQLND
ZIRUPXODU]XVLHFLRZ\P7HJRURG]DMXRSHUDFMH
VSUDZG]HQLDVÈSU]HSURZDG]DQHSRZ\VïDQLX
IRUPXODU]D8ĝ\WNRZQLNPRĝHNOLNQÈÊSU]\FLVN
Z\VïDQLDIRUPXODU]DOXEQDFLVQÈÊNODZLV]Enter
QDNODZLDWXU]HDSURFHVZHU\ğNDFML]RVWDQLH
]DLQLFMRZDQ\SU]H]]GDU]HQLHsubmit DQLHclick
SU]\FLVNXZ\V\ïDMÈFHJRIRUPXODU] =DJDGQLHQLD]ZLÈ]DQH]ZHU\ğNDFMÈ]RVWDQÈ
RPöZLRQHQDMHGQ\PGXĝ\PSU]\NïDG]LH)RUPXODU]SRND]DQRSRQLĝHMDWZRU]ÈF\JRNRG+70/
QDVWURQLHSRSUDZHM:SUDZG]LHZ\NRU]\VW\ZDQH
VÈNRQWURONLIRUPXODU]D+70/DOHZHU\ğNDFMD
RGE\ZDVLÚ]DSRPRFÈNRGX-DYD6FULSWDE\]DSHZQLÊVSöMQHG]LDïDQLHIRUPXODU]DZHZV]\VWNLFK
SU]HJOÈGDUNDFK QDZHWMHĂOLQLHREVïXJXMÈ+70/ USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
FORMULARZ HTML
7HQSU]\NïDGXĝ\ZDNRGX]QDF]QLNöZVSHF\ğNDFML
+70/DOHZHU\ğNDFMDMHVWSU]HSURZDG]DQD]D
SRPRFÈ-DYD6FULSW DQLHZEXGRZDQ\FKPHFKDQL]PöZZHU\ğNDFMLZ+70/ HTML
=HZ]JOÚGXQDRJUDQLF]RQÈLORĂÊPLHMVFDSRQLĝV]\
NRGSRND]XMHMHG\QLHHOHPHQW\GDQ\FKZHMĂFLRZ\FKIRUPXODU]DVLHFLRZHJR SRPLQLÚWR]QDF]QLNL
GODNROXPQ c13/validation.html
<form method=”post” action=”/register”>
.ROXPQD!
<div class=”name”>
<label for=”name” class=”required”>,PLÚ</label>
LQSXWW\SH ĵWH[WĵSODFHKROGHU ĵ3URV]ÚSRGDÊLPLÚĵQDPH ĵQDPHĵLG ĵQDPHĵ
UHTXLUHGWLWOH ĵ3URV]ÚSRGDÊLPLÚĵ!
</div>
<div class=”email”>
<label for=”email” class=”required”>(PDLO</label>
LQSXWW\SH ĵHPDLOĵSODFHKROGHU ĵQD]ZDBXĝ\WNRZQLND#QD]ZDBGRPHQ\SOĵQDPH ĵHPDLOĵ
id=”email”
required>
</div>
<div class=”password”>
<label for=”password” class=”required”>+DVïR</label>
<input type=”password” name=”password” id=”password” required>
</div>
<div class=”password”>
<label for=”conf-password” class=”required”>3RWZLHUGěKDVïR</label>
<input type=”password” name=”conf-password” id=”conf-password” required>
</div>
.ROXPQD!
<div class=”birthday”>
<label for=”birthday” class=”required”>'DWDXURG]HQLD</label>
<input type=”date” name=”birthday” id=”birthday” placeholder=”rrrr-mm-dd”
required>
<div id=”consent-container” class=”hide”>
<label for=”parents-consent”>$E\VLÚ]DSLVDÊPXVLV]PLHÊ]JRGÚURG]LFöZ
=D]QDF]WRSROHMHĂOL]JDG]DV]VLÚQD]DSLVDQLHG]LHFND</label>
<input type=”checkbox” name=”parents-consent” id=”parents-consent”>
</div>
</div>
<div class=”bio”>
<label for=”bio”>.UöWNRRVRELH PDNV\PDOQLH]QDNöZ </label>
WH[WDUHDQDPH ĵELRĵLG ĵELRĵURZV ĵĵFROV ĵĵ!WH[WDUHD!
<span id=”bio-count” class=”hide”>140</span>
</div>
<div class=”submit”><input type=”Zarejestruj”></div>
</form>
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH OGÓLNE OMÓWIENIE
WERYFIKACJI
7HQSU]\NïDG]DZLHUDSRQDGZLHUV]\NRGXDMHJRRPöZLHQLHZ\PDJD
VWURQ1DSRF]ÈWNXVNU\SWSU]HSURZDG]DLWHUDFMÚSU]H]ZV]\VWNLHHOHPHQW\
QDVWURQLHDQDVWÚSQLHZ\NRQXMHGZLHSRGVWDZRZHRSHUDFMHVSUDZG]HQLD
NDĝGHMNRQWURONLIRUPXODU]D
SPRAWDZENIE PODSTAWOWE
.RGSU]HSURZDG]DLWHUDFMÚSU]H]ZV]\VWNLHHOHPHQW\QDVWURQLH
LZ\NRQXMHGZDURG]DMHVSUDZG]DQLDpodstawowego6ÈWRSRGVWDZRZHRSHUDFMHVSUDZG]DQLDSU]HSURZDG]DQHZNDĝG\PHOHPHQFLH
LNDĝG\PIRUPXODU]XVLHFLRZ\P
1. &]\HOHPHQW]DZLHUDDWU\EXWrequired"-HĝHOLWDNWRMDNDMHVW
MHJRZDUWRĂÊ"
2. &]\ZDUWRĂÊMHVWGRSDVRZDQDGRDWU\EXWXtype"1DSU]\NïDGF]\
SROHWHNVWRZHW\SXemail zawiera adres e-mail?
SPRAWDZENIE KAŻDEGO ELEMENTU
$E\SU]HMĂÊSU]H]NDĝG\HOHPHQWIRUPXODU]DVLHFLRZHJRVNU\SWZ\NRU]\VWXMHNROHNFMÚelementsIRUPXODU]D ]DZLHUDRQDRGQLHVLHQLDGR
ZV]\VWNLFKNRQWUROHNIRUPXODU]D .ROHNFMDWDMHVWSU]HFKRZ\ZDQD
Z]PLHQQHMRQD]ZLHelements:RPDZLDQ\PSU]\NïDG]LHNROHNFMD
elementsSU]HFKRZXMHZ\PLHQLRQHSRQLĝHMNRQWURONLIRUPXODU]D
2VWDWQLDNROXPQDZVND]XMHF]\HOHPHQWPXVLPLHÊSRGDQÈZDUWRĂÊ
,1'(.6
(/(0(17
:<0$*$1<"
0
elements.name
7DN
1
elements.email
7DN
elements.password
7DN
3
elements.conf-password
7DN
4
elements.birthday
7DN
elements.parents-consent
-HĂOLSRQLĝHM
6
elements.bio
Nie
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
1LHNWöU]\SURJUDPLĂFLDNW\ZQLHEXIRUXMÈHOHPHQW\
IRUPXODU]DZ]PLHQQ\FKQDZ\SDGHNQLHSRZRG]HQLDRSHUDFMLZHU\ğNDFML7RGREUHUR]ZLÈ]DQLH
DOHZFHOX]DFKRZDQLDSURVWRW\LWDNMXĝEDUG]R
REV]HUQHJRSU]\NïDGXZÚ]ï\GODHOHPHQWöZ
IRUPXODU]DQLHVÈEXIRURZDQH
-HĝHOLMHV]F]HWHJRQLH]URELïHĂSRPRFQHEÚG]LH
SREUDQLHNRGXSU]\NïDGX]ZLWU\Q\SRĂZLÚFRQHM
NVLÈĝFH KWWSMDYDVFULSWERRNFRP DE\E\ïSRG
UÚNÈSRGF]DVOHNWXU\NROHMQ\FKVWURQ
3RSU]HSURZDG]HQLXSRGVWDZRZ\FKRSHUDFMLVSUDZG]HQLDVNU\SW
Z\NRQXMHNROHMQHVSUDZG]HQLDSRV]F]HJöOQ\FKHOHPHQWöZIRUPXODU]D
1LHNWöUH]QLFKPDMÈ]DVWRVRZDQLHW\ONRZZ\EUDQ\FKIRUPXODU]DFK
WŁASNE ZADANIA WERYFIKACJI
.ROHMQ\PNURNLHPZNRG]LHMHVWSU]HSURZDG]HQLHRSHUDFMLVSUDZG]HQLDRGSRZLDGDMÈF\FKRNUHĂORQ\PHOHPHQWRPIRUPXODU]D QLH
wszystkim &]\KDVïRMHVWSUDZLGïRZH"
&]\LQIRUPDFMHZSURZDG]RQHZZLHORZLHUV]RZ\PSROXWHNVWRZ\P
PDMÈPQLHMQLĝ]QDNöZ"
-HĝHOLXĝ\WNRZQLNPDPQLHMQLĝODWWRF]\]D]QDF]RQH]RVWDïR
SROHZ\ERUXLQIRUPXMÈFHR]JRG]LHZ\UDĝRQHMSU]H]RVREÚ
GRURVïÈ"
7HRSHUDFMHVSUDZG]HQLDVÈFKDUDNWHU\VW\F]QHGODWHJRIRUPXODU]D
LPDMÈ]DVWRVRZDQLHMHG\QLHGODZ\EUDQ\FKHOHPHQWöZIRUPXODU]D
QLHLFKZV]\VWNLFK •
•
•
MONITOROWANIE ELEMENTÓW VALID
$E\ĂOHG]LÊHZHQWXDOQHEïÚG\WZRU]RQ\MHVWRELHNWRQD]ZLH
valid.LHG\NRGSU]HSURZDG]DLWHUDFMÚSU]H]ZV]\VWNLHHOHPHQW\
LGRNRQXMHSRGVWDZRZHJRVSUDZG]HQLDGODNDĝGHJRHOHPHQWXGR
RELHNWXvalidGRGDZDQDMHVWZïDĂFLZRĂÊ
QD]ZÈZïDĂFLZRĂFLMHVWZDUWRĂÊDWU\EXWXidGDQHJRHOHPHQWX
ZDUWRĂFLÈMHVWZDUWRĂÊERRORZVNDZSU]\SDGNXZ\VWÈSLHQLDEïÚGX
ZHOHPHQFLHEÚG]LHWRZDUWRĂÊfalse
•
•
:’$¥&,:2¥&,2%,(.789$/,'
valid.name
valid.email
valid.password
valid.conf-password
valid.birthday
valid.parents-consent
valid.bio
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH OBSŁUGA BŁĘDÓW
-HĝHOLZ\VWÈSLÈMDNLHNROZLHNEïÚG\VNU\SWPXVLXQLHPRĝOLZLÊZ\VïDQLH
IRUPXODU]DLSRLQIRUPRZDÊXĝ\WNRZQLNDFRSRZLQLHQ]URELÊ
DE\SRSUDZLÊZSURZDG]RQHLQIRUPDFMH
.LHG\VNU\SWVSUDZG]DSRV]F]HJöOQHHOHPHQW\
ZSU]\SDGNX]QDOH]LHQLDEïÚGXZ\VWÚSXMÈGZLH
U]HF]\
8DNWXDOQLRQD]RVWDQLHRGSRZLHGQLDZïDĂFLZRĂÊ
RELHNWXvalidNWöUDZVND]XMHĝH]DZDUWRĂÊ
MHVWQLHSUDZLGïRZD
:\ZRï\ZDQDMHVWIXQNFMDRQD]ZLH
setErrorMessage():\NRU]\VWXMHRQDPHWRGÚ
M4XHU\.data()SR]ZDODMÈFÈQDSU]HFKRZ\ZDQLHGDQ\FKZUD]]HOHPHQWHP7DNZLÚF
NRPXQLNDWREïÚG]LHMHVWSU]HFKRZ\ZDQ\
ZSDPLÚFLZUD]]HOHPHQWHPIRUPXODU]DNWöU\
VSRZRGRZDïSUREOHP
•
•
3RVSUDZG]HQLXZV]\VWNLFKHOHPHQWöZNRPXQLNDW\REïÚGDFKPRĝQDZ\ĂZLHWOLÊ]DSRPRFÈIXQNFML
showErrorMessage()3RELHUDRQDNRPXQLNDW
REïÚG]LHDQDVWÚSQLHXPLHV]F]DJRZHOHPHQFLH
<span>NWöU\]QDMGXMHVLÚWXĝ]DIRUPXODU]HP
=DNDĝG\PUD]HPJG\Xĝ\WNRZQLNSUöEXMHZ\VïDÊ
IRUPXODU]LMHĝHOLZHOHPHQFLHnie]RVWDï]QDOH]LRQ\EïÈGEDUG]RZDĝQHMHVWXVXQLÚFLHZV]\VWNLFK
NRPXQLNDWöZREïÚGDFK]WHJRHOHPHQWX5R]ZDĝ
QDVWÚSXMÈFÈV\WXDFMÚ
a) 8ĝ\WNRZQLNZ\SHïQLïIRUPXODU]VLHFLRZ\
SRSHïQLDMÈFSU]\W\PFRQDMPQLHMGZDEïÚG\
b) 6SRZRGRZDïRWRZ\ĂZLHWOHQLHZLHOXNRPXQLNDWöZREïÚGDFK
c) 8ĝ\WNRZQLNSRSUDZLïMHGHQEïÈGFRR]QDF]D
NRQLHF]QRĂÊXVXQLÚFLDRGSRZLDGDMÈFHJRPX
NRPXQLNDWX1DWRPLDVWNRPXQLNDW\REïÚGDFK
GRW\F]ÈFHQLHXVXQLÚW\FKMHV]F]HSUREOHPöZ
PXV]ÈSR]RVWDÊZLGRF]QH
'ODWHJRWHĝSRGF]DVLWHUDFMLSU]H]ZV]\VWNLHHOHPHQW\QDVWÚSXMHXVWDZLHQLHNRPXQLNDWXREïÚG]LH
OXEXVXQLÚFLHWHJRNRPXQLNDWX
form
elements
name
email
password
conf-password
birthday
parents-consent
bio
key/value
3RZ\ĝHMPRĝHV]]REDF]\ÊGLDJUDPSU]HGVWDZLDMÈF\IRUPXODU]LMHJRNROHNFMÚelements3RQLHZDĝ
Z\VWÈSLïSUREOHP]SRGDQ\PKDVïHPZUD]]W\P
HOHPHQWHPPHWRGD.data()SU]HFKRZXMHSDUÚ
NOXF]ZDUWRĂÊ
:WHQVSRVöEIXQNFMDsetErrorMessage()EÚG]LH
SU]HFKRZ\ZDïDNRPXQLNDW\REïÚGDFKZ\ĂZLHWODQHXĝ\WNRZQLNRZL-HĝHOLEïÈG]RVWDQLHSRSUDZLRQ\ZDUWRĂÊEïÚGX]RVWDQLHXVXQLÚWD SRGREQLHMDN
NRPXQLNDWREïÚG]LH]GDQHJRHOHPHQWX USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
WYSŁANIE FORMULARZA
3U]HGZ\VïDQLHPIRUPXODU]DVLHFLRZHJRVNU\SWVSUDZG]D
F]\Z\VWÈSLï\MDNLHNROZLHNEïÚG\-HĝHOLWDNZ\VïDQLHSOLNX
]RVWDMHZVWU]\PDQHSU]H]VNU\SW
:FHOXVSUDZG]HQLDF]\Z\VWÈSLï\MDNLHNRO
ZLHNEïÚG\WZRU]RQDMHVW]PLHQQDRQD]ZLH
isFormValidNWöUHMSU]\SLVXMHVLÚZDUWRĂÊtrue
1DVWÚSQLHVNU\SWSU]HSURZDG]DLWHUDFMÚSU]H]
ZV]\VWNLHZïDĂFLZRĂFLRELHNWXvalidLMHĂOLRGNU\MH
EïÈG F]\OLMHĂOLGRZROQDZïDĂFLZRĂÊRELHNWX
EÚG]LHPLHÊZDUWRĂÊfalse R]QDF]DWREïÈG
ZIRUPXODU]XVLHFLRZ\PL]PLHQQDisFormValid
UöZQLHĝEÚG]LHPLDïDZDUWRĂÊfalse
=PLHQQDisFormValidMHVW]DWHPXĝ\ZDQDMDNR
ĠDJD PRĝQDMÈSRWUDNWRZDÊMDNRSU]HïÈF]QLN NWöUDSR]QDOH]LHQLXEïÚGXMHVWZ\ïÈF]DQD1D
NRñFXVNU\SWXMHĂOL]PLHQQDisFormValid ma
ZDUWRĂÊfalseIRUPXODU]]DZLHUDEïÈGLQLH
SRZLQLHQE\ÊZ\VïDQ\FRMHVWPRĝOLZHG]LÚNL
Xĝ\FLXPHWRG\preventDefault()
%DUG]RZDĝQHMHVWVSUDZG]HQLHLSU]HWZRU]HQLH
ZV]\VWNLFKHOHPHQWöZ]DQLP]RVWDQLHSRGMÚWD
GHF\]MDRZ\VïDQLXIRUPXODU]D']LÚNLWHPXPRĝQD
MHGQRF]HĂQLHZ\ĂZLHWOLÊZV]\VWNLHNRPXQLNDW\
REïÚGDFK
3RVSUDZG]HQLXZV]\VWNLFKZDUWRĂFLXĝ\WNRZQL
NRZLPRĝQDZ\ĂZLHWOLÊMHG\QLHWHNWöUHPXV]È
E\ÊSRSUDZLRQHDE\PRĝOLZHVWDïRVLÚSRQRZQH
Z\VïDQLHIRUPXODU]D
-HĝHOLG]LDïDQLHIRUPXODU]DMHVW]DWU]\P\ZDQHSR
QDSRWNDQLXSLHUZV]HJREïÚGXXĝ\WNRZQLNEÚG]LH
ZLG]LDïW\ONRMHGHQEïÈGZWUDNFLHNDĝGHMRSHUDFML
Z\VïDQLDIRUPXODU]D7REDUG]RV]\ENRPRĝHVWDÊ
VLÚGODQLHJRIUXVWUXMÈFHJG\EÚG]LHSUöERZDï
SRQRZQLHZ\VïDÊIRUPXODU]LEÚG]LHRWU]\P\ZDÊ
NRPXQLNDW\RNROHMQ\FKEïÚGDFK
Utworzenie zmiennej: isFormValid
:’$¥&,:2¥&,2%,(.78valid
Iteracja przez właściwości obiektu valid
N
Czy wartością
jest false?
T
valid.name
true
valid.email
true
valid.password
true
valid.conf-password
true
valid.birthday
false
valid.parents-consent false
Przejście do kolejnej właściwości
Przypisanie zmiennej isFormValid wartości false
Uniemożliwienie domyślnej akcji, jaką jest wysłanie
formularza
valid.bio
true
Działanie pętli jest zatrzymywane po pierwszym
napotkanym błędzie.
(Zwróć uwagę na fakt, że komunikaty
o błędach są już wyświetlone).
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH OGÓLNE OMÓWIENIE KODU
1DVWURQLHSRSUDZHM]QDMGXMHVLÚRJöOQ\]DU\VNRGXZHU\ğNDFMLSRG]LHORQ\
QDF]WHU\F]ÚĂFL:ZLHUV]XPDP\Z\ZRïDQLHIXQNFMLDQRQLPRZHMSR
Z\VïDQLXIRUPXODU]DVLHFLRZHJR3R]ZDODRQRQDUR]SODQRZDQLHRSHUDFML
ZHU\ğNDFMLLZ\ZRï\ZDQLHLQQ\FKIXQNFML QLHZV]\VWNLH]RVWDï\SRND]DQH
QDVWURQLHSRSUDZHM]QDMG]LHV]MHQDNROHMQ\FKVWURQDFK A. KONFIGURACJA SKRYPTU
1. .RG]QDMGXMHVLÚZIXQNFMLW\SX,,)( WZRU]\
]DNUHVQDSR]LRPLHIXQNFML 2. 6NU\SWSU]HSURZDG]DZHU\ğNDFMÚ]DSRPRFÈ
-DYD6FULSWDE\]DJZDUDQWRZDÊĝHNRPXQLNDW\
REïÚGDFKEÚGÈZ\JOÈGDï\WDNVDPRZHZV]\VWNLFKSU]HJOÈGDUNDFK:EXGRZDQHZ+70/
PHFKDQL]P\ZHU\ğNDFML]RVWDMÈZ\ïÈF]RQHSU]H]
SU]\SLVDQLHZïDĂFLZRĂFLnoValidateZDUWRĂFL
true
3. .LHG\Xĝ\WNRZQLNZ\ĂOHIRUPXODU]QDVWÚSXMH
Z\ZRïDQLHIXQNFMLDQRQLPRZHM ]DZLHUDMÈFHMNRG
SU]HSURZDG]DMÈF\ZHU\ğNDFMÚ 4. =PLHQQDelementsSU]HFKRZXMHNROHNFMÚ
ZV]\VWNLFKHOHPHQWöZIRUPXODU]D
5. 2ELHNWvalidSU]HFKRZXMHLQIRUPDFMHRSRSUDZQRĂFLSRV]F]HJöOQ\FKNRQWUROHNIRUPXODU]D
.DĝGD]QLFK]RVWDïDGRGDQDMDNRZïDĂFLZRĂÊ
RELHNWXvalid
6. =PLHQQDisValidWRRSFMDNWöUDMHVWSRQRZQLH
Xĝ\ZDQDGRVSUDZG]HQLDF]\SRV]F]HJöOQH
HOHPHQW\VÈSUDZLGïRZH
7. =PLHQQDisFormValidWRRSFMDZ\NRU]\VW\ZDQDGRZVND]DQLDSRSUDZQRĂFLFDïHJRIRUPXODU]D
B. PRZEPROWADZENIE PODSTAWOWEGO
SPRAWDZENIA
8. .RGSU]HSURZDG]DLWHUDFMÚSU]H]ZV]\VWNLH
NRQWURONLIRUPXODU]D
9. 'ODNDĝGHMNRQWURONLZ\NRQ\ZDQHVÈGZD
VSUDZG]HQLDSRGVWDZRZH
i) &]\HOHPHQWMHVWZ\PDJDQ\"-HĝHOLWDNWRF]\
PDZDUWRĂÊ"8ĝ\ZDQHMHVWZ\ZRïDQLHIXQNFML
YDOLGDWH5HTXLUHG SDWU]SRGUR]G]LDïķ:\PDJDQHHOHPHQW\IRUPXODU]Dĵ
ii) &]\ZDUWRĂÊRGSRZLDGDW\SRZLGDQ\FKNWöUH
SRZLQQ\VLÚ]QDMGRZDÊZNRQWUROFH"8ĝ\ZDQH
MHVWZ\ZRïDQLHIXQNFMLvalidateTypes()SDWU]
SRGUR]G]LDïķ:HU\ğNDFMDUöĝQHJRURG]DMXHOHPHQWöZLQSXW!ĵ
-HĝHOLNWöUDNROZLHN]Z\PLHQLRQ\FKSRZ\ĝHM
GZöFKIXQNFMLQLH]ZUöFLZDUWRĂFLtrueZDUWRĂFLÈ
]PLHQQHMisValidMHVWfalse
10. .RQVWUXNFMDif-elseVSUDZG]DF]\HOHPHQW
]DOLF]\ïWHVW\ RGE\ZDVLÚWRSU]H]VSUDZG]HQLH
F]\ZDUWRĂFLÈ]PLHQQHMisValidMHVWfalse 11. -HĝHOLNRQWURONDQLHMHVWSUDZLGïRZDIXQNFMD
showErrorMessage()Z\ĂZLHWODXĝ\WNRZQLNRZL
NRPXQLNDWREïÚG]LHSDWU]SRGUR]G]LDïķ:\ĂZLHWODQLHNRPXQLNDWXREïÚG]LHĵ
12. -HĝHOLNRQWURONDMHVWSUDZLGïRZDIXQNFMD
removeErrorMessage()XVXZDZV]HONLHNRPXQLNDW\REïÚGDFKSU]\SLVDQHWHPXHOHPHQWRZL
13. :DUWRĂÊDWU\EXWXidHOHPHQWX]RVWDMHGRGDQD
MDNRZïDĂFLZRĂÊRELHNWXvalidQDWRPLDVWZDUWRĂÊ
ZïDĂFLZRĂFLZVND]XMHF]\GDQHHOHPHQWMHVW
SRSUDZQ\
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
c13/js/validation.js
.RQğJXUDFMDVNU\SWX
(function () {
document.forms.register.noValidate = true;
:\ïÈF]HQLHZHU\ğNDFMLZEXGRZDQHMZ+70/
$(’form’).on(’submit’, function(e) {
.LHG\IRUPXODU]]RVWDQLHZ\VïDQ\
var elements = this.elements;
.ROHNFMDNRQWUROHNIRUPXODU]D
var valid = {};
:ïDVQ\RELHNWZHU\ğNDFML
var isValid;
LV9DOLGVSUDZG]DNRQWURONLIRUPXODU]D
var isFormValid;
LV)RUP9DOLGVSUDZG]DFDï\IRUPXODU]
3U]HSURZDG]HQLHVSUDZG]HQLDSRGVWDZRZHJR Z\ZRïDQLHIXQNFMLSR]DSURFHGXUÈ
REVïXJL]GDU]Hñ for (var i = 0, l = (elements.length - 1); i < l; i++) {
:NROHMQ\PZLHUV]XPDP\Z\ZRïDQLHIXQNFMLYDOLGDWH5HTXLUHG LYDOLGDWH7\SHV LV9DOLG YDOLGDWH5HTXLUHG HOHPHQWV>L@ YDOLGDWH7\SHV HOHPHQWV>L@ if (!isValid) {
-HĝHOLHOHPHQWQLH]DOLF]DW\FKGZöFKWHVWöZ
showErrorMessage(elements[i]);
:\ĂZLHWOHQLHNRPXQLNDWöZREïÚGDFK
} else {
:SU]HFLZQ\PUD]LH
removeErrorMessage(elements[i]); 8VXQLÚFLHNRPXQLNDWöZREïÚGDFK
}
.RQLHFSROHFHQLDLI
valid[elements[i].id] = isValid;
'RGDQLHHOHPHQWXGRRELHNWXYDOLG
}
.RQLHFSÚWOLIRU
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
OGÓLNE OMÓWIENIE KODU
— CIĄG DALSZY
C. PRZEPROWADZENIE WŁASNEJ
WERYFIKACJI
D. CZY WERYFIKACJA FORMULARZA
ZAKOŃCZYŁA SIĘ POWODZENIEM?
14. 3RSU]HSURZDG]HQLXLWHUDFMLSU]H]ZV]\VWNLH
HOHPHQW\IRUPXODU]DPRĝQDSU]HSURZDG]LÊZïDVQÈ
ZHU\ğNDFMÚ:RPDZLDQ\PSU]\NïDG]LHPDP\
WU]\URG]DMHQLHVWDQGDUGRZHMZHU\ğNDFML NDĝG\
]QLFKXĝ\ZDZïDVQHMIXQNFML i) &]\LQIRUPDFMHNWöUHXĝ\WNRZQLNZSURZDG]Lï
RVRELHQLHVÈ]E\WGïXJLH"3DWU]SRGUR]G]LDï
ķ:\ĂZLHWODQLHNRPXQLNDWXREïÚG]LHĵ
ii) &]\KDVïRMHVWSUDZLGïRZH"
iii) &]\ZLHNXĝ\WNRZQLNDSR]ZDODPXQD]DORJRZDQLHVLÚ"-HĝHOLQLHWRF]\]RVWDïR]D]QDF]RQH
SROHZ\ERUXR]QDF]DMÈFH]JRGÚXG]LHORQÈSU]H]
URG]LFöZ"3DWU]SRGUR]G]LDïķ:HU\ğNDFMDXG]LHOHQLD]JRG\SU]H]URG]LFöZĵ
2ELHNWvalidPDWHUD]ZïDĂFLZRĂÊGODNDĝGHJR
HOHPHQWXDZDUWRĂÊZïDĂFLZRĂFLZVND]XMHF]\
HOHPHQWMHVWSUDZLGïRZ\F]\QLH
15. -HĝHOLFKRÊMHGQDZïDVQDZHU\ğNDFMD
HOHPHQWX]DNRñF]\VLÚQLHSRZRG]HQLHPQDVWÈSL
Z\ZRïDQLHIXQNFMLshowErrorMessage()DRGSRZLHGQLDZïDĂFLZRĂÊZRELHNFLHvalidEÚG]LH
PLDïDSU]\SLVDQÈZDUWRĂÊfalse
17. .RGSU]HSURZDG]DLWHUDFMÚSU]H]ZV]\VWNLH
ZïDĂFLZRĂFLZRELHNFLHvalid
18. 3ROHFHQLHifVSUDZG]DF]\HOHPHQWE\ï
QLHSUDZLGïRZ\
19. -HĝHOLHOHPHQWE\ïQLHSUDZLGïRZ\ZDUWRĂFLÈ
]PLHQQHMisFormValidMHVWfalseLQDVWÚSXMH
]DWU]\PDQLHG]LDïDQLDSÚWOL
20. :SU]HFLZQ\PUD]LHZDUWRĂFLÈ]PLHQQHM
isFormValidMHVWtrue
21. 1DNRñFXSRSU]HSURZDG]HQLXLWHUDFMLSU]H]
RELHNWvalidMHĝHOL]PLHQQDisFormValid ma
ZDUWRĂÊfalseWRPHWRGDpreventDefault()
XQLHPRĝOLZLDZ\VïDQLHIRUPXODU]DVLHFLRZHJR
:SU]HFLZQ\PUD]LHIRUPXODU]]RVWDMHZ\VïDQ\
16. -HĝHOLWHVWHOHPHQWX]DNRñF]\VLÚ
SRZRG]HQLHPQDVWÈSLZ\ZRïDQLHIXQNFML
removeErrorMessage()GODWHJRHOHPHQWX
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
JAVASCRIPT
14
15
16
17
18
19
20
21
FMVSODFHKROGHUSRO\ğOOMV
3U]HSURZDG]HQLHZïDVQHMZHU\ğNDFML WRW\ONR]IXQNFML if (!validateBio()) {
:\ZRïDQLHYDOLGDWH%LR MHĝHOLNRQWURONDMHVWQLHSUDZLGïRZD
showErrorMessage(document.getElementById(’bio’));
:\ĂZLHWOHQLHNRPXQLNDWXREïÚG]LH
valid.bio = false;
8DNWXDOQLHQLHRELHNWXHOHPHQWQLHSRSUDZQ\
} else {
:SU]HFLZQ\PUD]LH
removeErrorMessage(document.getElementById(’bio’));
8VXQLÚFLHNRPXQLNDWXREïÚG]LH
} 0LHMVFHQDGZLHNROHMQHIXQNFMH
&]\WHVW\]RVWDï\]DOLF]RQHLF]\PRĝQDZ\VïDÊIRUPXODU]"
,WHUDFMDSU]H]RELHNWYDOLGMHĝHOLZ\VWÈSLï\EïÚG\WR]PLHQQDLV)RUP9DOLG
PDSU]\SLVDQÈZDUWRĂÊIDOVH
IRU YDUğHOGLQYDOLG ^6SUDZG]HQLHZïDĂFLZRĂFLRELHNWXYDOLG
LI YDOLG>ğHOG@ ^-HĝHOLHOHPHQWMHVWQLHSUDZLGïRZ\
isFormValid = false;
3U]\SLVDQLH]PLHQQHMLV)RUP9DOLGZDUWRĂFLIDOVH
break;
=DWU]\PDQLHSÚWOLIRU]QDOH]LRQREïÈG
}
:SU]HFLZQ\PUD]LH
isFormValid = true; )RUPXODU]MHVWZ\SHïQLRQ\SUDZLGïRZRPRĝQDJRZ\VïDÊ
}
-HĝHOLIRUPXODU]MHVWZ\SHïQLRQ\QLHSUDZLGïRZRQLHZROQRJRZ\VïDÊ
if (!isFormValid) {
-HĝHOL]PLHQQDLV)RUP9DOLGPDZDUWRĂÊLQQÈQLĝWUXH
e.preventDefault();
8QLHPRĝOLZLHQLHZ\VïDQLDIRUPXODU]D
}
});
.RQLHFSURFHGXU\REVïXJL]GDU]Hñ
...
0LHMVFHQDZ\ZRï\ZDQHSRZ\ĝHMIXQNFMH
}());
.RQLHFIXQNFMLW\SX,,)(
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
WYMAGANE
ELEMENTY
FORMULARZA
)XQNFMDYDOLGDWH5HTXLUHG
MHVWZ\ZRï\ZDQDGODNDĝGHJR
HOHPHQWX SDWU]NURNZSRGUR]G]LDOHķ2JöOQHRPöZLHQLH
NRGXĵ -HG\Q\PSDUDPHWUHP
IXQNFMLMHVWHOHPHQWSU]H]QDF]RQ\GRVSUDZG]HQLD
$WU\EXWrequiredZ+70/
R]QDF]DĝHGDQHSROHPXVLPLHÊ
ZDUWRĂÊ8WZRU]RQDSU]H]QDV
IXQNFMDYDOLGDWH5HTXLUHG przede
ZV]\VWNLPVSUDZG]DZ\PLHQLRQ\
DWU\EXW-HĝHOLMHVWGRVWÚSQ\QDVWÚSXMH
VSUDZG]HQLHF]\PDZDUWRĂÊ
:\PLHQLRQDIXQNFMDZ\ZRïXMH
QDVWÚSQLHWU]\LQQH
i) LV5HTXLUHG VSUDZG]D
F]\HOHPHQW]DZLHUDDWU\EXW
required
ii) isEmpty()PRĝHVSUDZG]LÊ
F]\HOHPHQWPDZDUWRĂÊ
iii) setErrorMessage()SU]\JRWRZXMHNRPXQLNDW\REïÚGDFK
MHĂOLZ\VWÈSLÈMDNLHNROZLHN
SUREOHP\
IXQFWLRQYDOLGDWH5HTXLUHG HO ^
1 LI LV5HTXLUHG HO ^&]\HOHPHQWMHVWZ\PDJDQ\
2
var valid = !isEmpty(el);
&]\HOHPHQWSRVLDGDZDUWRĂÊ WUXHIDOVH if (!valid) {
-HĝHOLZDUWRĂFLÈ]PLHQQHMYDOLGMHVWIDOVH
3
setErrorMessage(el, ’To pole jest wymagane’);
4
3U]\JRWRZDQLHNRPXQLNDWXREïÚG]LH
}
return valid;
=ZURW]PLHQQHMYDOLG WUXHIDOVH
5
}
return true;
6
-HĝHOLQLHMHVWZ\PDJDQ\WRZV]\VWNRZSRU]ÈGNX
}
A. CZY ELEMENT MA
ATRYBUT REQUIRED?
1. 3ROHFHQLHifXĝ\ZDIXQNFML
RQD]ZLHLV5HTXLUHG do
VSUDZG]HQLDF]\HOHPHQW
]DZLHUDDWU\EXWrequired
)XQNFMDLV5HTXLUHG ]RVWDïD
SRND]DQDQDVWURQLHSRSUDZHM
-HĝHOLZ\PLHQLRQ\DWU\EXW
]QDMGXMHVLÚZHOHPHQFLH
QDVWÈSLZ\NRQDQLHNROHMQHJR
EORNXNRGX
6. -HĝHOLQLHNRGSU]HFKRG]L
GRNURNXFRR]QDF]DĝH
]HOHPHQWHPZV]\VWNRMHVW
ZSRU]ÈGNX
B. JEŻELI TAK, TO CZY
MA ON PRZYPISANĄ
WARTOŚĆ?
C. CZY NALEŻY
PRZYGOTOWAĆ
KOMUNIKAT O BŁĘDZIE?
-HĝHOLSROHIRUPXODU]DMHVW
Z\PDJDQHNROHMQ\PNURNLHP
MHVWVSUDZG]HQLHF]\]DZLHUD
RQRZDUWRĂÊ'RWHJRFHOXVïXĝ\
Z\ZRïDQLHIXQNFMLisEmpty()
UöZQLHĝSU]HGVWDZLRQHMQD
VWURQLHSRSUDZHM
2. :DUWRĂÊ]ZUöFRQDSU]H]
IXQNFMÚisEmpty()MHVWSU]HFKRZ\ZDQDZ]PLHQQHMRQD]ZLH
valid-HĝHOLGDQHSROH
IRUPXODU]DnieEÚG]LHSXVWH
]PLHQQDEÚG]LHSU]HFKRZ\ZDÊ
ZDUWRĂÊtrue-HĝHOLMHVWSXVWH
ZDUWRĂFLÈMHVWfalse
3.3ROHFHQLHifVSUDZG]DF]\
ZDUWRĂFLÈ]PLHQQHMvalid nie
MHVWtrue
4.-HĝHOLZDUWRĂÊMHVWLQQDQLĝ
trueSU]\JRWRZ\ZDQ\MHVW
NRPXQLNDWREïÚG]LH]DSRPRFÈ
IXQNFMLsetErrorMessage()
NWöUD]RVWDïDSU]HGVWDZLRQD
ZSRGUR]G]LDOHķ7ZRU]HQLH
NRPXQLNDWXREïÚG]LHĵ
5.=PLHQQDvalidMHVW
]ZUDFDQDZNROHMQ\PZLHUV]X
ZNWöU\PNRñF]\VLÚG]LDïDQLH
RPDZLDQHMIXQNFML
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
)XQNFMDYDOLGDWH5HTXLUH Xĝ\ZDGZöFKLQQ\FKGRSU]HSURZDG]HQLD
RSHUDFMLVSUDZG]HQLD
LV5HTXLUHG VSUDZG]DF]\HOHPHQWPDDWU\EXWrequired
LV(PSW\ VSUDZG]DF]\HOHPHQWPDZDUWRĂÊ
LV5HTXLUHG
)XQNFMDLV5HTXLUHG SRELHUD
HOHPHQWMDNRSDUDPHWUDQDVWÚSQLHVSUDZG]DF]\DWU\EXW
requiredMHVWREHFQ\ZW\P
HOHPHQFLH:DUWRĂFLÈ]ZURWQÈ
MHVWZDUWRĂÊERRORZVND
,VWQLHMÈGZDURG]DMHVSUDZG]HQLD3LHUZV]H NRGZNRORU]H
QLHELHVNLP MHVWSU]H]QDF]RQH
GODSU]HJOÈGDUHNREVïXJXMÈF\FK
DWU\EXWrequiredZSURZDG]RQ\
Z+70/'UXJL NRGZNRORU]H
SRPDUDñF]RZ\P MHVWGOD
VWDUV]\FKSU]HJOÈGDUHN
:FHOXVSUDZG]HQLDF]\
DWU\EXWrequiredMHVWREHFQ\
Xĝ\OLĂP\ZNRG]LHRSHUDWRUD
typeof-HJRG]LDïDQLHSROHJD
QDVSUDZG]HQLXMDNLZHGïXJ
SU]HJOÈGDUNLMHVWW\SGDQ\FK
DWU\EXWXrequired
IXQFWLRQLV5HTXLUHG HO ^
return ( W\SHRIHOUHTXLUHG
ijERROHDQij HOUHTXLUHG) ||
(typeof el.required === ’string’);
}
NOWOCZESNE PRZEGLĄDARKI
INTERNETOWE
STARSZE PRZEGLĄDARKI
INTERNETOWE
1RZRF]HVQHSU]HJOÈGDUNLLQWHUQHWRZHZLHG]ÈĝHZïDĂFLZRĂÊ
requiredWRZDUWRĂÊERRORZVND
=DWHPSLHUZV]DF]ÚĂÊRSHUDFML
VSUDZG]HQLDWRXVWDOHQLHF]\Xĝ\ZDQDMHVWQRZRF]HVQDSU]HJOÈGDUND'UXJDF]ÚĂÊVSUDZG]HQLD
WRXVWDOHQLHF]\HOHPHQW]DZLHUD
DWU\EXWrequired-HĝHOLDWU\EXW
WHQMHVWGRVWÚSQ\MHJRZDUWRĂFLÈ
EÚG]LHtrue:SU]HFLZQ\PUD]LH
ZDUWRĂFLÈ]ZURWQÈMHVWXQGHğQHG
NWöUDEÚG]LHX]QDQD]DZDUWRĂÊ
falsy
3U]HJOÈGDUNLLQWHUQHWRZHQLHREVïXJXMÈFH+70/QDGDOPRJÈ
ZVND]DÊF]\DWU\EXW+70/
]QDMGXMHVLÚZHOHPHQFLH
:WHJRURG]DMXSU]HJOÈGDUNDFK
MHĝHOLDWU\EXWrequiredEÚG]LH
REHFQ\WR]RVWDQLHSRWUDNWRZDQ\MDNRFLÈJWHNVWRZ\
DZLÚFMDNRZDUWRĂÊtrue-HĝHOL
DWU\EXWXQLHPDWRW\SHPMHVW
XQGHğQHGF]\OLZDUWRĂÊfalsy
7U]HED]ZUöFLÊXZDJÚĝHDWU\EXWrequiredMHG\QLHZVND]XMH
LVWQLHQLHpewnejZDUWRĂFL1LH
RNUHĂODMDNGïXJRWDZDUWRĂÊ
SRZLQQDE\ÊDWDNĝHQLH
SU]HSURZDG]DĝDGQHJRURG]DMX
ZHU\ğNDFML.RQNUHWQHRSHUDFMH
VSUDZG]HQLDWDNLHMDNWXWDM
RPDZLDQHSRZLQQ\E\ÊGRGDQH
GRIXQNFMLvalidateTypes()OXE
VHNFMLZVNU\SFLH]DZLHUDMÈFHM
NRGZïDVQHMZHU\ğNDFML
WSZYSTKIE PRZEGLĄDARKI
INTERNETOWE
STARSZE PRZEGLĄDARKI
INTERNETOWE
3LHUZV]HVSUDZG]HQLHPDQD
FHOXXVWDOHQLHF]\HOHPHQWnie
PDZDUWRĂFL-HĝHOLHOHPHQWPD
ZDUWRĂÊIXQNFMD]ZUDFDfalse
-HĝHOLZDUWRĂÊMHVWSXVWD
IXQNFMD]ZUDFDtrue
-HĝHOLVWDUV]DSU]HJOÈGDUND
LQWHUQHWRZDXĝ\ZDVNU\SWXW\SX
SRO\ğOOGODWHNVWXSRGSRZLHG]L
WRZDUWRĂÊEÚG]LHWDNDVDPD
MDNSRGSRZLHGě%ÚG]LHZLÚF
X]QDQD]DSXVWÈMHĝHOLRELH
ZDUWRĂFL]RVWDQÈGRSDVRZDQH
isEmpty()
3U]HGVWDZLRQDSRQLĝHM
IXQNFMDisEmpty()SRELHUD
SDUDPHWUZSRVWDFLHOHPHQWX
DQDVWÚSQLHVSUDZG]DF]\
PDRQZDUWRĂÊ3RGREQLHMDN
ZSU]\SDGNXLV5HTXLUHG GZLHRSHUDFMHVSUDZG]HQLD
VÈXĝ\ZDQHGR]DSHZQLHQLD
REVïXJL]DUöZQRQRZ\FKMDN
LVWDUV]\FKSU]HJOÈGDUHN
CO JEST WERYFIKOWANE?
function isEmpty(el) {
return !el.value || el.value === el.placeholder;
}
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
TWORZENIE KOMUNIKATU
O BŁĘDZIE
.RGRGSRZLHG]LDOQ\]DZHU\ğNDFMÚSU]HWZDU]DHOHPHQW\SRMHG\QF]R
DZV]HONLHNRPXQLNDW\REïÚGDFKVÈSU]HFKRZ\ZDQH]DSRPRFÈ
PHWRG\M4XHU\RQD]ZLH.data()
JAK USTAWIANE SĄ BŁĘDY?
JAK DANE SĄ PRZECHOWYWANE
Z WĘZŁAMI?
-HĝHOLZWUDNFLHG]LDïDQLDNRGXRGSRZLHG]LDOQHJR
]DZHU\ğNDFMÚ]RVWDQLHQDSRWNDQ\EïÈGQDVWÚSXMH
Z\ZRïDQLHIXQNFMLsetErrorMessage()NWöUD
SRELHUDGZDDUJXPHQW\
i) elHOHPHQWGODNWöUHJRSU]\JRWRZ\ZDQ\MHVW
NRPXQLNDWREïÚG]LH
ii) messageWUHĂÊNRPXQLNDWXREïÚG]LHNWöUD
]RVWDQLHZ\ĂZLHWORQDXĝ\WNRZQLNRZL
.DĝG\NRPXQLNDWREïÚG]LHEÚG]LHSU]HFKRZ\ZDQ\
ZUD]]ZÚ]ïHPHOHPHQWXFRRGE\ZDVLÚ]D
SRPRFÈPHWRG\M4XHU\.data().LHG\PDV]
HOHPHQW\ZGRSDVRZDQ\P]ELRU]HM4XHU\PHWRGD
.data()SR]ZDODQDSU]HFKRZ\ZDQLHLQIRUPDFML
ZSRVWDFLSDUNOXF]ZDUWRĂÊGODSRV]F]HJöOQ\FK
HOHPHQWöZ
1DSU]\NïDGSRQLĝV]HZ\ZRïDQLH
VSRZRGXMHGRGDQLHNRPXQLNDWX
:\SHïQLHQLHWHJRSRODMHVWZ\PDJDQH do
HOHPHQWXSU]HFKRZ\ZDQHJRZ]PLHQQHMel
0HWRGD.data()PDGZDSDUDPHWU\
i)NOXF]NWöU\P]DZV]HEÚG]LHerrorMessage
ii)ZDUWRĂÊNWöUÈEÚG]LHWUHĂÊNRPXQLNDWX
REïÚG]LHSU]H]QDF]RQDGRZ\ĂZLHWOHQLD
setErrorMessage(el, ’To pole jest wymagane’);
setErrorMessage()
1 function setErrorMessage(el, message) {
$(el).data(’errorMessage’, message);
3U]HFKRZ\ZDQLHNRPXQLNDWXREïÚG]LHZUD]]HOHPHQWHP
2
}
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
WYŚWIETLANIE KOMUNIKATU
O BŁĘDZIE
-HĝHOLSRVSUDZG]HQLXZV]\VWNLFKHOHPHQWöZFKRÊMHGHQ]QLFK
EÚG]LHQLHSUDZLGïRZ\IXQNFMDshowErrorMessage()Z\ĂZLHWOL
QDVWURQLHNRPXQLNDWREïÚG]LH
JAK WYŚWIETLANE SĄ KOMUNIKATY
O BŁĘDACH?
-HĝHOL]DFKRG]LNRQLHF]QRĂÊZ\ĂZLHWOHQLDNRPXQLNDWXREïÚG]LHQDMSLHUZQDVWURQLHGRGDQ\EÚG]LH
HOHPHQW<span>EH]SRĂUHGQLRSRSROXIRUPXODU]D
ZNWöU\PZ\VWÈSLïEïÈG
1DVWÚSQLHNRPXQLNDWREïÚG]LH]RVWDQLHGRGDQ\
GRZ\PLHQLRQHJRHOHPHQWX<span>$E\SREUDÊ
WUHĂÊNRPXQLNDWXXĝ\ZDQDMHVWWDVDPDPHWRGD
M4XHU\.data()]DSRPRFÈNWöUHMZF]HĂQLHM
SU]\JRWRZDOLĂP\NRPXQLNDW7\PUD]HPPHWRGD
SRELHUDW\ONRMHGHQSDUDPHWUNOXF] ]DZV]HQLP
EÚG]LHerrorMessage ']LHMHVLÚWRZHZQÈWU]IXQNFMLRQD]ZLH
showErrorMessage()NWöUHMNRGSU]HGVWDZLRQR
SRQLĝHM
1. $elSU]HFKRZXMHZ\EUDQ\SU]H]M4XHU\
HOHPHQWNWöUHJRGRW\F]\NRPXQLNDWREïÚG]LH
2. $errorContainerZ\V]XNXMHZV]HONLHLVWQLHMÈFH
EïÚG\ZW\PHOHPHQFLH2GE\ZDVLÚWRSU]H]
VSUDZG]HQLHF]\LVWQLHMÈHOHPHQW\UöZQRU]ÚGQH
RNODVLHerror
3. -HĝHOLHOHPHQWQLHPDSU]\SLVDQHJRĝDGQHJR
NRPXQLNDWXREïÚG]LHZ\NRQDQ\EÚG]LHNRG
ZQDZLDVLHNODPURZ\P
4. $errorContainerSU]HFKRZXMHHOHPHQW
<span>1DVWÚSQLHPHWRGD.insertAfter()
XPLHV]F]DHOHPHQW<span>QDVWURQLHWXĝ]D
HOHPHQWHPNWöU\VSRZRGRZDïEïÈG
5. =DZDUWRĂÊHOHPHQWX<span>MHVWZ\SHïQLDQD
NRPXQLNDWHPREïÚG]LHGODGDQHJRHOHPHQWX
7UHĂÊNRPXQLNDWXMHVWSRELHUDQD]DSRPRFÈ
PHWRG\.data()WHJRHOHPHQWX
showErrorMessage()
function showErrorMessage(el) {
var $el = $(el);
:\V]XNDQLHHOHPHQWX]EïÚGHP
var $errorContainer = $el.siblings(’.error’); &]\]DZLHUDMXĝMDNLHNROZLHNEïÚG\"
2
1
if (!$errorContainer.length) {
-HĝHOLQLH]QDOH]LRQRNRPXQLNDWöZREïÚGDFK
8WZRU]HQLHHOHPHQWXVSDQ!GRSU]HFKRZ\ZDQLDEïÚGXLGRGDQLHJRSRHOHPHQFLH
ZNWöU\PZ\VWÈSLïEïÈG */
$errorContainer = $(’<span class=”error”></span>’).insertAfter($el);
}
$errorContainer.text($(el).data(’errorMessage’)); 'RGDQLHNRPXQLNDWXREïÚG]LH
}
3
4
5
}
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
WERYFIKACJA RÓŻNEGO
RODZAJU ELEMENTÓW
<INPUT>
1RZHW\S\HOHPHQWöZ<input>Z+70/PDMÈZEXGRZDQHPHFKDQL]P\
ZHU\ğNDFML:RPDZLDQ\PSU]\NïDG]LHXĝ\ZDQHVÈHOHPHQW\+70/
DOHLFKZHU\ğNDFMÚSU]HSURZDG]DP\]DSRPRFÈNRGX-DYD6FULSWDE\
]DSHZQLÊVSöMQHG]LDïDQLHSU]\NïDGXZHZV]\VWNLFKSU]HJOÈGDUNDFK
)XQNFMDvalidateTypes()EÚG]LHSU]HSURZDG]DïDZHU\ğNDFMÚ
SRGREQÈMDNZQRZRF]HVQ\FK
SU]HJOÈGDUNDFKGODHOHPHQWöZ
+70/DOHWXWDMEÚG]LHGRW\F]\ïDZV]\VWNLFKSU]HJOÈGDUHN
.RQLHF]QHMHVW
VSUDZG]HQLHMDNLHJRW\SX
GDQHSRZLQQ\E\ÊSU]HFKRZ\ZDQHSU]H]HOHPHQW
IRUPXODU]D
]DJZDUDQWRZDQLHĝH]DZDUWRĂÊHOHPHQWXRGSRZLDGD
MHJRW\SRZL
•
•
1. 3LHUZV]\ZLHUV]ZIXQNFML
VSUDZG]DF]\HOHPHQWPD
ZDUWRĂÊ-HĝHOLXĝ\WNRZQLNQLH
ZSURZDG]LïĝDGQ\FKLQIRUPDFML
QLHPRĝQD]ZHU\ğNRZDÊ
W\SXGDQ\FK&RZLÚFHMQLH
PRĝQDZöZF]DVPöZLÊ
o QLHZïDĂFLZ\PW\SLHGDQ\FK
'ODWHJRWHĝZSU]\SDGNXEUDNX
ZDUWRĂFLIXQNFMD]ZUDFDtrue
DSR]RVWDïDF]ÚĂÊNRGXIXQNFML
QLHMHVWZ\NRQ\ZDQD USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
2. -HĝHOLHOHPHQWPDZDUWRĂÊ
QDVWÚSXMHXWZRU]HQLH]PLHQQHM
RQD]ZLHtypeSU]H]QDF]RQHM
GRSU]HFKRZ\ZDQLDZDUWRĂFL
DWU\EXWXtype3U]HGHZV]\VWNLPNRGVSUDZG]DF]\M4XHU\
SU]HFKRZXMHMDNLHNROZLHN
LQIRUPDFMHRW\SLHXĝ\ZDMÈF
GRWHJRVZRMHMPHWRG\.data()
ĽZSRGUR]G]LDOHķ8NU\FLH
SRODZ\ERUXGRW\F]ÈFHJR]JRG\
URG]LFöZĵGRZLHV]VLÚGODF]HJR
-HĝHOLQLHVÈSU]HFKRZ\ZDQH
ĝDGQHLQIRUPDFMHSRELHUDQD
MHVWZDUWRĂÊDWU\EXWXtype
1
2
3
4
5
function validateTypes(el) {
if (!el.value) return true; -HĝHOLHOHPHQWQLHPDZDUWRĂFLQDOHĝ\]ZUöFLÊWUXH
:SU]HFLZQ\PUD]LHWU]HEDSREUDÊZDUWRĂÊ]DSRPRFÈPHWRG\GDWD
var type = $(el).data(’type’) || el.getAttribute(’type’);
OXESREUDÊDWU\EXWW\SHSRODWHNVWRZHJR
if (typeof validateType[type] === ’function’) {
&]\DWU\EXWZVND]XMHPHWRGÚGRZHU\ğNDFMLRELHNWX"
return validateType[type](el);
-HĝHOLWDNVSUDZG]DP\SRSUDZQRĂÊZDUWRĂFL
} else {
-HĝHOLQLH
return true;
=ZUDFDP\WUXHSRQLHZDĝZDUWRĂFLQLHPRĝQDSU]HWHVWRZDÊ
}
}
:RPDZLDQ\PSU]\NïDG]LH
]DPLDVWZïDĂFLZRĂFLPRGHOX
'20Xĝ\ZDQDMHVWPHWRGD
getAttribute()SRQLHZDĝ
ZV]\VWNLHSU]HJOÈGDUNLPRJÈ
]ZUöFLÊZDUWRĂÊDWU\EXWXtype
SRGF]DVJG\SU]HJOÈGDUNLQLHUR]SR]QDMÈFHQRZHMZïDĂFLZRĂFL
W\SXPRGHOX'20Z+70/SR
SURVWX]ZUöFÈWHNVW text 3. 7DIXQNFMDXĝ\ZDRELHNWX
RQD]ZLHvalidateType
MHJRNRGSU]HGVWDZLRQRQD
NROHMQHMVWURQLH GRVSUDZG]HQLD
]DZDUWRĂFLHOHPHQWX3ROHFHQLH
ifVSUDZG]DF]\RELHNW
validateTypePDPHWRGÚRQD]ZLHRGSRZLDGDMÈFHMZDUWRĂFL
DWU\EXWXtype-HĝHOLLVWQLHMH
PHWRGDRQD]ZLHGRSDVRZDQHM
GRW\SXNRQWURONLIRUPXODU]DWR
4. (OHPHQWMHVWSU]HND]\ZDQ\
RELHNWRZLZDUWRĂFLÈ]ZURWQÈ
MHVWtrueOXEfalse
5. -HĝHOLQLHGRSDVRZDQR
ĝDGQHMPHWRG\RELHNWQLHPRĝH
SU]HSURZDG]LÊZHU\ğNDFML
NRQWURONLIRUPXODU]DLQLH
]RVWDQLHSU]\JRWRZDQ\NRPXQLNDWREïÚG]LH
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
UTWORZENIE OBIEKTU DO
WERYFIKACJI TYPÓW DANYCH
3U]HGVWDZLRQ\SRQLĝHMRELHNW
validateTypePDWU]\PHWRG\
.RGZSRV]F]HJöOQ\FK
PHWRGDFKMHVWSUDNW\F]QLH
LGHQW\F]Q\1DGROHVWURQ\
PRĝHV]]REDF]\ÊIRUPDW
PHWRG\email().DĝGDPHWRGD
ZHU\ğNXMHGDQH]DSRPRFÈWDN
]ZDQHJRZ\UDĝHQLDUHJXODUnego:VSRPQLDQHZ\UDĝHQLH
UHJXODUQHWRMHG\QDUöĝQLFD
PLÚG]\RPDZLDQ\PLWXWDMPHWRGDPLLVïXĝ\GRVSUDZG]DQLD
RGPLHQQ\FKW\SöZGDQ\FK
var validateType = {
HPDLOIXQFWLRQ HO ^
6SUDZG]HQLHDGUHVX
HPDLO
},
QXPEHUIXQFWLRQ HO ^
6SUDZG]HQLHF]\
ZDUWRĂÊMHVWOLF]EÈ
},
GDWHIXQFWLRQ HO ^
6SUDZG]HQLHIRUPDWX
GDW\
}
}
:\UDĝHQLDUHJXODUQHSR]ZDODMÈQDsprawdzenie istnienia
Z]RUFöZZFLÈJDFKWHNVWRZ\FK
:RPDZLDQ\PSU]\NïDG]LH
VÈXĝ\ZDQHZUD]]PHWRGÈ
RQD]ZLHtest()
:LÚFHMLQIRUPDFMLRZ\UDĝHQLDFK
UHJXODUQ\FKLLFKVNïDGQL
]QDMG]LHV]QDGZöFKNROHMQ\FK
VWURQDFK7HUD]PXVLV]MHG\QLH
ZLHG]LHÊĝHVÈZ\NRU]\VW\ZDQH
GRVSUDZG]HQLDF]\NRQWHQHU
GDQ\FK]DZLHUDRNUHĂORQ\
Z]RU]HF]QDNöZ
3U]HFKRZ\ZDQLHW\FKRSHUDFML
VSUDZG]HñMDNRPHWRGRELHNWX
SRZRGXMHĝHEDUG]RïDWZR
X]\VNDÊGRQLFKGRVWÚSNLHG\
]DFKRG]LSRWU]HEDZHU\ğNDFML
UöĝQHJRW\SXSöOIRUPXODU]D
iii
/[^@]+@[^@]+/.test(el.value);
i
i):\UDĝHQLHUHJXODUQHPD
SRVWDÊ[^@]+@[^@]+ ]QDMGXMH
VLÚPLÚG]\]QDNDPL/ i / 2]QDF]DZ]RU]HF]QDNöZ
NWöUHQDMF]ÚĂFLHM]QDMGXMÈVLÚ
ZDGUHVDFKHPDLO
ii
ii)0HWRGDtest()SRELHUD
MHGHQSDUDPHWU FLÈJWHNVWRZ\ LQDVWÚSQLHVSUDZG]DF]\
Z\UDĝHQLHUHJXODUQHPRĝH
GRSDVRZDÊ]QDNLZW\PFLÈJX
WHNVWRZ\P:DUWRĂFLÈ]ZURWQÈ
PHWRG\MHVWZDUWRĂÊERRORZVND
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
iii):RPDZLDQ\PSU]\NïDG]LH
PHWRG]LHtest()MHVWSU]HND]\ZDQDZDUWRĂÊHOHPHQWX
SU]H]QDF]RQHJRGRVSUDZG]HQLD3RQLĝHMSU]HGVWDZLRQR
PHWRGÚVSUDZG]DMÈFÈDGUHV\
HPDLO
HPDLOIXQFWLRQ HO ^8WZRU]HQLHPHWRG\HPDLO var valid = /[^@]+@[^@]+/.test(el.value);
:\QLNWHVWXMHVWSU]HFKRZ\ZDQ\Z]PLHQQHMYDOLG
if (!valid) { -HĝHOLZDUWRĂFLÈ]PLHQQHMYDOLGQLHMHVWWUXH
2
3 VHW(UURU0HVVDJH HOij3URV]ÚSRGDÊSRSUDZQ\DGUHVHPDLOij 3U]\JRWRZDQLHNRPXQLNDWXREïÚG]LH
}
return valid;
=ZURW]PLHQQHMYDOLG
4
},
1
1. =PLHQQDRQD]ZLHvalid
SU]HFKRZXMHZ\QLNWHVWX
SU]HSURZDG]RQHJR]DSRPRFÈ
Z\UDĝHQLDUHJXODUQHJR
2. -HĝHOLFLÈJWHNVWRZ\QLH
]DZLHUDGRSDVRZDQLD]QDNöZ
ZVND]\ZDQ\FKSU]H]Z\UDĝHQLH
UHJXODUQH
3. 3U]\JRWRZDQLHNRPXQLNDWX
REïÚG]LH
4. )XQNFMD]ZUDFDZDUWRĂÊ
]PLHQQHMvalid PRĝHWRE\Ê
trueOXEfalse USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
WYRAŻENIA REGULARNE
:\UDĝHQLDUHJXODUQHSRZRGXMÈZ\V]XNLZDQLH]QDNöZWZRU]ÈF\FKZ]RU]HF
8PRĝOLZLDMÈWDNĝH]DVWÈSLHQLHW\FK]QDNöZLQQ\PL
:\UDĝHQLDUHJXODUQHQLH
Z\V]XNXMÈSRSURVWXGRSDVRZDQ\FK]QDNöZPRJÈ
SU]HSURZDG]DÊVSUDZG]HQLH
SRGNÈWHPVHNZHQFML]QDNöZ
PDï\FKLGXĝ\FKOLF]E]QDNöZ
SU]HVWDQNRZ\FKLLQQ\FK
,GHDMHVWSRGREQDGRRIHURZDQHMSU]H]HG\WRU\WHNVWX
IXQNFMLW\SXķ]QDMGěL]DPLHñĵ
DOHSR]ZDODQDSU]\JRWRZDQLH
]QDF]QLHEDUG]LHMVNRPSOLNRZDQ\FKRSHUDFMLZ\V]XNLZDQLD
NRPELQDFML]QDNöZ
3RQLĝHMSU]HGVWDZLRQRHOHPHQW\
NRQVWUXNF\MQHZ\UDĝHñUHJXODUQ\FK1DVWURQLHSRSUDZHM
]QDMG]LHV]NLONDSU]\NïDGöZ
SRïÈF]HQLDW\FKHOHPHQWöZ
ZFHOXXWZRU]HQLDQDU]ÚG]L
VïXĝÈF\FKGRGRSDVRZDQLD
Z]RUFDNWöUHEÚGÈRIHURZDÊ
]QDF]QLHZLÚNV]HPRĝOLZRĂFL
.
[ ]
[^ ]
^
$
GRZROQ\]QDN
]Z\MÈWNLHP
QRZHJRZLHUV]D
MHGHQ]QDN
SRGDQ\
ZQDZLDVLH
MHGHQ]QDN
QLH]QDMGXMÈF\VLÚ
ZW\PQDZLDVLH
SRïRĝHQLH
SRF]ÈWNRZH
ZGRZROQ\P
wierszu
SRïRĝHQLH
NRñFRZH
ZGRZROQ\P
wierszu
( )
*
\n
{m,n}
\d
VXEZ\UDĝHQLD
F]DVDPL
QD]\ZDQH
EORNDPLOXE
grupami
SU]HFKZ\W\ZDQLD
SRSU]HGQL
HOHPHQW
Z\VWÚSXMH]HUR
OXEZLÚFHMUD]\
nWH
VXEZ\UDĝHQLH
nWRF\IUD
RGGR
SRSU]HGQL
HOHPHQW
Z\VWÚSXMH
PLQLPXPmUD]\
DOHQLHZLÚFHMQLĝ
nUD]\
F\IUD
\D
\s
\S
\w
\W
]QDNLQQ\QLĝ
F\IUD
]QDNRGVWÚSX
]QDNLQQ\QLĝ
]QDNRGVWÚSX
]QDN
DOIDQXPHU\F]Q\
$ļ=Dļ]
ļ
]QDNLQQ\QLĝ
DOIDQXPHU\F]Q\
]Z\MÈWNLHP_
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
NAJCZĘŚCIEJ STOSOWANE
WYRAŻENIA REGULARNE
2WRZ\EUDQHZ\UDĝHQLDUHJXODUQHNWöUHPRĝHV]Z\NRU]\VWDÊZNRG]LH
&]ÚĂÊ]QLFKRIHUXMH]QDF]QLHZLÚNV]HPRĝOLZRĂFLQLĝWHNWöUH]DDGDSWRZDQR
ZSU]HJOÈGDUNDFKLQWHUQHWRZ\FK
*G\SRZVWDZDïDWDNVLÈĝND
QLHNWöUHUHJXï\ZHU\ğNDFML
VWRVRZDQHSU]H]QDMZDĝQLHMV]H
SU]HJOÈGDUNLQLHG]LDïDï\
QDMOHSLHM&]ÚĂÊ]SRQLĝV]\FK
Z\UDĝHñUHJXODUQ\FKPD
]QDF]QLHEDUG]LHMU\JRU\VW\F]QH
G]LDïDQLH
-HGQDNZ\UDĝHQLDUHJXODUQHQLH
VÈGRVNRQDïH7RQDGDOFLÈJL
WHNVWRZHNWöUHPRJÈQLHE\Ê
ZVWDQLHSU]HSURZDG]LÊZHU\ğNDFMLGDQ\FKDOHSU]HNDĝÈWH
WHVW\QLĝHM
:DUWRUöZQLHĝSDPLÚWDÊ
RLVWQLHQLXZLHOXVSRVREöZ
QDZ\UDĝHQLHWHJRVDPHJR
]Z\NRU]\VWDQLHPZ\UDĝHñ
UHJXODUQ\FK'ODWHJRWHĝ
PRĝHV]VSRW\NDÊVLÚ]LQQ\PL
Z\UDĝHQLDPLUHJXODUQ\PLSU]H]QDF]RQ\PLGRZ\NRQ\ZDQLD
Z\PLHQLRQ\FKSRQLĝHM]DGDñ
/^\d+$/
R]QDF]DOLF]EÚ
^[ \s]+
R]QDF]D]QDNRGVWÚSXQDSRF]ÈWNXZLHUV]D
/[^@]+@[^@]+/
R]QDF]DDGUHVHPDLO
/^#[a-fA-F0-9]{6}$/
R]QDF]DNRORUZ\UDĝRQ\MDNRZDUWRĂÊV]HVQDVWNRZD
ĵ ?ij
# !>??@ABC^_`a
R]QDF]DNRORUZ\UDĝRQ\MDNRZDUWRĂÊV]HVQDVWNRZD
A ?G^`??G^`??G^` _ ?G^`?G^`?G^` R]QDF]DGDWÚZIRUPDFLHUUPPGG
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH WERYFIKACJA
NIESTANDARDOWA
2VWDWQLDF]ÚĂÊVNU\SWXSU]HSURZDG]DWU]\RSHUDFMHVSUDZG]HQLD
NWöUHPDMÈ]DVWRVRZDQLHZSRV]F]HJöOQ\FKHOHPHQWDFK
IRUPXODU]D.DĝGDRSHUDFMDMHVW]GHğQLRZDQDZQD]ZDQHMIXQNFML
1DNROHMQ\FKVWURQDFKSR]QDV]
WHWU]\IXQNFMH.DĝGD]QLFK
MHVWZ\ZRï\ZDQDZGRNïDGQLH
WDNLVDPVSRVöEMDNSU]HGVWDZLRQDSRQLĝHMvalidateBio()
3HïQ\NRGZ\ZRïXMÈF\WH
IXQNFMHMHVWZUD]]SR]RVWDï\PL
SU]\NïDGDPLGRVWÚSQ\ZZLWU\QLHLQWHUQHWRZHMSRĂZLÚFRQHM
NVLÈĝFH )81.&-$
23,6
validateBio()
6SUDZG]HQLHF]\LQIRUPDFMHRXĝ\WNRZQLNX
PDMÈPQLHMQLĝ]QDNöZ
validatePassword()
6SUDZG]HQLHF]\KDVïRPDSU]\QDMPQLHM
]QDNöZ
validateParentsConsent()
-HĝHOLXĝ\WNRZQLNPDPQLHMQLĝODW
PXVLE\Ê]D]QDF]RQHSROHR]QDF]DMÈFH
]JRGÚURG]LFöZ
:V]\VWNLHZ\PLHQLRQHIXQNFMH]ZUDFDMÈZDUWRĂÊtrueOXEfalse
if (!validateBio()) {
:\ZRïDQLHYDOLGDWH%LR MHĂOLNRQWURONDMHVWQLHSUDZLGïRZD
showErrorMessage(document.getElementById(’bio’));
2
:\ĂZLHWOHQLHNRPXQLNDWXREïÚG]LH
valid.bio = false; 8DNWXDOQLHQLHRELHNWXHOHPHQWQLHSRSUDZQ\
} else {
:SU]HFLZQ\PUD]LHQDVWÚSXMHXVXQLÚFLHNRPXQLNDWXREïÚG]LH
removeErrorMessage(document.getElementById(’bio’));
3
}
1
1. )XQNFMDMHVWZ\ZRï\ZDQD
MDNRZDUXQHNZNRQVWUXNFML
if-else=RVWDïRWRSRND]DQH
ZSRGUR]G]LDOHķ2JöOQH
RPöZLHQLHNRGXĵMDNRNURNLRG
GR
2. -HĝHOLZDUWRĂFLÈ]ZURWQÈ
IXQNFMLMHVWfalseQDVWÚSXMH
Z\ĂZLHWOHQLHNRPXQLNDWX
REïÚG]LHDRGSRZLHGQLHMZïDĂFLZRĂFLRELHNWXvalid]RVWDMH
SU]\SLVDQDZDUWRĂÊfalse
3. -HĝHOLZDUWRĂFLÈ]ZURWQÈ
IXQNFMLMHVWtrueNRPXQLNDW
REïÚG]LHMHVWXVXZDQ\
]RGSRZLHGQLHJRHOHPHQWX
N
1
Wywołanie funkcji.
Czy jej wartością
zwrotną jest true?
2
Wywołanie funkcji:
showErrorMessage()
i ustawienie odpowiedniej właściwości
obiektu valid
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
T
3
Wywołanie funkcji:
removeErrorMessage()
WERYFIKACJA INFORMACJI
O UŻYTKOWNIKU I HASŁA
)XQNFMDvalidateBio()
1. :]PLHQQHMRQD]ZLHbio
SU]HFKRZXMHHOHPHQWIRUPXODU]D]DZLHUDMÈF\LQIRUPDFMH
RXĝ\WNRZQLNX
2. -HĝHOLZLHONRĂÊW\FK
LQIRUPDFMLZ\QRVL]QDNöZ
OXEPQLHMZDUWRĂFLÈ]PLHQQHM
validMHVWtrue ZSU]HFLZQ\P
UD]LHZDUWRĂFLÈMHVWfalse 3. -HĝHOL]PLHQQDvalid ma
ZDUWRĂÊLQQÈQLĝtrueWRĮ
c13/js/validation.js
JAVASCRIPT
1
2
3
4
5
function validateBio() {
var bio
= document.getElementById(’bio’);
3U]HFKRZ\ZDQLHRGQLHVLHQLDGRLQIRUPDFMLRXĝ\WNRZQLNX
var valid = bio.value.length <= 140;
&]\WHLQIRUPDFMHPDMÈ]QDNöZOXEPQLHM"
if (!valid) {
-HĝHOLQLHQDOHĝ\SU]\JRWRZDÊNRPXQLNDWREïÚG]LH
VHW(UURU0HVVDJH ELRij,QIRUPDFMHR7RELHPRJÈPLHÊPDNV\PDOQLH]QDNöZij }
return valid;
=ZURWZDUWRĂFLERRORZVNLHM
}
)XQNFMDvalidatePassword()
UR]SRF]\QDG]LDïDQLHRG]DGDñ
SU]HGVWDZLRQ\FKZSRQLĝV]\FK
SXQNWDFK
1. :]PLHQQHMRQD]ZLH
passwordSU]HFKRZXMHHOHPHQW
IRUPXODU]D]DZLHUDMÈF\KDVïR
JAVASCRIPT
1
2
3
4
5
4.ĮQDVWÚSXMHZ\ZRïDQLH
IXQNFMLsetErrorMessage()Ľ
SDWU]SRGUR]G]LDïķ7ZRU]HQLH
NRPXQLNDWXREïÚG]LHĵ
5. $WU\EXWvalidMHVW]ZUDFDQ\
GRNRGXZ\ZRïXMÈFHJRIXQNFMÚ
NWöU\Z\ĂZLHWOLOXEXNU\MH
NRPXQLNDWREïÚG]LH
2. -HĝHOLZDUWRĂÊPDFR
QDMPQLHM]QDNöZWRZDUWRĂFLÈ]PLHQQHMvalidMHVWtrue
ZSU]HFLZQ\PUD]LHZDUWRĂFLÈ
MHVWfalse 3. -HĝHOL]PLHQQDvalid ma
ZDUWRĂÊLQQÈQLĝtrueWRĮ
4.ĮQDVWÚSXMHZ\ZRïDQLH
IXQNFMLsetErrorMessage()
5. $WU\EXWvalidMHVW]ZUDFDQ\
GRNRGXZ\ZRïXMÈFHJRIXQNFMÚ
NWöU\Z\ĂZLHWOLOXEXNU\MH
NRPXQLNDWREïÚG]LH
c13/js/validation.js
function validatePassword() {
var password = document.getElementById(’password’);
3U]HFKRZ\ZDQLHRGQLHVLHQLDGRHOHPHQWXKDVïD
YDUYDOLG SDVVZRUGYDOXHOHQJWK! &]\ZDUWRĂÊPDFRQDMPQLHM]QDNöZ"
if (!valid) {
-HĝHOLQLHQDOHĝ\SU]\JRWRZDÊNRPXQLNDWREïÚG]LH
VHW(UURU0HVVDJH SDVVZRUGij+DVïRPXVLVNïDGDÊVLÚ]SU]\QDMPQLHM]QDNöZij }
return valid;
=ZURWZDUWRĂFLWUXHOXEIDOVH
}
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH ZALEŻNOŚCI KODU I JEGO
PONOWNE UŻYCIE
:NDĝG\PSURMHNFLHQDOHĝ\XQLNDÊWZRU]HQLDGZöFK]HVWDZöZNRGX
Z\NRQXMÈF\FKWRVDPR]DGDQLH3RQDGWRPRĝQDVSUöERZDÊZLHORNURWQLH
Z\NRU]\VW\ZDÊWHQVDPNRGZUöĝQ\FKSURMHNWDFK QDSU]\NïDG]DSRPRFÈ
VNU\SWöZSRPRFQLF]\FKOXEZW\F]HNM4XHU\ -HĝHOL]GHF\GXMHV]VLÚQDWDNLH
UR]ZLÈ]DQLH]ZUöÊXZDJÚQDZV]HONLH]DOHĝQRĂFLZNRG]LH
ZALEŻNOŚCI
&]DVDPLGRSUDZLGïRZHJR
G]LDïDQLDVNU\SWXNRQLHF]QHMHVW
GRïÈF]HQLHLQQHJRVNU\SWXQD
VWURQLH.LHG\WZRU]\V]VNU\SW
RSDUW\QDLQQ\PVNU\SFLHWHQ
drugiMHVWRNUHĂODQ\PLDQHP
]DOHĝQRĂFL
1DSU]\NïDGMHĝHOLWZRU]\V]
VNU\SWZ\NRU]\VWXMÈF\M4XHU\
WRG]LDïDQLHWDNLHJRVNU\SWX
MHVWX]DOHĝQLRQHRGGRïÈF]HQLD
ELEOLRWHNLM4XHU\QDVWURQLH
:SU]HFLZQ\PUD]LHQLHEÚG]LH
PRĝQDXĝ\ZDÊMHMVHOHNWRUöZ
LPHWRG
'REU\PUR]ZLÈ]DQLHPMHVW
ZVND]\ZDQLH]DOHĝQRĂFLZNRPHQWDU]XQDSRF]ÈWNXVNU\SWX
DE\E\ï\MDVQHGODLQQ\FK
SURJUDPLVWöZ2VWDWQLDIXQNFMD
ZRPDZLDQ\PSU]\NïDG]LH
VïXĝ\GRVSUDZG]HQLDZLHNX
Xĝ\WNRZQLNDDMHMSUDZLGïRZH
G]LDïDQLH]DOHĝ\RGREHFQRĂFL
LQQHJRVNU\SWX
WIELOKROTNE UŻYCIE KODU KONTRA JEGO POWIELANIE
.LHG\PDV]GZD]HVWDZ\NRGX
Z\NRQXMÈFHWRVDPR]DGDQLH
PöZLP\RSRZLHODQLXNRGX
1DMF]ÚĂFLHMMHVWWRX]QDZDQH]D
]ïÈSUDNW\NÚZSURJUDPRZDQLX
3U]HFLZLHñVWZHPMHVWZLHORNURWQHZ\NRU]\VW\ZDQLHW\FK
VDP\FKZLHUV]\NRGXZZLÚFHM
QLĝW\ONRMHGQHMF]ÚĂFLVNU\SWX
IXQNFMHWRGRVNRQDï\SU]\NïDG
ZLHORNURWQHJRXĝ\FLDWHJR
VDPHJRNRGX 3UDZGRSRGREQLHVï\V]DïHĂ
ĝHSURJUDPLĂFLRNUHĂODMÈWR
PLDQHP]DVDG\'5< DQJ
GRQijWUHSHDW\RXUVHOIĽķQLH
SRZWDU]DMVLÚĵ ķ.DĝG\VNUDZHN
GDQ\FKPXVLPLHÊSRMHG\QF]È
MHGQR]QDF]QÈL]GHF\GRZDQÈ
UHSUH]HQWDFMÚZV\VWHPLHĵ
5HJXïDWD]RVWDïDVIRUPXïRZDQDSU]H]$QGUHZ+XQWD
L'DYHijD7KRPDVDZNVLÈĝFH
]DW\WXïRZDQHM3UDJPDW\F]Q\
SURJUDPLVWD2GF]HODGQLNDGR
PLVWU]D +HOLRQ USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH
$E\E\ïRPRĝOLZHZLHORNURWQH
Xĝ\FLHWHJRVDPHJRNRGXSURJUDPLĂFLEDUG]RF]ÚVWRWZRU]È
]ELRU\NUöWV]\FKVNU\SWöZ
]DPLDVWMHGQHJRGïXJLHJR 'ODWHJRWHĝZLHORNURWQHXĝ\FLH
NRGXPRĝHGRSURZDG]LÊGR
SRZVWDQLDMHV]F]HZLÚNV]\FK
]DOHĝQRĂFLZNRG]LH3U]\NïDG
VSRWNDïHĂMXĝZF]HĂQLHMZSRVWDFLIXQNFMLSRPRFQLF]\FKGOD
SURFHGXUREVïXJL]GDU]Hñ7HUD]
SR]QDV]NROHMQ\SU]\NïDG
WERYFIKACJA UDZIELENIA
ZGODY PRZEZ RODZICÓW
3RGF]DVZSURZDG]DQLDVNU\SWX
SU]H]QDF]RQHJRGRZHU\ğNDFML
ZVSRPQLDQRĝHIRUPXODU]
Z\NRU]\VWXMHNLONDVNU\SWöZ
XVSUDZQLDMÈF\FKVWURQÚ
6NU\SW\WH]DF]QLHV]SR]QDZDÊ
QDNROHMQHMVWURQLH2MHGQ\P
]QLFKWU]HEDWXWDMSRZLHG]LHÊ
SRQLHZDĝSRGF]DVZF]\W\ZDQLD
VWURQ\XNU\ZDSROHZ\ERUX
R]QDF]DMÈFH]JRGÚURG]LFöZ
7RSROHZ\ERUXEÚG]LHZ\ĂZLHWORQHSRQRZQLHW\ONRZWHG\
JG\Xĝ\WNRZQLNSRGDMHĝHPD
ODWOXEPQLHM
)XQNFMD
validateParentsConsent()
MHVWZ\ZRï\ZDQDWDNVDPR
MDNGZLHZF]HĂQLHMV]HIXQNFMH
SU]HSURZDG]DMÈFHRSHUDFMH
VSUDZG]HQLD SDWU]SRGUR]G]LDï
ķ:HU\ğNDFMDQLHVWDQGDUGRZDĵ :HZQÈWU]WHMIXQNFMLPDP\
1. =PLHQQHSU]H]QDF]RQHGR
SU]HFKRZ\ZDQLDSRODZ\ERUX
GOD]JRG\XG]LHODQHMSU]H]
URG]LFöZRUD]NRQWHQHUGOD
HOHPHQWXWHJRSROD
2. 3U]\SLVDQLH]PLHQQHMvalid
ZDUWRĂFLtrue
3. 3ROHFHQLHifVSUDZG]DF]\
NRQWHQHUGODSRODZ\ERUXnie
MHVWXNU\W\2GE\ZDVLÚWRSU]H]
SREUDQLHZDUWRĂFLDWU\EXWX
classLXĝ\FLHSU]HGVWDZLRQHM
ZUR]G]LDOHZSRGUR]G]LDOH
ķ2ELHNW\JOREDOQHĽRELHNW
6WULQJĵIXQNFMLindexOf() do
VSUDZG]HQLDF]\DWU\EXWPD
ZDUWRĂÊhide-HĝHOLZDUWRĂÊ
nie]RVWDQLH]QDOH]LRQDWR
ZDUWRĂFLÈ]ZURWQÈindexOf()
EÚG]LH-1
JAVASCRIPT
1
2
3
4
5
6
.RGZHU\ğNDFMLRGSRZLHG]LDOQ\
]DVSUDZG]HQLHF]\URG]LFH
XG]LHOLOLWDNLHPXXĝ\WNRZQLNRZL
]JRG\EÚG]LHXUXFKRPLRQ\W\ONR
ZWHG\JG\ZVSRPQLDQHSROH
Z\ERUXMHVWZ\ĂZLHWODQH
'ODWHJRWHĝG]LDïDQLHNRGX
VSUDZG]DMÈFHJRXG]LHOHQLH
]JRG\SU]H]URG]LFöZ]DOHĝ\
RG SRQRZQHJRXĝ\FLD WHJR
VDPHJRNRGXNWöU\VSUDZG]D
F]\SROHZ\ERUXSRZLQQRE\Ê
Z\ĂZLHWORQH7DNLHUR]ZLÈ]DQLH
EÚG]LHG]LDïDïRRLOHLQQ\VNU\SW
Z\ĂZLHWODMÈF\OXEXNU\ZDMÈF\
SROHZ\ERUX ]RVWDQLHGRïÈF]RQ\
QDVWURQLHSU]HGVNU\SWHPRGSRZLHG]LDOQ\P]DZHU\ğNDFMÚ
4. -HĝHOLSROHZ\ERUXQLHMHVW
XNU\WHXĝ\WNRZQLNPDODW
OXEPQLHM:WDNLPSU]\SDGNX
SROHZ\ERUXMHVW]D]QDF]RQH
DZDUWRĂFLÈ]PLHQQHMvalidMHVW
true-HĝHOLQLHE\ïR]D]QDF]RQHZDUWRĂFLÈEÚG]LHfalse
5. -HĝHOLHOHPHQWMHVWQLHSUDZLGïRZ\QDVWÈSLGRGDQLHGR
QLHJRNRPXQLNDWXREïÚG]LH
6. )XQNFMD]ZUDFDZDUWRĂÊ
]PLHQQHMvalidZVND]XMÈF
W\PVDP\PF]\Xĝ\WNRZQLN
RWU]\PDï]JRGÚURG]LFöZ
c13/js/validation.js
function validateParentsConsent() {
var parentsConsent
= document.getElementById(‚parents-consent’);
var consentContainer = document.getElementById(‚consent-container’);
var valid = true;
=PLHQQDYDOLGRWU]\PXMHZDUWRĂÊWUXH
if (consentContainer.className.indexOf(‚hide’) === -1) {
-HĝHOLSROHZ\ERUXMHVWZ\ĂZLHWORQH
valid = parentsConsent.checked;
8DNWXDOQLHQLH]PLHQQHMYDOLGMHVW]D]QDF]RQDOXEQLH
if (!valid) {
-HĝHOLQLHQDOHĝ\Z\ĂZLHWOLÊNRPXQLNDWREïÚG]LH
setErrorMessage(parentsConsent, ‚Wymagana jest zgoda rodziców’);
}
}
return valid;
=ZUöFHQLHLQIRUPDFMLRSUDZLGïRZRĂFLHOHPHQWX
}
USPRAWNIENIA I WERYFIKACJA FORMULARZY SIECIOWYCH UKRYCIE POLA WYBORU
DOTYCZĄCEGO ZGODY
RODZICÓW
-DN]REDF]\ïHĂQDSRSU]HGQLHMVWURQLHIRUPXODU]
VXEVNU\SFMLZ\NRU]\VWXMHGZDGRGDWNRZHVNU\SW\
ZFHOXXVSUDZQLHQLDG]LDïDQLD2WRSLHUZV]\
]QLFKNWöU\PDGRZ\SHïQLHQLDGZD]DGDQLD
8ĝ\FLHNRQWURONLGDW\ZM4XHU\8,ZFHOXZ\ĂZLHWODQLDWDNVDPRZ\JOÈGDMÈFHMNRQWURONLGDW\
ZHZV]\VWNLFKSU]HJOÈGDUNDFKLQWHUQHWRZ\FK
6SUDZG]HQLHF]\SROHZ\ERUXR]QDF]DMÈFH
]JRGÚURG]LFöZSRZLQQRE\ÊZ\ĂZLHWORQH
6SUDZG]HQLHMHVWSU]HSURZDG]DQHSRGF]DV
RSXV]F]DQLDNRQWURONLGDW\ =JRGDURG]LFöZ
MHVWNRQLHF]QDMHĂOLXĝ\WNRZQLNPDSRQLĝHM
ODW •
•
1. 8PLHV]F]HQLHVNU\SWXZIXQNFMLW\SX,,)( QLH
SRND]DQRWHJRZRPDZLDQ\PGLDJUDPLH 2. 7U]\]PLHQQHM4XHU\SU]HFKRZ
Download