Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«HTML 5, CSS 3 ΠΈ Web 2.0. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° соврСмСнных Web-сайтов». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 61

Автор Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π”Ρ€ΠΎΠ½ΠΎΠ²

ΠžΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ Π² Π‘Π»ΠΎΠΊΠ½ΠΎΡ‚Π΅ Web-страницу index.htm старого Web-сайта ΠΈ пСрСсохраним ΠΏΠΎΠ΄ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π² ΠΏΠ°ΠΏΠΊΠ΅ Site 2. Π£Π΄Π°Π»ΠΈΠΌ ΠΈΠ· Π΅Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° cmain всС содСрТимоС ΠΈ сохраним.

Π‘Π½ΠΎΠ²Π° ΠΎΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ Web-страницу index.htm старого Web-сайта ΠΈ пСрСсохраним Π΅Π΅ Π² ΠΏΠ°ΠΏΠΊΠ΅ chapters, Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π² ΠΏΠ°ΠΏΠΊΡƒ Site 2, ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ html.htm. Π£Π΄Π°Π»ΠΈΠΌ ΠΈΠ· Π½Π΅Π΅ всС, ΠΊΡ€ΠΎΠΌΠ΅ содСрТимого ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° cmain, ΠΈ сохраним снова.

Аналогично создадим ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Web-страницы Π½ΠΎΠ²ΠΎΠ³ΠΎ Web-сайта. И Π½Π΅ Π·Π°Π±ΡƒΠ΄Π΅ΠΌ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ графичСского изобраТСния, Π°ΡƒΠ΄ΠΈΠΎ- ΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ»ΠΈΠΏΠ° ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ старого Web-сайта Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ Π½ΠΎΠ²ΠΎΠ³ΠΎ.

ΠžΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ Web-страницу index.htm ΡƒΠΆΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Web-сайта ΠΈ исправим ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚- адрСса Π² гипСрссылках, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Web-страницы. ΠŸΡ€ΠΈ этом Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠΌΠ΅Ρ‚ΡŒ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-адрСса всСх Ρ„Π°ΠΉΠ»ΠΎΠ² с Π²Π½Π΅Π΄Ρ€Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ (изобраТСниями, Π°ΡƒΠ΄ΠΈΠΎ- ΠΈ Π²ΠΈΠ΄Π΅ΠΎΡ€ΠΎΠ»ΠΈΠΊΠ°ΠΌΠΈ) слСдуСт ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Web-страницы index.htm β€” вСдь ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½Π° фактичСски Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡ… Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ.

Web-страницы Π³ΠΎΡ‚ΠΎΠ²Ρ‹. Настала ΠΏΠΎΡ€Π° ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. ΠžΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ Web-страницу index.htm Π½ΠΎΠ²ΠΎΠ³ΠΎ Web-сайта Π² Π‘Π»ΠΎΠΊΠ½ΠΎΡ‚Π΅ ΠΈ ΡƒΠ΄Π°Π»ΠΈΠΌ ΠΈΠ· сСкции Π΅Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΊΠΎΠ΄, ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ outerIndex ΠΈ innerText. Они Π½Π°ΠΌ большС Π½Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½Π΅Π·Π°Ρ‡Π΅ΠΌ Π·Π°ΡΠΎΡ€ΡΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Π½Π΅Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

ΠŸΠΎΡ‚ΠΎΠΌ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ Ρ„Π°ΠΉΠ» main.js Π½ΠΎΠ²ΠΎΠ³ΠΎ Web-сайта, Π½Π°ΠΉΠ΄Π΅ΠΌ Π² Π½Π΅ΠΌ объявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ selectItem ΠΈ ΡƒΠ΄Π°Π»ΠΈΠΌ Π΅Π³ΠΎ. Π’Π°ΠΊΠΆΠ΅ ΡƒΠ΄Π°Π»ΠΈΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΈΠ· Ρ‚Π΅Π»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая пСрСдаСтся ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ onReady ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ext. Π’Π΅ΡΡŒ этот ΠΊΠΎΠ΄ Π½Π°ΠΌ большС Π½Π΅ понадобится β€” скрытиС ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… списков ΠΈ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² полосы Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ ΠΌΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ, Π±ΠΎΠ»Π΅Π΅ "ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ".

