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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π½Π° JavaScriptΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 8

Автор ΠœΠ°Ρ€ΠΊ Кан

Часто Π±Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ массив Π² строку ΠΈΠ»ΠΈ строку Π² массив. Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π»Π΅Π³ΠΊΠΎ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ: join ΠΈ split. Ѐункция join ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ массив ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ Π² строку с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ раздСлитСля, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π² join. Ѐункция split дСйствуСт Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ массив ΠΈΠ· строки, опрСдСляя Π½ΠΎΠ²Ρ‹ΠΉ элСмСнт c ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ раздСлитСля, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π² split:


var myString = 'apples are good for your health'; var myArray = myString.split('a'); // строка myString разбиваСтся Π½Π° элСмСнты Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΌ символС 'a'. alert(myArray.join(', ')); // ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ myArray снова Π² строку с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ запятой, // Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт alert(myArray.join('a')); // Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ myArray снова Π² строку с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ символа 'a', // Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ снова получаСтся исходная строка


Π•Ρ‰Π΅ Π΄Π²Π΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами - pop ΠΈ shift. Ѐункция pop удаляСт послСдний элСмСнт ΠΈΠ· массива ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ. Ѐункция shift удаляСт ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт ΠΈΠ· массива ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ.


var students = ['Sam', 'Joe', 'Sue', 'Beth']; while(students.length>0){ alert(students.pop()); }


К соТалСнию, ΠΏΡ€ΠΈ этом массив Π±Ρ‹Π» ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½: ΠΎΠ½ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ пуст. Иногда ΠΈΠΌΠ΅Π½Π½ΠΎ это ΠΈ Π½Π°Π΄ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. Если трСбуСтся просто ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ массив, Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ всСго Π·Π°Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π΄Π»ΠΈΠ½Ρƒ (length) Ρ€Π°Π²Π½ΠΎΠΉ 0:


students.length = 0


Π’Π΅ΠΏΠ΅Ρ€ΡŒ массив пуст. Π”Π°ΠΆΠ΅ Ссли снова Π·Π°Π΄Π°Ρ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ массива большС 0, всС Π΄Π°Π½Π½Ρ‹Π΅ Π² массивС ΡƒΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½Ρ‹.

ВсС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄ΠΎ сих ΠΏΠΎΡ€ массивы Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ "индСксными массивами", Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива ΠΈΠΌΠ΅Π΅Ρ‚ индСкс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для доступа ΠΊ элСмСнту. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ "ассоциативныС массивы", Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива ассоциирован с ΠΈΠΌΠ΅Π½Π΅ΠΌ Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ индСксу:


var grades = []; grades['Sam'] = 90; grades['Joe'] = 85; grades['Sue'] = 94; grades['Beth'] = 82;


АссоциативныС массивы Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π°Ρ‡Π΅, Ρ‡Π΅ΠΌ индСксныС. ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, Π΄Π»ΠΈΠ½Π° массива Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½Π° 0. Как ΠΆΠ΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ элСмСнты находятся Π² массивС? ЕдинствСнный способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» "for-in ":


for(student in grades){ alert("ΠžΡ†Π΅Π½ΠΊΠ° " + student + "Π±ΡƒΠ΄Π΅Ρ‚: " + grades[student]); }


Бинтаксис Ρ†ΠΈΠΊΠ»Π° for-in ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ: " for(item in object){ ". Π¦ΠΈΠΊΠ» ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ Ρ‡Π΅Ρ€Π΅Π· всС элСмСнты Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅, ΠΈ элСмСнт Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π΅ΠΌ элСмСнта. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС элСмСнтом являСтся "Sam", Π·Π°Ρ‚Π΅ΠΌ " Joe", " Sue" ΠΈ " Beth".

ПослСднСС Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΎ массивах состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ ассоциативныС ΠΈ индСксныС массивы, хотя это ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ рСкомСндуСтся, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. ΠŸΡ€ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ использовании, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΌΠΎΠΆΠ½ΠΎ с успСхом это ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ.


var students = ['Sam', 'Joe', 'Sue', 'Beth']; students['Sam'] = 90; students['Joe'] = 85; students['Sue'] = 94; students['Beth'] = 82; alert('ВсСго имССтся '+(students.length)+' студСнтов: '+students.join(', ')); for(var i=0; i<students.length; i++){ alert("ΠžΡ†Π΅Π½ΠΊΠ° " +students[i]+"Π±ΡƒΠ΄Π΅Ρ‚: "+students[students[i]]); }


Π₯отя это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ слоТным, здСсь Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ, ΠΎ Ρ‡Π΅ΠΌ Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Π² этой Π»Π΅ΠΊΡ†ΠΈΠΈ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ достаточно Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ основныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… JavaScript: строки, числа ΠΈ массивы. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ рассмотрСна ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΈΠ»ΠΈ DOM (Document Object Model).

ЛСкция 6. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈΠ»ΠΈ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ DOM (Document Object Model). Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ document.forms, document.getElementById, document.createElement ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ встроСны Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ document.

Π­Ρ‚Π° лСкция посвящСна ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΈΠ»ΠΈ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ DOM (Document Object Model). DOM являСтся просто ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠΌ для "всСго Π½Π° Web-страницС". ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ссылку, ΠΏΠΎΠ»Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ Ρ‚.Π΄. Π½Π° Web-страницС. JavaScript позволяСт ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с Π»ΡŽΠ±Ρ‹ΠΌ элСмСнтом Π½Π° страницС Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. МоТно ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ любой элСмСнт, Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ элСмСнты, ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ…, ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ свойства, ΠΊΠ°ΠΊ Ρ†Π²Π΅Ρ‚, ΡˆΠΈΡ€ΠΈΠ½Π°, высота, ΠΈ Ρ‚.Π΄., Π° ΠΏΡ€ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²ΠΎΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ пСрСтаскивания, Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° страница HTML являСтся Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π΅ΠΌ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ XML. Если Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с XML, Ρ‚ΠΎ смоТСт ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ DOM достаточно Π»Π΅Π³ΠΊΠΎ. Но Π² любом случаС это Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π΅ слоТно. БущСствуСт прСкрасный справочник ΠΏΠΎ адрСсу (http://www.devguru.com/technologies/xml_dom/index.asp), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описываСт ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ DOM, Π½ΠΎ ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ этой Π»Π΅ΠΊΡ†ΠΈΠΈ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ Π² основном ΠΏΠΎΠΉΠΌΠ΅Ρ‚, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Π’Π΅, ΠΊΡ‚ΠΎ Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ XML, ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ этот Ρ€Π°Π·Π΄Π΅Π». ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΅Π³ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ.

Π‘ΡƒΠ΄Π΅ΠΌ Π½Π°Π΄Π΅ΡΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ стСпСни Π·Π½Π°ΠΊΠΎΠΌ с HTML. Π­Ρ‚ΠΎ Ρ‚ΠΎ, ΠΈΠ· Ρ‡Π΅Π³ΠΎ состоит (ΠΏΠΎΡ‡Ρ‚ΠΈ) каТдая Web-страница. КаТдоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ссылка, Ρ‚Π°Π±Π»ΠΈΡ†Π°, ΠΏΠΎΠ»Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ Ρ‚.Π΄. ΠΈΠΌΠ΅ΡŽΡ‚ свой собствСнный Ρ‚Π΅Π³. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ простой страницы HTML:


<HTML> <BODY> <table border="0" cellspacing="2" cellpadding="5"> <tr> <td colspan="2"><img src="Greetings.jpg" id="greetingImg" /></td> </tr> <tr> <td> Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° мою страницу HTML! <br /> <a href="somelink.html" id="myLink" >Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ здСсь!</a> </td> <td><img src="hello.jpg" id="helloImg" /></td> </tr> </table> </BODY> </HTML>


Π­Ρ‚ΠΎ просто обычная страница HTML. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° XML. Π—Π΄Π΅ΡΡŒ нас интСрСсуСт Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт являСтся ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠΌ ΠΈ/ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄ΠΊΠΎΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ элСмСнта. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ находится Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π³Π° TD, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π³ΠΎΠ² TR, TABLE, BODY ΠΈ HTML. Π”Π²ΠΈΠ³Π°ΡΡΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅Π³ BODY ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ "ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°" - Ρ‚Π΅Π³ TABLE. Π­Ρ‚ΠΎΡ‚ Ρ‚Π΅Π³ TABLE ΠΈΠΌΠ΅Π΅Ρ‚ Π² качСствС ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ² Π΄Π²Π° Ρ‚Π΅Π³Π° TR ΠΈ Ρ‚.Π΄. По сути ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ ΠΌΡ‹ пСрСмСщаСмся Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ XML ΠΈΠ»ΠΈ HTML DOM - двигаясь ΠΎΡ‚ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ° ΠΊ ΠΏΡ€Π΅Π΄ΠΊΡƒ ΠΈΠ»ΠΈ ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΠΊΠ° ΠΊ ΠΏΠΎΡ‚ΠΎΠΌΠΊΡƒ.

Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΏΡ€Π΅Π΄ΠΎΠΊ-ΠΏΠΎΡ‚ΠΎΠΌΠΎΠΊ Π² этом ΠΊΠΎΠ΄Π΅.

Π‘Π»ΠΎΠΊ-схСма Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°

НСобходимо Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· этих Ρ‚Π΅Π³ΠΎΠ². НапримСр, Ρ‚Π΅Π³ TABLE (<table border="0" cellspacing="2" cellpadding="5">) ΠΈΠΌΠ΅Π΅Ρ‚ 3 Π·Π°Π΄Π°Π½Ρ‹Ρ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°: border, cellspacing ΠΈ cellpadding. ΠŸΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ DOM часто Π±Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ эти Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹. МоТно, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ SRC Ρ‚Π΅Π³Π° IMG, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ часто Π΄Π΅Π»Π°ΡŽΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для создания эффСкта измСнСния изобраТСния, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ (rollover).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, имСя ΠΎΠ±Ρ‰Π΅Π΅ прСдставлСниС ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ΅ страницы, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ Π΅Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ. НачнСм с создания простого эффСкта измСнСния изобраТСния:


<img src="button_off.gif" onmouseover="this.src='button_over.gif';" onmousedown="this.src='button_down.gif';" onmouseout ="this.src='button_off.gif';" onmouseup ="this.src='button_over.gif';">


Π’ этом ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ 4 события изобраТСния: onmouseover, onmousedown, onmouseout ΠΈ onmouseup. КаТдоС ΠΈΠ· этих событий ΠΈΠΌΠ΅Π΅Ρ‚ присоСдинСнный простой Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° JavaScript, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ измСняСт Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ src изобраТСния. Боздавая Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… изобраТСния, ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈ быстро ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с трСмя ΡΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΌΠΈ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π° состояниями.

Одной ΠΈΠ· Π·Π°Π΄Π°Ρ‡, которая становится всС Π±ΠΎΠ»Π΅Π΅ распространСнной Π² соврСмСнных прилоТСниях JavaScript, являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ добавлСния ΠΈΠ»ΠΈ удалСния элСмСнтов страницы. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ имССтся Ρ„ΠΎΡ€ΠΌΠ°, которая позволяСт ΠΏΠΎΡΠ»Π°Ρ‚ΡŒ ΠΊΠΎΠΌΡƒ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ссылку. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° для адрСса e-mail ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ - для ΠΈΠΌΠ΅Π½ΠΈ получатСля. Если трСбуСтся ΠΏΠΎΡΠ»Π°Ρ‚ΡŒ ссылку нСскольким адрСсатам, Ρ‚ΠΎ Π»ΠΈΠ±ΠΎ придСтся ΠΏΠΎΡΡ‹Π»Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ нСсколько Ρ€Π°Π·, Π»ΠΈΠ±ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π½Π° страницС Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° ΠΏΠΎΠ»Π΅ΠΉ имя/e-mail. Но Π² этом случаС ΠΌΡ‹ всС Π΅Ρ‰Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ числом ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ². Если имССтся пространство для 5 ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ² ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΡΠ»Π°Ρ‚ΡŒ ссылку 20 людям, Ρ‚ΠΎ Ρ„ΠΎΡ€ΠΌΡƒ придСтся Π·Π°ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ 4 Ρ€Π°Π·Π°.

JavaScript позволяСт ΠΎΠ±ΠΎΠΉΡ‚ΠΈ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, дСлая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ динамичСскоС Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ содСрТимого страницы:


1 var inputs = 0; 2 function addContact(){ 3 var table = document.getElementById('contacts'); 4 5 var tr = document.createElement('TR'); 6 var td1 = document.createElement('TD'); 7 var td2 = document.createElement('TD'); 8 var td3 = document.createElement('TD'); 9 var inp1 = document.createElement('INPUT'); 10 var inp2 = document.createElement('INPUT'); 11 12 if(inputs>0){ 13 var img = document.createElement('IMG'); 14 img.setAttribute('src', 'delete.gif'); 15 img.onclick = function(){ 16 removeContact(tr); 17 } 18 td1.appendChild(img); 19 } 20 21 inp1.setAttribute("Name", "Name" +inputs); 22 inp2.setAttribute("Email", "Email"+inputs); 23 24 table.appendChild(tr); 25 tr.appendChild(td1); 26 tr.appendChild(td2); 27 tr.appendChild(td3); 28 td2.appendChild(inp1); 29 td3.appendChild(inp2); 30 31 inputs++; 32 } 33 function removeContact(tr){ 34 tr.parentNode.removeChild(tr); 35 } 36 <table> 37 <tbody id="contacts"> 38 <tr> 39 <td colspan="3"><a href="javascript:addContact();">Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚</a></td> 40 </tr> 41 <tr> 42 <td></td> 43 <td>Name </td> 44 <td>Email</td> 45 </tr> 46 </tbody> 47 </table>