650 likes | 887 Views
ВЕБ-ПРОГРАММИРОВАНИЕ. JAVASCRIPT. Каскадная модель ЖЦ ИС. ЭТАПЫ СОЗДАНИЯ САЙТА. РЕАЛИЗАЦИЯ. РАЗРАБОТКА ПРОТОТИПА ДИЗАЙНА ДИЗАЙН ЭЛЕМЕНТОВ КОДИРОВАНИЕ ПРОГРАММИРОВАНИЕ. Некоторые технологии, использующие Web. HTML, XML, XHTML. Форматы представления данных. CSS.
E N D
ВЕБ-ПРОГРАММИРОВАНИЕ JAVASCRIPT
Каскадная модель ЖЦ ИС ЭТАПЫ СОЗДАНИЯ САЙТА
РЕАЛИЗАЦИЯ • РАЗРАБОТКА ПРОТОТИПА ДИЗАЙНА • ДИЗАЙН ЭЛЕМЕНТОВ • КОДИРОВАНИЕ • ПРОГРАММИРОВАНИЕ
Некоторые технологии, использующие Web HTML, XML, XHTML Форматы представления данных CSS Описание расположения и формы элементов страницы Javascript Программирование на странице клиента Java-сервлеты Программирование на сервере ASP Динамическое создание страниц на сервере AJAX Asynchronous Javascript and XML – Асинхронное динамическое изменениесодержания страницы SQL Язык запросов к базам данных
ТЕХНОЛОГИИ, РАБОТАЮЩИЕ НА СТОРОНЕ КЛИЕНТА Особенности: Загружаются вместе с веб-страницей и работают на пользовательском компьютере => Быстрая реакция на действие пользователя Назначение: • Создание визуальных эффектов: ролловеров, эффектов появления, слайд-шоу, свертываемых структур • Проверка правильности ввода данных, подсчет итогов Технологии: Языки написания скриптов JavaScript, VBScript
ТЕХНОЛОГИИ, РАБОТАЮЩИЕ НА СТОРОНЕ СЕРВЕРА Особенности: Работают на стороне сервера. • Принимают и обрабатывают запросы пользователя. • Динамически формируют код веб-страницы, отправляемой на клиентский компьютер. • Автоматически изменяют код содержимого сайта на сервере. Назначение: Обработка анкет, запросов; Гостевые книги, чаты, форумы, электронные магазины; Технологии:PHP, ASP, ASP.NET, CGI, Java
События DHTML onclick - щелчок мыши ondblclick – дв. щелчок мыши onmouseover – наведение мыши onmouseout – отведение мыши onkeypress – нажатие клавиши onkeydown – удерживание клавиши onkeyup – отпускание клавиши
JAVASCRIPT ВВЕДЕНИЕ
Краткое введение в Javascript Javascriptэто: • Интерпретируемый язык. Его интерпретатор обычно встроен в браузер. • Основное назначение – определять «динамическое» поведениестраниц при загрузке (формирование страницы перед ее открытием)и при работе пользователя со страницей (UI элементы). • Текст на Javascriptможет быть вложен в HTML-страницу непосредственно или находиться в отдельном файле (как CSS). • Похож на языки Javaи C#синтаксически, но сильно отличается от нихпо внутреннему содержанию.
Характеристика Javascript Некоторые важнейшие характеристики Javascript: • Язык объектно-ориентированного программирования. Объекты в языкеимеют «тип», «атрибуты» и «методы» "John,Jane,Paul,Michael".split(",").length • Переменные не имеют заранее заданного типа, то есть в разныемоменты времени могут содержать значения разных типов var number = 25; number = (number < 0); number = "25"; • Типы объектов могут быть: number, string, function, object, undefined. Оператор typeofпозволяет «вычислить» тип объекта. typeof 25 == "number" typeof null == "object"
Основные встроенные типы Есть набор встроенных «классов», порождающих «объекты», различающиеся набором атрибутов и методов. Программисты могутдинамически изменять поведение этих «классов» и создавать своисобственные. Каждый «класс» является объектом, у которого есть«прототип», определяющий набор атрибутов и методов у всех вновьсоздаваемых объектов этого класса. Типы, встроенные в язык, это: - Number : 64-х-разрядные числа с плавающей точкой. - String : строки с символами в формате Unicode. - Array : массивы с переменными границами. - Function : Функции. Каждая функция, кроме того, может служить конструктором объекта. - Boolean, Date, Math, RegExp : логические значения, даты,…
Вставка скрипта. 1. В коде HTML-страницы <SCRIPT Language=“Javascript”> … </SCRIPT> 2. Внешний файл. <SCRIPT language=javascript src=“имя файла"> </SCRIPT>
Обращение к параметру или аттрибуту CSS. Объект.Свойство– обращение к параметрутэга Объект.style.Аттрибут – обращение к аттрибуту CSS Пример. image1.src=“sun.gif”; F1.T1.value=“Privet”; Win2.document.image1.src=“sun.gif”; paragraf1.style.textAlign=“center”; D1.style.display=“block”;
DOM – Объектная модель документа window document … др. объекты документа form select text button …др. элементы форм option
Некоторые сведения о синтаксисе Описание переменных: var count = 25, msg = 'Сообщение об ошибке'; var nullVar; // получает начальное значение null Операции такие же, как в Java и C#, но более широко используется преобразование типов + - * / % ++ -- = += -= *= /= %= == != > < >= <= && || ! 2 + '3' == '23', но 2 + 3 == 5 Многие операторы очень похожи на соответствующие операторы Java и C#,но могут иметь некоторые отличия в семантике. for (var i = 0; i < 100; ++i) { ... } if (x * y < 100) { ... } else { ... } try { ... } catch (e) { ... } finally { ... }
Объекты, встроенные в браузеры При программировании можно использовать ряд встроенных объектов.Основные из них это: - window : представляет «глобальный контекст» и позволяет работать с атрибутами и методами окна. - document : загруженная страница со своей структурой элементов. - navigator : объект, представляющий браузер и его свойства. - location : характеристики текущего URL (порт, хост и т.п.). - объекты, представляющие элементы различных типов в HTML-странице, такие как <body>, <link>, <img>и т.п. - события (events), возникающие от действий пользователя, например, нажатие кнопки мыши (click), загрузка новой страницы (load) и т.д.
Включение Javascript в HTML-страницу Фрагменты кода можно включать в заголовок или тело HTML-документа. Кроме того, можно разместить код в отдельном файле, а в HTML-страницеразместить ссылку на этот файл. <html> <head> <script type="text/javascript"> ... </script> <script type="text/javascript" src="scripts/myscript1.js/> <head> <body> <script type="text/javascript"> ... </script> <script type="text/javascript" src="scripts/myscript2.js/> </body> </html> Код, ссылки на который размещены в заголовке, просто подсоединяетсяк странице и может быть использован, например, для определенияреакций на пользовательские события. Код, ссылки на который размещены в теле, исполняется при загрузке страницы и может непосредственно использоваться для формирования содержания страницы во время загрузки.
Реакция на событие • Код в обработчике события Пример. <IMG SRC=‘sun.gif’name=“img1” onmouseover=‘img1.src=“moon.gif”’ onmouseout=‘img1.src=“sun.gif”’> • Использование функций <IMG SRC=‘sun.gif’ onclick=‘alert(“Hello, world”)’>
Создание и использование функций function имя функции(список параметров) { Операторы } ------------------------- return false; //Выход из функции и возврат результата -------------------------------
Возвращение результата 1. Вывод Сообщения. alert(результат) 2. Изменение свойства элемента. F1.T3.value= результат 3. Изменение области( InnerHTML). d1.innerHTML= результат 4. Вывод в новом документе document.write(результат)
Примеры создания и вызова функций Создание function chimage(obj,pict) {obj.src=pict} --------------------------------------------- Вызов в обработчике события <IMG SRC=‘sun.gif’name=“img1” onmouseover=‘chimage(img1,“moon.gif”)’ onmouseout=‘chimage(img1,“sun.gif”)’> ---------------------------------------- Вызов из скриптаchimage(img1,“moon.gif”); ------------------------------- Вызов по ссылке: <A href=“javascript:chimage(img1,’moon.gif’)”>Смена рисунка</A>
JAVASCRIPT СИНТАКСИС И УПРАВЛЯЮЩИЕ КОНСТРУКЦИИ
Операции, операторы, переменные Операции, операторы \\ комментарий ; разделение операторов в одной строке {} начало и конец блока = оператор присвоения + - * / арифметические операции ++ -- += -= Примеры: a++;b-- \\a=a+1;b=b-1 c+=10; \\ c=c+10
Переменные var имя переменной Основные типы данных: Число, Строка, Логический тип и Объект. var a a=10; b=0.3;c=“ddd”; d=c+a+5; \\d=“ddd105” e=c+(a+5); \\e=“ddd15”
Функциипроверки и преобразования типов • isNaN(значение) – проверка, является ли значение числом • parseInt(значение) преобразование к целому числу • parseFloat(значение) преобразование к вещественному числу • -- Примеры. x=parseInt(F1.T1.value)
Объекты языка • Array • String • Date • Math
Массивы var cn=new Array(3); --- cn[0]=“Russia”;cn[1]=“USA”;cn[2]=“China”; -- Параллельные массивы var cp=new Array(3); cp[0]=“Moscow”;cp[1]=“Washington”; cp[2]=“Bejing”; --- var n=0; var cn=new Array(); cn[n++]=“Russia”;cn[n++]=“USA”;cn[n++]=“China”;
String var s=new String(); Проверка вхождения подстроки в строку: indexOf() Пример. var s=new String() s="индустриализация” i=s.indexOf("@") \\ i=-1 i=s.indexOf("н") \\i=1
Условный оператор if (условие){операторы} if (условие){операторы} else {операторы} Логические операции == равно; != не равно; > больше; < меньше; >= больше или равно; <= меньше или равно Логические операторы || или;&& и Примеры. if (a<b) {min=a} else {min=b}
Проверка корректности введенных данных • Проверка на пустоту. if (str1==””) {alert(“Введите данные”); return false} • Проверка на вхождение подстроки if ((s.indexOf("@")==-1)||(s.indexOf(".")==-1)) {alert ("e-mail введен неправильно"); return false} • Проверка, является значение числовым if (isNaN(F1.T1.value)||isNaN(F1.T2.value)) {alert ("Данные должны быть числовыми"); return false} else {p1=parseInt(F1.T1.value); p2=parseInt(F1.T1.value); …} • Проверка на вхождение числа в диапазон if (x1<0 || x1>100) {alert ("Значение должно быть в диапазоне от 0 до 100"); return false}
Циклы Синтаксис. for (нач. выр. ; условие продолжения; выр. обновления) { операторы }
Примеры циклов 1. Нахождения суммы всех чисел от 1 до 9. s=0 for (var i=1; i<=9; i++) {s+=i} 2. Нахождение минимального элемента массива A. imin=0 for (var i=1; i<=N; i++) {if (A[i]<A[imin]) {imin=i}} alert ("imin ="+imin+"; min="+A[imin])
Два простых примера Метод document.writeиспользуется для непосредственного включенияHTML-текста в содержимое страницы, например, можно сгенерироватьдлинный текст в параграфе: <body><p> <script type="text/javascript"> for (var i = 0; i < 100; ++i) { document.write("Hello, world! "); } </script> </p></body> helloworld.html
Два простых примера(продолжение) Во втором примере датчик случайных чисел используется для генерациислучайной ссылки (из заданного набора): <body> <p> <script type="text/javascript"> var rand = Math.random(); // в диапазоне: [0, 1) var numb = Math.floor(rand*10); var image = "images/image" + numb + ".jpg"; var insert = "<img class=\"floatRight\" src=\"" + image + "\" alt=\"Фотография цветочка\"/>"; document.write(insert); </script> </p> </body> randomPicture.html
Тип String Строки заключаются либо в апострофы, либо в двойные кавычки var slogan = "Don't be evil!"; var image ='<img class="to-right" src="myphoto.jpg"/>'; escape-последовательности: \\ \' \" \t \n Операции над строками: + < > == != "2" + "3" "23" "a" == "A" false 5 == "5" true "10" < "5" true 5 === "5" false 10 < "5" false 5 + "5" "55" Атрибут строки: length – длина строки. "abc".length == 3 Преобразования типов: String(n) Number(s) String(10) < "5" == true Number('3.' + '14') == 3.14
Стандартные методы объектов типа String charAt, indexOf, lastIndexOf, replace, split, substr, substring, toLowerCase, toUpperCase Примеры: "Google".charAt(3) "g" "Google".indexOf("o") 1 "Google".lastIndexOf("o") 2 "Google".replace("o", "oo") "Gooogle" "Google".replace(/o/g, "oo") "Goooogle" "Google".split("o") ["G","","gle"] "Google".substr(1,3) "oog" "Google".substring(1,3) "oo" "Google".toLowerCase() "google" "Google".toUpperCase() "GOOGLE"
Тип Number Числа – это 64-х-разрядные двоичные числа с плавающей точкой. Number.MIN_VALUE Number.MAX_VALUE Number.NaNNumber.POSITIVE_INFINITYNumber.NEGATIVE_INFINITY 5e-3241.7976931348623157e+308 NaNInfinity -Infinity Операции над числами: + - * / % < > == != 3.14 % 2 1.14 Функции преобразования: parseInt, parseFloat, Number, toString parseInt("3.14") 3 parseFloat("*3.14") NaN Number("3.xaxa") NaN 3.14.toString() "3.14" isNaN(3.14 / 0) false isNaN(0 / 0) true
Тип Boolean Стандартные логические значения – trueи false. Однако в качестве условий можно использовать любое значение. "Истинные" условия: "Ложные" условия: if ("") if (2 < 5) if (0) if (25) if (null) if ('Google могуч и ужасен') Логические условия используются в условных операторах и операторахциклов. if (x < y) { z = x; } else { z = y; } while (x < 100) { x = x * 2; n++; } do { x = Math.floor(x / 2); n++; } while (x > 0); for (var y = 0, x = 0; x < 100; ++x) { y += x; }
Тип Date Объекты типа Dateсодержат дату в виде числа миллисекунд, прошедших с 1 января 1970 г. Диапазон от -108 до 108 дней от 1 января 1970 г. Конструкторы: var now = new Date(); // сейчас var january1st1970 = new Date(0); // дата в миллисекундах var gagarin = new Date(1961, 3, 12); var newYear = new Date("January 1, 2009"); Методы, применимые для работы с датами: getDate, getMonth, getFullYear, getTime, getTimezoneOffset, setDate, setFullYear,… function DaysToDate(day, month) { var now = new Date(), year = now.getFullYear(); var bd = new Date(year, month-1, day); var fullDay = 24 * 60 * 60 * 1000; var diff = Math.ceil((bd - now) / fullDay); return diff < 0 ? diff + 365 : diff; } todate.html
Сообщения, выдаваемые в popup-окнах Три стандартные функции используются для генерации сообщенийв popup-окнах: alert, confirm, prompt. alert('Вы просрочили платеж!'); confirm('Вы этого хотите?'); Выдает trueили false var name = prompt('Как Вас зовут?', 'Никак', 'Вопросик...'); Выдает введенную строкуили null
События и реакции на них Имеется большое количество событий, которые можно разделить наследующие классы: - события от мыши (click, dblclick, mousedown,…); - события от клавиатуры (keypress, keydown,…); - события от элементов ввода (focus, submit, select,…); - события страницы (load, unload, error,…); Один из способов программирования состоит в определении реакции на события непосредственно в описании элемента, например: <p>День независимости России <span style="color: blue; text-decoration: underline;" onclick= "alert('Осталось ' + DaysToDate(12, 6) + 'дней');">12 июня</span>. </p> holidays.html Недостаток этого способа: javascript-текстопять смешивается с содержанием страницы.
Тип Array Существует несколько способов создания массива: var holidays = ["1 января", "7 января", "23 февраля"]; var holidays = new Array("1 января", "7 января", "23 февраля"); var holidays = new Array(3); holidays[0] = "1 января"; holidays[1] = "7 января"; holidays[2] = "23 февраля"; Атрибут массива: length – длина массива. var myArray = new Array();myArray[2] = new Date(2008,2,23); myArray[5] = new Date(2008,5,9); myArray.length == 6 ?
Тип Array (продолжение) Методы, определенные для работы с массивом:concat, join, pop, push, shift , unshift, slice var names = ["Петя", "Вася"]; names = names.concat(["Сережа", "Наташа"], ["Оля", "Люба"]); names == ["Петя", "Вася", "Сережа", "Наташа", "Оля", "Люба"] var s = names.join(';'); s == "Петя;Вася;Сережа;Наташа;Оля;Люба" var e = names.pop(); e == "Люба" names == ["Петя", "Вася", "Сережа", "Наташа", "Оля"] var l = names.push("Саша"); l == 6 names == ["Петя", "Вася", "Сережа", "Наташа", "Оля", "Саша"] shift иunshift – точно так же, как popи push, но с началом массива. names = names.slice(1, 4); names == ["Вася", "Сережа", "Наташа", "Оля"]
Тип Array (продолжение) Еще методы, определенные для работы с массивом:reverse, sort, splice, toString var names = ["Вася", "Сережа", "Наташа", "Оля"]; names.reverse(); names == ["Оля", "Наташа", "Сережа", "Вася"] names.sort(); names == ["Вася", "Наташа", "Оля", "Сережа"] var a = [5, 3, 40, 1, 10, 100].sort(); a == [1, 10, 100, 3, 40, 5] var a = [5, 3, 40, 1, 10, 100].sort(function(a,b){return a-b;}); a == [1, 3, 5, 10, 40, 100] names.splice(1, 2, "Саша", "Таня", "Нина"); names == ["Вася", "Саша", "Таня", "Нина", "Сережа"] toString – точно так же, как join(','). names.toString() == "Вася,Саша,Таня,Нина,Сережа"
Работа с таймером Можно создать таймер и определить реакцию на событие от таймера. var timer = setTimeout(func, timeinterval); func – это функция или строка с кодом; timeinterval – время в миллисекундах. Таймер срабатывает один раз и запускает функцию. function launchTimer() { setTimeout("alert('Зенит – чемпион!');", 2000);} Теперь можно запустить этот таймер, например, по событию click: <body> <p>Нажми <span onclick="launchTimer();">сюда!</span></p></body> Пока событие еще не случилось, таймер можно остановить: var timer = setTimeout(func, timeinterval); clearTimeout(timer); settimer.html
Работа с интервальным таймером Таймер может срабатывать многократно через равные промежутки времени. Такой таймер создается с помощью функции setIntervalи останавливается с помощью функции clearInterval. var timer = setInterval(func, timeinterval); function launchInterval() { timer = setInterval("alert('Зенит – чемпион!');", 2000);} function stopTimer() { if (timer) clearInterval(timer); timer = null; } <body> <p>Нажми <span onclick="launchInterval();">сюда,</span>чтобы запустить.</p> <p>Нажми <span onclick="stopTimer();">сюда,</span> чтобы остановить.</p></body> setinterval.html
Календарь • <body bgColor=#923947 link="#008000" onload="start(document.forms[0])" onunload="cleartids()"> • <FONT color="#20ffff"><h3><CENTER>Вы смотрите пример работы скрипта Календарь с фоном цвета!</CENTER></h3></FONT color> • <CENTER> • <SCRIPT LANGUAGE="JavaScript"> • <!-- Begin • monthnames = new Array( • "Январь", • "Февраль", • "Март", • "Апрель", • "Май", • "Июнь", • "Июль", • "Август", • "Сентябрь", • "Октябрь", • "Ноябрь", • "Декабрь");
var linkcount=0; • function addlink(month, day, href) { • var entry = new Array(3); • entry[0] = month; • entry[1] = day; • entry[2] = href; • this[linkcount++] = entry; • } • Array.prototype.addlink = addlink; • linkdays = new Array(); • monthdays = new Array(12);
monthdays[0]=31; • monthdays[1]=28; • monthdays[2]=31; • monthdays[3]=30; • monthdays[4]=31; • monthdays[5]=30; • monthdays[6]=31; • monthdays[7]=31; • monthdays[8]=30; • monthdays[9]=31; • monthdays[10]=30; • monthdays[11]=31; • todayDate=new Date(); • thisday=todayDate.getDay(); • thismonth=todayDate.getMonth(); • thisdate=todayDate.getDate(); • thisyear=todayDate.getYear(); • thisyear = thisyear % 100; • thisyear = ((thisyear < 50) ? (2000 + thisyear) : (1900 + thisyear));
if (((thisyear % 4 == 0) • && !(thisyear % 100 == 0)) • ||(thisyear % 400 == 0)) monthdays[1]++; • startspaces=thisdate; • while (startspaces > 7) startspaces-=7; • startspaces = thisday - startspaces + 1; • if (startspaces < 0) startspaces+=7; • document.write("<table border=2 bgcolor=\"#CCCCCC\" "); • document.write("bordercolor=black><font color=black>"); • document.write("<tr><td colspan=7><center><strong>" • + monthnames[thismonth] + " " + thisyear • + "</strong></center></font></td></tr>"); • document.write("<tr>"); • document.write("<td align=center>Вс</td>"); • document.write("<td align=center>Пн</td>"); • document.write("<td align=center>Вт</td>"); • document.write("<td align=center>Ср</td>"); • document.write("<td align=center>Чт</td>"); • document.write("<td align=center>Пт</td>"); • document.write("<td align=center>Сб</td>"); • document.write("</tr>"); • document.write("<tr>");