Но как?

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ссылки Π½Π° Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΡƒΠ½ΠΊΡ‚ полосы Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ список. Для этого ΠΌΡ‹ объявим Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅.

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ напишСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая станСт ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ события click ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² полосы Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ. Π­Ρ‚Π° функция Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΎΠ½Π° Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΏΠΎΠ΄Π³Ρ€ΡƒΠ·ΠΊΡƒ содСрТимого ΠΈΠ· Ρ„Π°ΠΉΠ»Π°, Ρ‡Π΅ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-адрСс ΡƒΠΊΠ°Π·Π°Π½ Π² гипСрссылкС

ΠΏΡƒΠ½ΠΊΡ‚Π° мСню, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ»ΠΈ ΠΌΡ‹ΡˆΡŒΡŽ, ΠΈ Π²Ρ‹Π²ΠΎΠ΄ Π΅Π³ΠΎ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ cmain. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ тСксты ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌΠΈΡΡ ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌΠΈΡΡ ΠΏΡ€ΠΈ Ρ‰Π΅Π»Ρ‡ΠΊΠ΅ ΠΌΡ‹ΡˆΡŒΡŽ Π½Π° ΠΈΡ… ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°Ρ… (для этого ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠ΄, написанный Π² Π³Π»Π°Π²Π΅ 16). Π’-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ скрытиСм ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ΠΌ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… списков ΠΈ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² полосы Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ Ρ‰Π΅Π»Ρ‡ΠΊΠ°Ρ… Π½Π° Π½ΠΈΡ….

β€” Π•сли ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅Π»ΡŒ Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ» Π½Π° ΠΏΡƒΠ½ΠΊΡ‚Π΅ "внСшнСго" списка, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ полосу Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ список, эта функция:

ΡƒΠ΄Π°Π»ΠΈΡ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ с Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π½Π΅Π΅ ΠΏΡƒΠ½ΠΊΡ‚Π° полосы Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ (Ссли ΠΎΠ½ Π±Ρ‹Π» Π²Ρ‹Π΄Π΅Π»Π΅Π½). Π’Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΡƒΠ½ΠΊΡ‚ полосы Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² особой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ собираСмся ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ;

скроСт ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Ρ€Π°Π½Π΅Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ список (Ссли ΠΎΠ½ Π±Ρ‹Π» ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ ΠΈ Π½Π΅ Π²Π»ΠΎΠΆΠ΅Π½ Π² ΠΏΡƒΠ½ΠΊΡ‚, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ»ΠΈ ΠΌΡ‹ΡˆΡŒΡŽ, β€” Π² этом случаС Π½Π°ΠΌ Π½Π΅Ρ‚ Π½ΡƒΠΆΠ΄Ρ‹ ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ тотчас ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ). ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ список Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² особой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ собираСмся ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ;

Ρ€Π°Π·Π²Π΅Ρ€Π½Π΅Ρ‚ список, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Π² ΠΏΡƒΠ½ΠΊΡ‚, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ»ΠΈ ΠΌΡ‹ΡˆΡŒΡŽ.

β€” Π•сли ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅Π»ΡŒ Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ» Π½Π° ΠΏΡƒΠ½ΠΊΡ‚Π΅ "внСшнСго" списка, Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π³ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ списка, эта функция:

скроСт ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Ρ€Π°Π½Π΅Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ список (Ссли ΠΎΠ½ Π±Ρ‹Π» ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚);

ΡƒΠ΄Π°Π»ΠΈΡ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ с Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π½Π΅Π΅ ΠΏΡƒΠ½ΠΊΡ‚Π° полосы Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ (Ссли ΠΎΠ½ Π±Ρ‹Π» Π²Ρ‹Π΄Π΅Π»Π΅Π½ ΠΈ Ссли это Π½Π΅ Ρ‚ΠΎΡ‚ ΠΆΠ΅ самый ΠΏΡƒΠ½ΠΊΡ‚, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ»ΠΈ ΠΌΡ‹ΡˆΡŒΡŽ, β€” Π² этом случаС Π½Π΅Π·Π°Ρ‡Π΅ΠΌ ΡΠ½ΠΈΠΌΠ°Ρ‚ΡŒ с Π½Π΅Π³ΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сразу ΠΆΠ΅ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ);

Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ ΠΏΡƒΠ½ΠΊΡ‚, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ»ΠΈ ΠΌΡ‹ΡˆΡŒΡŽ.

β€” Π•сли ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅Π»ΡŒ Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ» Π½Π° ΠΏΡƒΠ½ΠΊΡ‚Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ списка, эта функция:

ΡƒΠ΄Π°Π»ΠΈΡ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ с Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π½Π΅Π΅ ΠΏΡƒΠ½ΠΊΡ‚Π° полосы Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ (Ссли ΠΎΠ½ Π±Ρ‹Π» Π²Ρ‹Π΄Π΅Π»Π΅Π½ ΠΈ Ссли это Π½Π΅ Ρ‚ΠΎΡ‚ ΠΆΠ΅ самый ΠΏΡƒΠ½ΠΊΡ‚, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ»ΠΈ ΠΌΡ‹ΡˆΡŒΡŽ);

Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ ΠΏΡƒΠ½ΠΊΡ‚, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ»ΠΈ ΠΌΡ‹ΡˆΡŒΡŽ.

Π•Ρ‰Π΅ Π½Π°ΠΌ понадобятся Π΄Π²Π΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΠ΅Ρ€Π²Π°Ρ, совсСм простая, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½Π° послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠΉ Web-страницы index.htm ΠΈ сдСлаСт всС Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ списки Π² полосС Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ скрытыми.

Вторая функция ΡƒΠ΄Π°Π»ΠΈΡ‚ всС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий, привязанныС ΠΊ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°ΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² со стилСвым классом sample ("вмСстилища" для тСкста ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²). ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ cmain Π½ΠΎΠ²ΠΎΠ΅ содСрТимоС, Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий, привязанныС ΠΊ старому Π΅Π³ΠΎ содСрТимому. Π’Π°ΠΊ ΠΌΡ‹ очистим ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΎΡ‚ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹Ρ… Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² событий ΠΈ устраним ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ появлСния ошибок. Данная функция Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² Ρ‚Π΅Π»Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ описали Ρ‡ΡƒΡ‚ΡŒ Ρ€Π°Π½ΡŒΡˆΠ΅, ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠΎΠ΄Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ содСрТимого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°.

Π§Ρ‚ΠΎ ΠΆ, Π·Π°Π΄Π°Ρ‡ΠΈ ясны. Π—Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ!

Π’ самом Π½Π°Ρ‡Π°Π»Π΅ Ρ„Π°ΠΉΠ»Π° main.js помСстим Π΄Π²Π° выраТСния:

var elLastInnerList = null;

var elLastItem = null;

Они ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ elLastInnerList ΠΈ elLastItem ΠΈ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ null. ΠŸΠ΅Ρ€Π²Π°Ρ пСрСмСнная Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ список, вторая β€” Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΡƒΠ½ΠΊΡ‚ полосы Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ.

Π”Π°Π»Π΅Π΅ объявим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ loadFragment, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ событиС click ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² полосы Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ (листинг 17.1). Она Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°: ΠΏΡƒΠ½ΠΊΡ‚, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ»ΠΈ ΠΌΡ‹ΡˆΡŒΡŽ, Π² Π²ΠΈΠ΄Π΅ экзСмпляра ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Element ΠΈ экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° EventObject, хранящий свСдСния ΠΎ событии. Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ.

Листинг 17.1

function loadFragment(elLI, e) {

if (e)

e. stopEvent();

var elA = elLI.child("A");

if (elA) {

cleanupSamples();

var href = elA.getAttribute("HREF");

Ext.get("cmain"). load({ url: href, success: prepareSamples });

if (elLI.parent("UL"). id == "navbar") {

var elInnerList = elLI.child("UL");

if (elInnerList) {

if (elLastItem) { elLastItem.removeClass("selected"); elLastItem = null;

}

if ((elLastInnerList) && (elLastInnerList.dom!=

elInnerList.dom))

elLastInnerList.setDisplayed(false); elInnerList.setDisplayed(true); elLastInnerList = elInnerList;

} else {

if (elLastInnerList) { elLastInnerList.setDisplayed(false); elLastInnerList = null;

}

if ((elLastItem) && (elLastItem.dom!= elLI.dom))

elLastItem.removeClass("selected");

elLI.addClass("selected");

elLastItem = elLI;

}

} else {

if ((elLastItem) && (elLastItem.dom!= elLI.dom))

elLastItem.removeClass("selected");

elLI.addClass("selected");

elLastItem = elLI;

}

}

}

Рассмотрим листинг 17.1 построчно.

Если Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ loadFragment Π±Ρ‹Π» ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ β€” экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° EventObject, хранящий свСдСния ΠΎ событии, β€” отмСняСм дСйствиС события ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ останавливаСм Π΅Π³ΠΎ всплытиС:

if (e)

e. stopEvent();

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΡ‡Π΅Π²Π°Π» ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° события click ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² полосы Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ нашСго ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Web-сайта (подробности β€” Π² Π³Π»Π°Π²Π΅ 16).

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ гипСрссылку, Π²Π»ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ Π² ΠΏΡƒΠ½ΠΊΡ‚ полосы Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ»ΠΈ ΠΌΡ‹ΡˆΡŒΡŽ:

var elA = elLI.child("A");

Если эта гипСрссылка сущСствуСт, выполняСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

if (elA) {

Π’Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ cleanupSamples, которая ΡƒΠ΄Π°Π»ΠΈΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий Ρƒ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² с тСкстами ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²:

cleanupSamples();

ΠœΡ‹ объявим эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠΎΡ‚ΠΎΠΌ. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-адрСс гипСрссылки:

var href = elA.getAttribute("HREF");

Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ cmain содСрТимоС Ρ„Π°ΠΉΠ»Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-адрСс:

Ext.get("cmain"). load({ url: href, success: prepareSamples });

ПослС Π΅Π³ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ prepareSamples, которая Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌ с тСкстом ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ скрытия ΠΈ раскрытия Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° Ρ‰Π΅Π»Ρ‡ΠΊΠΈ ΠΌΡ‹ΡˆΡŒΡŽ. Π­Ρ‚Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΌΡ‹ объявили Π² Π³Π»Π°Π²Π΅ 16.

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ список β€” Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ ΠΏΡƒΠ½ΠΊΡ‚Π° полосы Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ»ΠΈ ΠΌΡ‹ΡˆΡŒΡŽ, ΠΈ провСряСм, navbar Π»ΠΈ Π΅Π³ΠΎ имя:

if (elLI.parent("UL"). id == "navbar") {

Если это Ρ‚Π°ΠΊ, Π·Π½Π°Ρ‡ΠΈΡ‚, Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡƒΠ½ΠΊΡ‚ являСтся ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠΌ "внСшнСго" списка navbar, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС β€” Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ.

Если это ΠΏΡƒΠ½ΠΊΡ‚ "внСшнСго" списка, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Π² Π½Π΅Π³ΠΎ список, Ссли, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΎΠ½ Ρ‚Π°ΠΌ присутствуСт:

var elInnerList = elLI.child("UL");

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ, присутствуСт Π»ΠΈ Π² ΠΏΡƒΠ½ΠΊΡ‚Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ список:

if (elInnerList) {

Если Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ список присутствуСт, провСряСм, Π²Ρ‹Π΄Π΅Π»Π΅Π½ Π»ΠΈ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΡƒΠ½ΠΊΡ‚ полосы Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ, Ρ‚. Π΅. содСрТит Π»ΠΈ пСрСмСнная elLastItem ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ ΠΎΡ‚ null:

if (elLastItem) { elLastItem.removeClass("selected"); elLastItem = null;

}

Если это Ρ‚Π°ΠΊ, удаляСм ΠΈΠ· привязки ΠΊ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ ΠΏΡƒΠ½ΠΊΡ‚Ρƒ стилСвой класс selected, дСлая Π΅Π³ΠΎ Π½Π΅Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ, ΠΈ присваиваСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ elLastItem Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ null, указывая Ρ‚Π΅ΠΌ самым, Ρ‡Ρ‚ΠΎ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΏΡƒΠ½ΠΊΡ‚ полосы Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½.

Π’Π°ΠΊΠΆΠ΅ провСряСм, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ Π»ΠΈ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ список (содСрТит Π»ΠΈ пСрСмСнная elLastInnerList ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ ΠΎΡ‚ null), ΠΈ Π½Π΅ Ρ‚ΠΎΡ‚ Π»ΠΈ это список, Ρ‡Ρ‚ΠΎ Π²Π»ΠΎΠΆΠ΅Π½ Π² ΠΏΡƒΠ½ΠΊΡ‚, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ»ΠΈ ΠΌΡ‹ΡˆΡŒΡŽ:

if ((elLastInnerList) && (elLastInnerList.dom!=

elInnerList.dom))

elLastInnerList.setDisplayed(false);

Если это Ρ‚Π°ΠΊ, скрываСм этот список.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΌΡ‹ провСряСм Ρ‚ΠΎΠΆΠ΄Π΅ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ списка Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ содСрТится Π² ΠΏΡƒΠ½ΠΊΡ‚Π΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ»ΠΈ ΠΌΡ‹ΡˆΡŒΡŽ. ΠœΡ‹ сравниваСм Π½Π΅ экзСмпляры ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Element, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ext Core, Π° экзСмпляры ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° HTMLElement Web-обозрСватСля. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ext Core Π² Ρ€Π°Π·Π½Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ экзСмпляры ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Element, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ элСмСнт Web-страницы. Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° HTMLElement, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π΄Π°Π½Π½Ρ‹ΠΉ элСмСнт Web-страницы, всСгда ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅.