SlideShare a Scribd company logo
1 of 63
Download to read offline
Темы лекции: JavaScript, Ajax, jQuery.
Практическое задание: JavaScript, Ajax, jQuery.
Тренер: Игорь Шкулипа, к.т.н.
Разработка Веб-приложений на платформе
Microsoft .NET Framework.
Занятие 2
http://www.slideshare.net/IgorShkulipa 2
JavaScript
JavaScript - предназначен для написания сценариев для активных HTML-
страниц. Язык JavaScript не имеет никакого отношения к языку Java.
Java разработан фирмой SUN. JavaScript - фирмой Netscape
Communication Corporation. Первоначальное название - LiveScript.
После завоевания языком Java всемирной известности LiveScript из
коммерческих соображений переименовали в JavaScript.
JavaScript не предназначен для создания автономных приложений.
Программа на JavaScript встраивается непосредственно в исходный
текст HTML-документа и интерпретируется брaузером по мере загрузки
этого документа. С помощью JavaScript можно динамически изменять
текст загружаемого HTML-документа и реагировать на события,
связанные с действиями посетителя или изменениями состоятия
документа или окна.
Важная особенность JavaScript - объектная ориентированность.
Программисту доступны многочисленные объекты, такие, как
документы, гиперссылки, формы, фреймы и т.д. Объекты
характеризуются описательной информацией (свойствами) и
возможными действиями (методами).
http://www.slideshare.net/IgorShkulipa 3
Тег <script>
Сценарий JavaScript встраивается в HTML-документ с помощью тега
<script>.
<script type="text/javascript">
<!--
document.write(“Hello, JavaScript!");
//-->
</script>
Текст сценария оформляется как комментарий, чтобы не было проблем у
посетителей, брaузеры которых не понимают JavaScript. Кроме того к
символам, завершающим комментарий добавляется еще два символа
"/", т.к. некоторые браузеры рассматривает строку, состоящую только
из символов "-->", как ошибочную.
http://www.slideshare.net/IgorShkulipa 4
Переменные
Переменные в JavaScript объявляются с помощью ключевого слова var.
При объявлении тип переменной не указывается. Этот тип
присваивается переменной только тогда, когда ей присваивается
какое-либо значение.
var Buf="";
var i=100;
var f=1.234;
Числа в строки интерпретатор JavaScript преобразует автоматически. Для
преобразования строк в числа используют специальные функции
parseInt и parseFloat.
Преобразования типов:
var myVar = "3.14159",
str = ""+ myVar,// в string
int = ~~myVar, // в integer
float = 1*myVar, // во float
bool = !!myVar, // в boolean
array = [myVar]; // в array
http://www.slideshare.net/IgorShkulipa 5
Операции
Унарные операции
- Изменение знака на противоположный
! Дополнение. Используется для реверсирования значения
логических переменных
++ Увеличение значения переменной. Может применяться и как
префикс, и как суффикс
-- Уменьшение значения переменной. Может применяться и как
префикс, и как суффикс
Бинарные операции
- Вычитание
+ Сложение
* Умножение
/ Деление
% Остаток от деления
http://www.slideshare.net/IgorShkulipa 6
Операции
Побитовые операции
Операции сдвига
& И
| ИЛИ
^ исключающее ИЛИ
~ НЕ
>> Сдвиг вправо
<< Сдвиг влево
>>> Сдвиг вправо с заполнением освобождаемых разрядов
нулями
http://www.slideshare.net/IgorShkulipa 7
Операции
Условные операции
> Больше
>= Больше или равно
< Меньше
<= Меньше или равно
== Равно
!= Не равно
|| Логическое ИЛИ
&& Логическое И
Другие операции
. Доступ к полю объекта. ( document.write(Buf); )
[ ] Индексирование массива ( dim[i] )
( ) Изменение порядка вычислений или передача параметров
функции
, Разделение выражений в многократном вычислении
http://www.slideshare.net/IgorShkulipa 8
Операции присваивания
= Присваивание
+= Сложение или слияние строк
–= Вычитание
*= Умножение
/= Деление
>>= Сдвиг вправо
<<= Сдвиг влево
>>>= Сдвиг вправо с заполнением освобождаемых разрядов
нулями
&= И
|= ИЛИ
^= Исключающее ИЛИ
http://www.slideshare.net/IgorShkulipa 9
Условная операция
«? :»
Форма записи:
"условие" ? "выражение 1" : "выражение 2";
Если условие истинно, то выполняется выражение 1, иначе
выполняется выражение 2.
http://www.slideshare.net/IgorShkulipa 10
Условный оператор
Если <условие>==true, то выполнится <оператор1> , в ином случае -
<оператор2>.
Блок <else> может быть опущен. В таком случае при истинном условии
выполнится <оператор1> , а за ним – оператор, следующий после
условного.
Вместо <оператор1> и <оператор2> может использоваться любой
оператор, включая составной оператор ({}), операторы циклов,
операторы выбора и условный, вызова функции, пустой оператор (;)
и др.
10
if (условие)
оператор1;
else
оператор2;
http://www.slideshare.net/IgorShkulipa 11
Оператор выбора
Синтаксис выбирающего оператора допускает пустой составной оператор
и пустой оператор в качестве операторов, следующих за условием
выбирающего оператора:
switch (i) ;
switch (j) {}
switch (r) i++;
Общий вид оператора выбора:
switch (условие)
{
case <константное выражение 1>: <оператор 1>;
case <константное выражение 2>: <оператор 2>;
...
case <константное выражение N>: <оператор N>;
default: <оператор N+1>;
}
http://www.slideshare.net/IgorShkulipa 12
Схема выполнения оператора switch
● вычисляется выражение в круглых скобках после оператора switch
(предварительная стадия);
● это значение последовательно сравнивается со значениями
константных выражений за метками case (стадия определения
начальной точки выполнения оператора);
● если значения совпадают, управление передаётся соответствующему
помеченному оператору (стадия выполнения);
● если ни одно значение не совпадает и в теле оператора case есть
оператор, помеченный меткой default, управление передаётся этому
оператору (стадия выполнения);
● если ни одно значение не совпадает, и в теле оператора case нет
оператора, помеченного меткой default, управление передаётся
оператору, следующему за оператором switch (стадия выполнения).
На стадии выполнения все операторы от точки выполнения и до конца
тела оператора выполняются независимо от меток, если только какой-
нибудь из операторов не передаст управление за пределы оператора
выбора.
http://www.slideshare.net/IgorShkulipa 13
Оператор цикла «for»
for (<выражение1>; <выражение2>; <выражение3> )
<оператор>;
for (<переменная> in <объект>)
<оператор>;
Оператор цикла «for-in»
while (<условие>)
{
<оператор>
}
Оператор цикла с условием
http://www.slideshare.net/IgorShkulipa 14
Операторы break и continue
Оператор прекращения. Прерывает выполнение текущего блока.
break;
Оператор продолжения. Прерывает выполнение текущей итерации
цикла и переходит к следующей.
continue;
http://www.slideshare.net/IgorShkulipa 15
Обработка исключений
try
{
dddocument.write(‘Hello, JavaScript');
}
catch (er)
{
document.write(er);
}
finally
{
document.write(‘Errors checked.');
throw ‘New exception thrown.';
}
http://www.slideshare.net/IgorShkulipa 16
Специальные операторы
Оператор delete. С помощью оператора delete можно удалить указанный элемент.
Оператор возвращает true если удаление указанного элемента прошло успешно,
и false если нет..
delete x;
Оператор in. С помощью оператора in можно узнать имеется ли произвольное
свойство у указанного объекта или массива. Возвращает true если указанное
свойство есть, и false, если нет..
1 in set;
Оператор instanceof сверяет тип объекта с переданным значением. Если они
совпадают, метод возвращает true, если нет false.
g instanceof Array
Оператор typeof возвращает тип указанного объекта.
var fio={surname:'Пупкин',name:'Василий',middle:'Борисович'};
alert(typeof fio);
http://www.slideshare.net/IgorShkulipa 17
События
События - это функции, которые могут быть привязаны к элементам
HTML страниц.
Код событий выполнится только после того, как произойдет их
активирующее действие. Разные типы событий имеют разные
активирующие действия.
Примеры активирующих действий JavaScript:
• Щелчок мыши (событие onclick);
• Нажатие клавиши (onkeypress);
• Отправление формы (onsubmit);
• Наведение курсора мыши на элемент (onmouseover) или
выведение курсора мыши за пределы границ элемента
(onmouseout);
• Полная загрузка страницы или картинки (onload);
• Изменение содержимого элемента, например содержимого
текстового поля формы (onchange).
http://www.slideshare.net/IgorShkulipa 18
Функции JavaScript
Все функции JavaScript рекомендуется помещать в контейнер <HEAD>...</HEAD>.
Тем самым вы обеспечите их гарантированную доступность при обработке HTML-
документа.
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script>
<!--
function changeBackground(a, color)
{
document.getElementById(a).
setAttribute("style","background-color:"+color);
}
//-->
</script>
</head>
<body>
<img id="img1" src="1.png"
onmouseover="changeBackground('img1', 'Red');"
onmouseout="changeBackground('img1', 'Green');"/>
</body>
</html>
http://www.slideshare.net/IgorShkulipa 19
Результат
http://www.slideshare.net/IgorShkulipa 20
Объекты JavaScript
Язык JavaScript является объектно-ориентированным. Объекты JavaScript
представляют собой наборы свойств и методов. Можно сказать, что
свойства объектов - это данные, связанные с объектом, а методы -
функции для обработки данных объекта.
В языке JavaScript имеется три вида объектов: встроенные объекты,
объекты брaузера и объекты, создаваемые программистом.
JavaScript поддерживает следующий набор встроенных объектов: Array,
Boolean, Date, Global, Function, Math, Number, String.
Одной из особенностей языка является реализация прототипного
наследования.
http://www.slideshare.net/IgorShkulipa 21
JSON
JSON (JavaScript Object Notation) — текстовый формат обмена данными,
основанный на JavaScript.
JSON строится на двух структурах:
• Коллекция пар ключ/значение. В разных языках, эта концепция
реализована как объект, запись, структура, словарь, хэш, именованный
список или ассоциативный массив.
• Упорядоченный список значений. В большинстве языков это
реализовано как массив, вектор, список или последовательность.
В JSON используются их следующие формы:
• Объект — это неупорядоченное множество пар имя/значение, заключённое
в фигурные скобки { }. Между именем и значением стоит символ ": ", а
пары имя/значение разделяются запятыми.
• Массив (одномерный) — это множество значений, имеющих порядковые
номера (индексы). Массив заключается в квадратные скобки [ ]. Значения
отделяются запятыми.
• Значение может быть строкой в двойных кавычках, числом, значением true
или false, объектом, массивом, или значением null. Эти структуры могут
быть вложены друг в друга.
• Строка — это упорядоченное множество из нуля или более символов
юникода, заключенное в двойные кавычки, с использованием escape-
последовательностей начинающихся с обратной косой черты (backslash).
Символы представляются простой строкой.
• Имя — это строка.
http://www.slideshare.net/IgorShkulipa 22
Примеры JSON
Пример 1. Слайд 16.
var fio={surname:‘Пупкин',name:‘Василий',middle:‘Борисович'};
Пример 2. Wikipedia.
{
"firstName": "Иван",
"lastName": "Иванов",
"address": {
"streetAddress": "Московское ш., 101, кв.101",
"city": "Ленинград",
"postalCode": 101101
},
"phoneNumbers": [
"812 123-1234",
"916 123-4567"
]
}
http://www.slideshare.net/IgorShkulipa 23
ООП в JavaScript
В JavaScript реализовано наследование на прототипах.
Объекты наследуют не от классов, а от объектов. Наверху цепочки
всегда находится объект встроенного класса Object. Но, в отличии,
например от C# Object – это конкретный объект, а не класс.
Реализуется наследование через неявную ссылку одного объекта на
другой, который называется его прототипом и в спецификации
обозначается [[prototype]]. Это свойство обычно скрыто от
программиста.
Также существует свойство с похожим названием prototype (без
квадратных скобок) - оно вспомогательное и указывает, откуда брать
прототип при создании объекта.
В реализации JavaScript, используемой в браузерах Firefox/Mozilla и т.п.,
ссылка [[prototype]] является обычным свойством объекта:
__proto__. В этих браузерах ее можно читать и изменять.
http://www.slideshare.net/IgorShkulipa 24
Создание объектов
Любая функция, кроме некоторых встроенных, может создать объект.
Для этого ее нужно вызвать через директиву new.
Например, функция FullName ниже создаст новый объект.
function FullName (name, surname, middle) {
this.name = name;
this.surname = surname;
this.middle = middle;
}
var fullName= new FullName (“Ivan“, “Ivanov”, “Ivanovich”);
http://www.slideshare.net/IgorShkulipa 25
Наследование от прототипа
var Name = { name: "", gender:""}; //JSON-создание объектов
function Initials(name, middle){
this.name = name;
this.middle = middle;
}
function SurnName(name, surname){
this.name = name;
this.surname = surname;
}
function TestIt(name, surname, middle) {
Initials.prototype = Name;
SurnName.prototype = Name;
var initials = new Initials("Ivan", "Ivanovich");
var surnname = new SurnName("Petr", "Petrov");
Name.gender = "male";
alert(initials.name + " " + initials.middle + " " + initials.gender);
alert(surnname.name + " " + surnname.surname + " " + surnname.gender);
}
http://www.slideshare.net/IgorShkulipa 26
Добавление методов объектам
var Name = { name: "", gender:""};
function Initials(name, middle){
this.name = name;
this.middle = middle;
}
function SurnName(name, surname){
this.name = name;
this.surname = surname;
this.alertme = function () {
alert(this.name + " " + this.surname + " " + this.gender);
}
}
function TestIt(name, surname, middle) {
Initials.prototype = Name;
SurnName.prototype = Name;
var initials = new Initials("Ivan", "Ivanovich");
var surnname = new SurnName("Petr", "Petrov");
Name.gender = "male";
alert(initials.name + " " + initials.middle + " " + initials.gender);
surnname.alertme();
}
http://www.slideshare.net/IgorShkulipa 27
Массивы в JavaScript
Массив в JavaScript является экземпляром встроенного объекта Array. Нумерация
элементов в массиве начинается с нуля.
var a1 = new Array();
var a2 = new Array(3);
var a3 = new Array(1, 2, 3);
• a1 - массив, в котором нет ни одного элемента.
• a2 - массив из трех элементов с неопределенным значением.
• a3 - массив, заданный списком своих элементов.
Число элементов в массиве можно изменить, просто задав значение
соответствующего элемента:
a3[5]= 6;
Типы данных элементов массива в JavaScript могут быть различными:
a3[3]=4; a3[4]=“5”; a3[7]=false;
Для создания многомерного массива каждому элементу массива нужно присвоить
другой массив:
var myArray = new Array(2);
for (i=0; i<3; i++) {
myArray[i] = new Array(2);
}
http://www.slideshare.net/IgorShkulipa 28
Свойства и методы Array
Свойство:
• length. Число элементов массива.
Методы:
• concat( ). Слияние двух массивов. Через параметр передается имя
второго массива: c=a.concat(b);
• join( ). Слияние элементов массива в строку. Через параметр
передается разделитель элементов. По умолчанию разделителем
служит запятая. s=c.join('; ');
• reverse( ). Меняет порядок элементов массива на обратный.
• slice( ). Выделяет часть из массива. В качестве параметров
передаются значения начального и конечного индексов, между
которыми происходит выделение. При этом элемент массива с
конечным индексом в результат не войдет. Следует помнить, что
индексы отсчитываются от нуля.
http://www.slideshare.net/IgorShkulipa 29
Объект Date
С помощью методов встроенного объекта Date можно выполнять различные действия
с часами компьютера. Для использования большинства методов объекта Date
необходимо создать экземпляр этого объекта:
var today = new Date();
Методы объекта Date
• getYear. Возвращает год:
• getMonth. Возвращает номер месяца. Январь - это 0, февраль - 1 и т.д.
• getDate.Возвращает значение календарной даты в диапазоне от 1 до 31:
• getDay. Возвращает номер дня недели. Воскресенье - 0, для понедельник -
1 и т.д.)
• getHours. Возвращает количество часов, прошедших после полуночи.
• getMinutes. Возвращает количество минут, прошедших с начала часа.
• getSeconds. Возвращает количество секунд, прошедших с начала минуты.
• getTime. Возвращает количество миллисекунд, прошедших с 00 часов 00
минут 1 января 1970 года.
• getTimeZoneOffset. Возвращает смещение локального времени
относительно времени по Гринвичу в миллисекундах.
• parse. Возвращает количество миллисекунд, прошедших с 00 часов 00
минут 1 января 1970 года по время, указанное в параметре функции.
• UTC. Преобразовывает дату, заданную параметрами метода, в количество
миллисекунд, прошедших с 00 часов 00 минут 1 января 1970 года.
http://www.slideshare.net/IgorShkulipa 30
Методы объекта Date
• setYear. Устанавливает год в объекте класса Date.
• setMonth. Устанавливает номер месяца.
• setDate. Устанавливает значение календарной даты в диапазоне от 1
до 31.
• setDay. Устанавливает номер дня недели.
• setHours. Устанавливает количество часов, прошедших после
полуночи.
• setMinutes. Устанавливает количество минут, прошедших с начала
часа.
• setSeconds. Устанавливает количество секунд, прошедших с начала
минуты.
• setTime. Устанавливает дату, соответствующую количеству
миллисекунд, прошедших с 00 часов 00 минут 1 января 1970 года:
• toGMTString. Преобразует дату в строку, записанную в стандартном
формате времени по Гринвичу: "Sat, 21 Apr 2001 14:00:00 GMT"
• toLocaleString. Преобразует дату в строку, записанную в стандартном
формате локального времени: "04/16/2001 18:00:00".
http://www.slideshare.net/IgorShkulipa 31
Объекты брaузера
К объектам браузера относятся такие объекты, как окно - window и
документ - document.
Обращаясь к свойствам и методам этих объектов, можно выполнять
различные операции над окном брaузера, загруженным в это окно
HTML-документом, а также над отдельными объектами, размещенными
в HTML-документе.
Свойства объекта window
• name. Имя окна, указанное при его открытии методом open, а
также в атрибуте TARGET тега <A> или в атрибуте NAME тега
<FORM>.
• self, window. Синонимы имени окна. Относятся к текущему окну.
• top. Синоним имени окна. Относится к окну верхнего уровня.
• parent. Синоним имени окна. Относится к окну, содержащему
набор фреймов.
• frames. Массив всех фреймов данного окна.
• length. Количество фреймов в родительском окне.
• status. Текущее сообщение, отображаемое в строке состояния
окна брaузера.
http://www.slideshare.net/IgorShkulipa 32
Методы объекта window
• alert. Отображение диалоговой панели Alert с сообщением и кнопкой OK. Через
параметр передается сообщение, отображаемое в диалоговой панели. После вызова
этого метода выполнение сценария задерживается до тех пор, пока посетитель не
нажмет кнопку OK, расположенную в диалоговой панели.
• confirm. Отображение диалоговой панели Confirm с кнопками OK и Отмена. В
зависимости от того, какая кнопка будет нажата, метод возвращает соответственно
значение true или false.
• prompt. Отображение диалоговой панели Prompt с полем ввода и кнопками OK и
Отмена. В зависимости от того, какая кнопка будет нажата, метод возвращает
соответственно введенную строку или значение null. Метод имеет два параметра.
Первый - сообщение над полем ввода. Второй (необязательный) - начальное
значение строки ввода.
• open. Открытие окна. Метод имеет три параметра. Первый задает URL HTML-
документа, предназначенного для загрузки в новое окно. Второй определяет имя
окна для использования в атрибуте TARGET тега <A> или в атрибуте NAME тега
<FORM>. Третий (необязательный) задает в виде текстовой строки параметры,
определяющие внешний вид открываемого окна.
var newWindow=
open(“1.htm", "",
"toolbar=no, menubar=no, width=300, height=200");
http://www.slideshare.net/IgorShkulipa 33
Параметры внешнего вида окна
toolbar Отображение стандартной инструментальной линейки
[=yes|no] | [=1|0]
location Отображение поля ввода адреса документа
[=yes|no] | [=1|0]
status Отображение строки состояния
[=yes|no] | [=1|0]
menubar Отображение линейки меню
[=yes|no] | [=1|0]
scrollbars Отображение полос прокрутки
[=yes|no] | [=1|0]
resizable Изменение размеров нового окна
[=yes|no] | [=1|0]
width Ширина окна в пикселах
height Высота окна в пикселах
fullscreen Полноэкранный режим
copyhistory Сохранение истории загрузки документов в данное окно
[=yes|no] | [=1|0]
directories Наличие в данном окне кнопок групп новостей
[=yes|no] | [=1|0]
http://www.slideshare.net/IgorShkulipa 34
Методы объекта window
• close. Закрытие созданного или основного окна:
Текущее окно брaузера можно закрыть одним из следующих способов:
window.close(); self.close();
• setTimeout. Установка таймера. Применяется для ограничения времени ввода
пароля, создания бегущих строк и всевозможных анимационных эффектов. Метод
имеет два параметра. Первый задает выражение JavaScript, которое запускается по
прошествии времени, указанного вторым параметром в миллисекундах. Заданное
выражение запускается один раз.
• clearTimeout. Сброс таймера.
• blur( ). При вызове метода окно теряет фокус.
• focus( ). При вызове метода окно получает фокус.
• MoveTo(x,y). Перемещает окно в точку с координатами.
• MoveBy(x,y). Перемещает окно на x пикселей по горизонтали вправо и на y
пикселей вниз.
• ResizeTo(x,y). Изменяет размер окна на указанные размеры.
• ResizeBy(x,y). Увеличивает или уменьшает размер окна на заданное количество
пикселей.
• print( ). Печать документа.(не работает в IE 4)
• scroll(x,y), ScrollTo(x,y). Прокручивает окно так, что точка с кординатами x,y
становится левой верхней точкой окна.
• ScrollBy(x,y). Прокручивает окно на x,y пикселей.
• stop( ). Прекращает загрузку документа в окно браузера.
http://www.slideshare.net/IgorShkulipa 35
Свойства объекта document
• URL. Полный URL документа.
• location. Полный URL документа.
• referrer. URL вызывающего документа.
• title. Заголовок документа, определенный тегом <TITLE>.
• bgColor. Цвет фона документа.
• fgColor. Цвет текста.
• linkColor. Цвет cсылок.
• alinkColor. Цвет выбранных cсылок.
• vlinkColor. Цвет посещенных cсылок.
• links. Массив всех cсылок в документе.
• anchors. Массив локальных меток. Применяется для организации ссылок
внутри документа.
• applets. Массив аплетов Java.
• forms. Массив форм в виде объектов.
• images. Массив растровых изображений.
• embeds. Массив объектов plug-in.
• lastModified. Дата последнего изменения документа.
• cookie. Значение cookie для текущего документа.
• anchor. Локальная метка, определенная тегом <A>.
• form. Форма, определенная тегом <FORM>.
• history. Список посещенных URL.
• link. Текст или изображение, играющие роль гипертекстовой ссылки,
созданной тегом <A>, в котором дополнительно заданы обработчики
событий onClick и onMouseOver.
http://www.slideshare.net/IgorShkulipa 36
Методы объекта document
• сlear. Удаление содержимого документа из окна просмотра.
• write. Запись в документ произвольной HTML-конструкции.
• writeln. Аналогичен write, но с добавлением символа перевода строки
в конец строки.
• open. Открытие выходного потока для записи в HTML-документ
данных типа MIME при помощи методов write и writeln.
• close. Закрытие потока данных, открытого методом open. В окне будут
отображены все изменения содержимого документа, сделанные
сценарием после открытия потока.
http://www.slideshare.net/IgorShkulipa 37
Ссылки в документе
Для каждой ссылки, размещенной в HTML-документе, создается отдельный объект.
Все такие объекты находятся в объекте document как элементы массива links.
Анализируя эти элементы, сценарий JavaScript может определить свойства
каждой ссылки в HTML-документе:
• length. Количество ссылок в HTML-документе, т.е. количество элементов в
массиве links.
• hash. Имя локальной ссылки, если она определена в URL.
• host. Имя узла и порт, указанные в URL.
• hostname. Имя узла и доменное имя узла сети. Если доменное имя
недоступно, вместо него указывается адрес IP.
• href. Полный URL.
• pathname. Путь к объекту, указанный в URL.
• port. Номер порта, использумого для передачи данных с сервером,
указанным в ссылке.
• protocol. Строка названия протокола передачи данных (включающая
символ "двоеточие"), указанного в ссылке.
• search. Строка запроса, указанная в URL после символа "?".
• target. Имя окна, куда будет загружен документ при выполнении ссылки.
Это может быть имя существующего окна фрейма, определенного тегом
<FRAMESET>, или одно из зарезервированных имен - _top, _parent, _self,
_blank.
http://www.slideshare.net/IgorShkulipa 38
Учебник JavaScript
Ссылка на учебник
http://www.slideshare.net/IgorShkulipa 39
Пример
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script> <!--
function changeBackground(a, color) {
document.getElementById(a).setAttribute("style","background-color:"+color);
}
function replaceImage(a, path) {
document.getElementById(a).setAttribute("src", path);
var now= new Date();
window.alert('Image replaced! Current year is: ' + now.getFullYear());
} //-->
</script>
</head>
<body>
<img id="img1" src="1.png"
onmouseover="changeBackground('img1', 'Red');"
onmouseout="changeBackground('img1', 'Green');"
onclick="
if (document.getElementById('img1').getAttribute('src').match('1.png')){
replaceImage('img1','2.png');
}else{
replaceImage('img1','1.png');
}"/>
</body>
</html>
http://www.slideshare.net/IgorShkulipa 40
Результат
http://www.slideshare.net/IgorShkulipa 41
Ajax
Ajax расшифровывается как Asynchronous Javascript And XML
(Асинхронные Javascript И XML) и технологией в строгом смысле слова
не является. Это просто аббревиатура, обозначающая подход к
созданию веб-приложений с помощью следующих технологий:
• стандартизированное представление силами XHTML и CSS;
• динамическое отображение и взаимодействие с пользователем с
помощью DOM;
• обмен и обработка данных в виде XML и JSON;
• JavaScript;
• асинхронные запросы с помощью объекта XMLHttpRequest.
Если в стандартном веб-приложении обработкой всей информации
занимается сервер, тогда как браузер отвечает только за
взаимодействие с пользователем, передачу запросов и вывод
поступившего HTML, то в Ajax-приложении между пользователем и
сервером появляется еще один посредник - движок Ajax. Он
определяет, какие запросы можно обработать "на месте", а за какими
необходимо обращаться на сервер.
http://www.slideshare.net/IgorShkulipa 42
Схема работы
http://www.slideshare.net/IgorShkulipa 43
Что можно сделать с помощью Ajax
• Небольшие элементы управления
В первую очередь AJAX полезен для небольших элементов, связанных
с элементарными действиями: добавить в корзину, подписаться, и
т.п.
• Динамическая подгрузка данных с сервера.
Например, дерево, узлы которого подгружаются по мере раскрытия.
• Незаметные для пользователя действия.
Например, при редактировании статьи - каждые 10 минут результаты
автосохраняются на сервере.
• Непрерывная подзагрузка информации с сервера.
Самый типичный пример - чат. В окошко постоянно поступают все
новые сообщения, непрерывно подгружаемые с сервера. И, опять
же, через AJAX, без перезагрузки страницы, пользователь может
отсылать сообщения на сервер.
http://www.slideshare.net/IgorShkulipa 44
Объект XMLHttpRequest
Объект XMLHttpRequest (или, сокращенно, XHR) дает возможность
браузеру делать HTTP-запросы к серверу без перезагрузки страницы.
Несмотря на слово XML в названии, XMLHttpRequest может работать с
данными в любом текстовом формате, и даже c бинарными данными.
Использовать его очень просто.
Как «достать» XML?
...
var xmldoc = httpRequest.responseXML;
var root_node = xmldoc.getElementsByTagName('root').item(0);
alert(root_node.firstChild.data);
...
http://www.slideshare.net/IgorShkulipa 45
Пример Ajax. Кроссбраузерная функция получения
объекта.
function getXmlHttp() {
var xmlhttp;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
http://www.slideshare.net/IgorShkulipa 46
Пример Ajax. Получение массива случайных числел
var serverAddr ="http://www.random.org/integers/?num=1&min=1&max=256&col=1&
base=10&format=plain";
var array1 = [];
function getNumber(arr) {
var xmlHttp = getXmlHttp();
xmlHttp.open("GET", serverAddr, true);
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
arr.push(~~xmlHttp.responseText);
}
}
}
xmlHttp.send(null);
}
function fillArray(count){
for (i = 0; i < count; i++) { getNumber(array1); };
}
function showArray(){
fillArray(10);
var myText = document.getElementById("text1");
myText.innerHTML = "";
for (i = 0; i < array1.length; i++) {
myText.innerHTML += " " + array1[i];
}
}
http://www.slideshare.net/IgorShkulipa 47
jQuery
jQuery – это JavaScript-библиотека, фокусирующаяся на взаимодействии
JavaScript, HTML и CSS.
Что умеет jQuery:
• Обращаться к любому элементу DOM (объектной модели
документа) и не только обращаться, но и манипулировать ими.
• Работать с событиями.
• Легко осуществлять различные визуальные эффекты.
• Работать с AJAX.
• Имеет огромное количество JavaScript плагинов, предназначенных
для создания элементов пользовательских интерфейсов.
http://www.slideshare.net/IgorShkulipa 48
Функция $()
$("div") вернет все div-элементы на странице.
$(".someBlock") вернет все элементы с классом
someBlock.
$("#content") вернет элемент с идентификатором
content.
$("#content2 div.someBlock")
вернет div-элементы с классом
someBlock, которые находятся внутри
элемента с идентификатором
content2.
$("div:odd") вернет div-элементы, находящиеся на
странице под нечетными номерами.
$("[value = 5]") вернет все элементы с атрибутом
value, равным 5.
С помощью функции $() из библиотеки, можно находить элементы на
странице по различным параметрам
http://www.slideshare.net/IgorShkulipa 49
Функция $()
$("#bigIt").css("height") возвратит значение высоты у
элемента с идентификатором bigIt.
$("div").css("width", "20px") установит новое значение ширины
всем div-элемента на странице.
$("#bigIt").attr("class") возвратит значение класса элемента с
id = bigIt.
$("#bigIt").attr("class", "box") установит новое значение атрибута
class у элемента с id = bigIt.
$("#bigIt").html(<p>Новый!</p>)
изменит все html-содержимое
элемента с id = bigIt, на заданное в
методе html.
$("#bigIt").text() возвратит текст, находящийся внутри
элемента с id = bigIt.
$(".someBox").empty() очистить от содержимого элементы с
классом someBox.
http://www.slideshare.net/IgorShkulipa 50
Цепочки методов
Важной особенностью большинства методов jQuery, является возможность
связывать их в цепочки. Методы, манипулирующие элементами
документа, обычно возвращают эти объекты для дальнейшего
использования, что позволяет писать примерно следующее:
$("#bigIt").empty().attr("class", "noContent");
// в результате, у элемента с идентификатором bigIt будет удалено
все содержимое,
// после чего ему будет установлен класс noContent.
http://www.slideshare.net/IgorShkulipa 51
Работа с набором элементов
Помимо манипуляций с выбранными элементами, jQuery позволяет
работать с самим набором: изменять его, а так же работать с
элементами по отдельности.
$("div").parent() вернет родительские элементы всех div-ов.
$("div").children() вернет дочерние элементы всех div-ов.
$("#someId").next() вернет элемент, лежащий сразу после someId.
$("div").prev() вернет элементы, лежащие перед div'ами.
$("div").eq(i) вернет div-элемент, с индексом i в наборе.
$("div").get(i) вернет DOM-объект div'а, с индексом i.
$("div").get() вернет массив DOM-объеков всех div-ов.
$("div").size() вернет размер набора (количествово div-ов).
http://www.slideshare.net/IgorShkulipa 52
Анимационные эффекты
Ключевым методом, на которой базируются все остальные, является метод
animate(), с помощью которого можно задавать плавное изменение
различных CSS-свойств:
.animate(properties, [duration], [easing], [callback])
• properties — список CSS-свойств, участвующих в анимации и их
конечных значений. Задаются объектом, в формате
{ключ:значение}, например:{opacity: 50, width: 100, height: 200}.
• duration — продолжительность выполнения анимации. Может быть
задана в миллисекундах или строковым значением 'fast' или 'slow'
(200 и 600 миллисекунд).
• easing — изменение скорости анимации (будет ли она замедляется
к концу выполнения или наоборот ускорится). Задается строковым
значением: "linear" и "swing" (для равномерной анимации и
анимации с ускорением). Другие варианты можно найти в плагинах.
• callback — функция, которая будет вызвана после завершения
анимации.
$("#mydiv")
.animate({height: "hide"}, 300)
.text("Новый текст")
.animate({height: "show"}, 300);
http://www.slideshare.net/IgorShkulipa 53
Ajax
В jQuery реализована возможность выполнения запросов к серверу без
перезагрузки страницы (ajax). Базовыми функциями для ее работы
являются post() и get():
$.post(url, [params], [callback], [dataType])
$.get(url, [params], [callback], [dataType])
• url — url-адрес, по которому будет отправлен запрос.
• data — данные, которые будут отправлены на сервер. Они
должны быть представлены объектом, в формате: {fName1:value1,
fName2:value2, ...}.
• callback — пользовательская функция, которая будет вызвана
после ответа сервера.
• dataType — ожидаемый тип данных, которые пришлет сервер в
ответ на запрос.
Простейший пример:
$.get(“http://random.org");
http://www.slideshare.net/IgorShkulipa 54
Другие возможности
Существуют и другие возможности jQuery, например:
• $.browser поможет узнать тип браузера.
• $.support поможет узнать конкретные особенности браузера.
• .offset() и .position() позволят узнать или изменить позицию
выбранного элемента.
• .width() и .height() позволят узнать или изменить размеры
выбранного элемента.
• .scrollTop() и .scrollLeft() позволят работать с прокруткой.
Ссылка на русскоязычное описание библиотеки
И на сайт разработчиков
http://www.slideshare.net/IgorShkulipa 55
Пример «Крестики-нолики с jQuery»
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>jQuery XO</title>
<script type="text/javascript" src="jquery-1.2.6.js"></script>
<script src="xo.js" language="javascript"></script>
<link rel="stylesheet" type="text/css" href="xo.css" />
</head>
<body>
<table style="width:600px; height:600px;">
<tr><td id="11"></td>
<td id="12"></td>
<td id="13"></td></tr>
<tr><td id="21"></td>
<td id="22"></td>
<td id="23"></td></tr>
<tr><td id="31"></td>
<td id="32"></td>
<td id="33"></td></tr>
</table>
</body>
</html>
xo.html
td, tr {
border: 1px solid black;
text-align: center;
color:transparent;
width: 33.33%;
height: 33.33%;
}
xo.css
http://www.slideshare.net/IgorShkulipa 56
xo.js функция проверки победы
function CheckVictory(xo) {
if (
//Строки
(($("#11").text() == xo) && ($("#12").text() == xo) &&
($("#13").text() == xo)) ||
(($("#21").text() == xo) && ($("#22").text() == xo) &&
($("#23").text() == xo)) ||
(($("#31").text() == xo) && ($("#32").text() == xo) &&
($("#33").text() == xo)) ||
//Столбцы
(($("#11").text() == xo) && ($("#21").text() == xo) &&
($("#31").text() == xo)) ||
(($("#12").text() == xo) && ($("#22").text() == xo) &&
($("#32").text() == xo)) ||
(($("#13").text() == xo) && ($("#23").text() == xo) &&
($("#33").text() == xo)) ||
//Диагонали
(($("#11").text() == xo) && ($("#22").text() == xo) &&
($("#33").text() == xo)) ||
(($("#31").text() == xo) && ($("#22").text() == xo) &&
($("#13").text() == xo))) {
if (xo == 'X')
alert('Крестики победили!');
else
alert('Нолики победили!');
}
}
http://www.slideshare.net/IgorShkulipa 57
xo.js функция, отмечающая ход
function MarkXO(elem, xo) {
elem.text(xo);
elem.css("background-repeat", "no-repeat");
elem.css("background-position", "center");
if (xo == 'X')
elem.css("background-image", "url('x.png')");
else
elem.css("background-image", "url('o.png')");
}
http://www.slideshare.net/IgorShkulipa 58
xo.js функция-обработчик клика ячейки
var xoGlobal = 'O';
function ClickLogic() {
text = $(this).text();
if (text == '') {
if (xoGlobal == 'X') {
xoGlobal = 'O'
} else {
xoGlobal = 'X'
};
MarkXO($(this), xoGlobal);
CheckVictory(xoGlobal);
} else {
alert("Занято!");
}
}
http://www.slideshare.net/IgorShkulipa 59
xo.js последняя «функция»
$(document).ready(
function () {
$('td').click(ClickLogic);
});
Эта запись «переводится», приблизительно, как «в качестве
обработчика $(document).ready установить функцию, которая
обработчиком клика td-шки устанавливает функцию
ClickLogic»
http://www.slideshare.net/IgorShkulipa 60
Результат
http://www.slideshare.net/IgorShkulipa 61
Результат
http://www.slideshare.net/IgorShkulipa 62
Результат
http://www.slideshare.net/IgorShkulipa 63
Лабораторная работа №2
К своей HTML-странице добавить JavaScript/Ajax/jQuery-активность
(анимация элементов по событию, простая игра или т.п.).

More Related Content

What's hot

#MBLTdev: Опыт использования MVVM в реальных проектах
#MBLTdev: Опыт использования MVVM в реальных проектах#MBLTdev: Опыт использования MVVM в реальных проектах
#MBLTdev: Опыт использования MVVM в реальных проектахe-Legion
 
Moxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магииMoxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магииYuri Shmakov
 
Moxy. Из чего состоит и как этим пользоваться
Moxy. Из чего состоит и как этим пользоватьсяMoxy. Из чего состоит и как этим пользоваться
Moxy. Из чего состоит и как этим пользоватьсяYuri Shmakov
 
Разработка WPF приложений в стиле ViewModel First
Разработка WPF приложений в стиле ViewModel FirstРазработка WPF приложений в стиле ViewModel First
Разработка WPF приложений в стиле ViewModel FirstDenis Tsvettsih
 
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiРазработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiSoftengi
 
MVP, Moxy. Как правильно пользоваться
MVP, Moxy. Как правильно пользоватьсяMVP, Moxy. Как правильно пользоваться
MVP, Moxy. Как правильно пользоватьсяYuri Shmakov
 
JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.Igor Shkulipa
 
Moxy. Как правильно пользоваться? / Юрий Шмаков (Arello Mobile)
Moxy. Как правильно пользоваться? / Юрий Шмаков (Arello Mobile)Moxy. Как правильно пользоваться? / Юрий Шмаков (Arello Mobile)
Moxy. Как правильно пользоваться? / Юрий Шмаков (Arello Mobile)Ontico
 
C# Desktop. Занятие 16.
C# Desktop. Занятие 16.C# Desktop. Занятие 16.
C# Desktop. Занятие 16.Igor Shkulipa
 
C# Desktop. Занятие 14.
C# Desktop. Занятие 14.C# Desktop. Занятие 14.
C# Desktop. Занятие 14.Igor Shkulipa
 
сервисы в Angular js
сервисы в Angular jsсервисы в Angular js
сервисы в Angular jsyakimchuk
 
Как написать XAML-приложение без Message Bus
Как написать XAML-приложение без Message Bus Как написать XAML-приложение без Message Bus
Как написать XAML-приложение без Message Bus Denis Tsvettsih
 
Визуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестамиВизуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестамиSQALab
 

What's hot (16)

#MBLTdev: Опыт использования MVVM в реальных проектах
#MBLTdev: Опыт использования MVVM в реальных проектах#MBLTdev: Опыт использования MVVM в реальных проектах
#MBLTdev: Опыт использования MVVM в реальных проектах
 
Moxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магииMoxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магии
 
Moxy. Из чего состоит и как этим пользоваться
Moxy. Из чего состоит и как этим пользоватьсяMoxy. Из чего состоит и как этим пользоваться
Moxy. Из чего состоит и как этим пользоваться
 
Refactoring
RefactoringRefactoring
Refactoring
 
Разработка WPF приложений в стиле ViewModel First
Разработка WPF приложений в стиле ViewModel FirstРазработка WPF приложений в стиле ViewModel First
Разработка WPF приложений в стиле ViewModel First
 
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiРазработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
 
MVP, Moxy. Как правильно пользоваться
MVP, Moxy. Как правильно пользоватьсяMVP, Moxy. Как правильно пользоваться
MVP, Moxy. Как правильно пользоваться
 
JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.
 
Luxoft async.net
Luxoft async.netLuxoft async.net
Luxoft async.net
 
Moxy. Как правильно пользоваться? / Юрий Шмаков (Arello Mobile)
Moxy. Как правильно пользоваться? / Юрий Шмаков (Arello Mobile)Moxy. Как правильно пользоваться? / Юрий Шмаков (Arello Mobile)
Moxy. Как правильно пользоваться? / Юрий Шмаков (Arello Mobile)
 
C# Desktop. Занятие 16.
C# Desktop. Занятие 16.C# Desktop. Занятие 16.
C# Desktop. Занятие 16.
 
AngularJS
AngularJSAngularJS
AngularJS
 
C# Desktop. Занятие 14.
C# Desktop. Занятие 14.C# Desktop. Занятие 14.
C# Desktop. Занятие 14.
 
сервисы в Angular js
сервисы в Angular jsсервисы в Angular js
сервисы в Angular js
 
Как написать XAML-приложение без Message Bus
Как написать XAML-приложение без Message Bus Как написать XAML-приложение без Message Bus
Как написать XAML-приложение без Message Bus
 
Визуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестамиВизуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестами
 

Viewers also liked

Vijay Bhosekar_ Published Article_ Organic Agriculture
Vijay Bhosekar_ Published Article_ Organic AgricultureVijay Bhosekar_ Published Article_ Organic Agriculture
Vijay Bhosekar_ Published Article_ Organic Agriculturevijay bhosekar
 
C++ Базовый. Занятие 14.
C++ Базовый. Занятие 14.C++ Базовый. Занятие 14.
C++ Базовый. Занятие 14.Igor Shkulipa
 
Enhancing Energy Efficiency in Cloud Management through Code Annotations and ...
Enhancing Energy Efficiency in Cloud Management through Code Annotations and ...Enhancing Energy Efficiency in Cloud Management through Code Annotations and ...
Enhancing Energy Efficiency in Cloud Management through Code Annotations and ...Luigi Sambolino
 
C# Web. Занятие 16.
C# Web. Занятие 16.C# Web. Занятие 16.
C# Web. Занятие 16.Igor Shkulipa
 
C# Web. Занятие 01.
C# Web. Занятие 01.C# Web. Занятие 01.
C# Web. Занятие 01.Igor Shkulipa
 
C# Web. Занятие 13.
C# Web. Занятие 13.C# Web. Занятие 13.
C# Web. Занятие 13.Igor Shkulipa
 
C# Desktop. Занятие 10.
C# Desktop. Занятие 10.C# Desktop. Занятие 10.
C# Desktop. Занятие 10.Igor Shkulipa
 
C# Web. Занятие 03.
C# Web. Занятие 03.C# Web. Занятие 03.
C# Web. Занятие 03.Igor Shkulipa
 
Production diary 5
Production diary 5Production diary 5
Production diary 5Laila Jaleel
 
C# Web. Занятие 10.
C# Web. Занятие 10.C# Web. Занятие 10.
C# Web. Занятие 10.Igor Shkulipa
 
Laura mulvey’s male gaze theory
Laura mulvey’s male gaze theoryLaura mulvey’s male gaze theory
Laura mulvey’s male gaze theoryLaila Jaleel
 
power point of extra material about eye trauma
power point of extra material about eye traumapower point of extra material about eye trauma
power point of extra material about eye traumaEman Elnezami
 
Production diary 3
Production diary 3Production diary 3
Production diary 3Laila Jaleel
 
InPay SA Kongres Mobilny 2015
InPay SA Kongres Mobilny 2015InPay SA Kongres Mobilny 2015
InPay SA Kongres Mobilny 2015Lech Wilczynski
 
Laura mulvey’s male gaze theory
Laura mulvey’s male gaze theoryLaura mulvey’s male gaze theory
Laura mulvey’s male gaze theoryLaila Jaleel
 
Production diary 8
Production diary 8Production diary 8
Production diary 8Laila Jaleel
 
C# Web. Занятие 12.
C# Web. Занятие 12.C# Web. Занятие 12.
C# Web. Занятие 12.Igor Shkulipa
 
JavaScript Базовый. Занятие 05.
JavaScript Базовый. Занятие 05.JavaScript Базовый. Занятие 05.
JavaScript Базовый. Занятие 05.Igor Shkulipa
 
Production diary 7
Production diary 7Production diary 7
Production diary 7Laila Jaleel
 

Viewers also liked (20)

Vijay Bhosekar_ Published Article_ Organic Agriculture
Vijay Bhosekar_ Published Article_ Organic AgricultureVijay Bhosekar_ Published Article_ Organic Agriculture
Vijay Bhosekar_ Published Article_ Organic Agriculture
 
C++ Базовый. Занятие 14.
C++ Базовый. Занятие 14.C++ Базовый. Занятие 14.
C++ Базовый. Занятие 14.
 
Enhancing Energy Efficiency in Cloud Management through Code Annotations and ...
Enhancing Energy Efficiency in Cloud Management through Code Annotations and ...Enhancing Energy Efficiency in Cloud Management through Code Annotations and ...
Enhancing Energy Efficiency in Cloud Management through Code Annotations and ...
 
C# Web. Занятие 16.
C# Web. Занятие 16.C# Web. Занятие 16.
C# Web. Занятие 16.
 
C# Web. Занятие 01.
C# Web. Занятие 01.C# Web. Занятие 01.
C# Web. Занятие 01.
 
C# Web. Занятие 13.
C# Web. Занятие 13.C# Web. Занятие 13.
C# Web. Занятие 13.
 
C# Desktop. Занятие 10.
C# Desktop. Занятие 10.C# Desktop. Занятие 10.
C# Desktop. Занятие 10.
 
C# Web. Занятие 03.
C# Web. Занятие 03.C# Web. Занятие 03.
C# Web. Занятие 03.
 
Production diary 5
Production diary 5Production diary 5
Production diary 5
 
C# Web. Занятие 10.
C# Web. Занятие 10.C# Web. Занятие 10.
C# Web. Занятие 10.
 
Laura mulvey’s male gaze theory
Laura mulvey’s male gaze theoryLaura mulvey’s male gaze theory
Laura mulvey’s male gaze theory
 
power point of extra material about eye trauma
power point of extra material about eye traumapower point of extra material about eye trauma
power point of extra material about eye trauma
 
Production diary 3
Production diary 3Production diary 3
Production diary 3
 
InPay SA Kongres Mobilny 2015
InPay SA Kongres Mobilny 2015InPay SA Kongres Mobilny 2015
InPay SA Kongres Mobilny 2015
 
Laura mulvey’s male gaze theory
Laura mulvey’s male gaze theoryLaura mulvey’s male gaze theory
Laura mulvey’s male gaze theory
 
Simon Elliott
Simon ElliottSimon Elliott
Simon Elliott
 
Production diary 8
Production diary 8Production diary 8
Production diary 8
 
C# Web. Занятие 12.
C# Web. Занятие 12.C# Web. Занятие 12.
C# Web. Занятие 12.
 
JavaScript Базовый. Занятие 05.
JavaScript Базовый. Занятие 05.JavaScript Базовый. Занятие 05.
JavaScript Базовый. Занятие 05.
 
Production diary 7
Production diary 7Production diary 7
Production diary 7
 

Similar to C# Web. Занятие 02.

Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0akrakovetsky
 
FPUG Dzyga presentation
FPUG Dzyga presentationFPUG Dzyga presentation
FPUG Dzyga presentationIvan Filimonov
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй этоRoman Dvornov
 
Принципы разработки ПО для iPhone с использованием акселерометра
Принципы разработки ПО для iPhone с использованием акселерометраПринципы разработки ПО для iPhone с использованием акселерометра
Принципы разработки ПО для iPhone с использованием акселерометраYandex
 
CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники
CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехникиCodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники
CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехникиCodeFest
 
XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.Дмитрий Бумов
 
Web internship java script
Web internship   java scriptWeb internship   java script
Web internship java scriptNoveo
 
Observable как атом приложения
Observable как атом приложенияObservable как атом приложения
Observable как атом приложенияArtem Bey
 
Эволюция к Behavior Driven Development на примере популярного фреймворка JBehave
Эволюция к Behavior Driven Development на примере популярного фреймворка JBehaveЭволюция к Behavior Driven Development на примере популярного фреймворка JBehave
Эволюция к Behavior Driven Development на примере популярного фреймворка JBehaveReturn on Intelligence
 
Apex OOP Patterns (Valery Dvornichenko)
Apex OOP Patterns (Valery Dvornichenko)Apex OOP Patterns (Valery Dvornichenko)
Apex OOP Patterns (Valery Dvornichenko)Yury Bondarau
 
Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Ontico
 
Async Javascript
Async JavascriptAsync Javascript
Async JavascriptGetDev.NET
 
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Ontico
 
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Oleksii Okhrymenko
 
Александр Кашеверов - Коротко про WEB
Александр Кашеверов - Коротко про WEBАлександр Кашеверов - Коротко про WEB
Александр Кашеверов - Коротко про WEBDataArt
 
Сергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3CСергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3CYandex
 
End-2-End UI автоматизация в мобильном приложении. Наша реализация
End-2-End UI автоматизация в мобильном приложении. Наша реализацияEnd-2-End UI автоматизация в мобильном приложении. Наша реализация
End-2-End UI автоматизация в мобильном приложении. Наша реализацияSQALab
 

Similar to C# Web. Занятие 02. (20)

Javascript 1
Javascript 1Javascript 1
Javascript 1
 
MWWM
MWWMMWWM
MWWM
 
Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0
 
FPUG Dzyga presentation
FPUG Dzyga presentationFPUG Dzyga presentation
FPUG Dzyga presentation
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй это
 
Принципы разработки ПО для iPhone с использованием акселерометра
Принципы разработки ПО для iPhone с использованием акселерометраПринципы разработки ПО для iPhone с использованием акселерометра
Принципы разработки ПО для iPhone с использованием акселерометра
 
Async
AsyncAsync
Async
 
CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники
CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехникиCodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники
CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники
 
XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.
 
Web internship java script
Web internship   java scriptWeb internship   java script
Web internship java script
 
Observable как атом приложения
Observable как атом приложенияObservable как атом приложения
Observable как атом приложения
 
Эволюция к Behavior Driven Development на примере популярного фреймворка JBehave
Эволюция к Behavior Driven Development на примере популярного фреймворка JBehaveЭволюция к Behavior Driven Development на примере популярного фреймворка JBehave
Эволюция к Behavior Driven Development на примере популярного фреймворка JBehave
 
Apex OOP Patterns (Valery Dvornichenko)
Apex OOP Patterns (Valery Dvornichenko)Apex OOP Patterns (Valery Dvornichenko)
Apex OOP Patterns (Valery Dvornichenko)
 
Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)
 
Async Javascript
Async JavascriptAsync Javascript
Async Javascript
 
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
 
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2
 
Александр Кашеверов - Коротко про WEB
Александр Кашеверов - Коротко про WEBАлександр Кашеверов - Коротко про WEB
Александр Кашеверов - Коротко про WEB
 
Сергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3CСергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3C
 
End-2-End UI автоматизация в мобильном приложении. Наша реализация
End-2-End UI автоматизация в мобильном приложении. Наша реализацияEnd-2-End UI автоматизация в мобильном приложении. Наша реализация
End-2-End UI автоматизация в мобильном приложении. Наша реализация
 

More from Igor Shkulipa

Общие темы. Тема 03.
Общие темы. Тема 03. Общие темы. Тема 03.
Общие темы. Тема 03. Igor Shkulipa
 
Общие темы. Тема 02.
Общие темы. Тема 02.Общие темы. Тема 02.
Общие темы. Тема 02.Igor Shkulipa
 
Общие темы. Тема 01.
Общие темы. Тема 01.Общие темы. Тема 01.
Общие темы. Тема 01.Igor Shkulipa
 
JavaScript Базовый. Занятие 06.
JavaScript Базовый. Занятие 06.JavaScript Базовый. Занятие 06.
JavaScript Базовый. Занятие 06.Igor Shkulipa
 
JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.Igor Shkulipa
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.Igor Shkulipa
 
JavaScript Базовый. Занятие 10.
JavaScript Базовый. Занятие 10.JavaScript Базовый. Занятие 10.
JavaScript Базовый. Занятие 10.Igor Shkulipa
 
JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.Igor Shkulipa
 
JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.Igor Shkulipa
 
JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.Igor Shkulipa
 
C# Web. Занятие 09.
C# Web. Занятие 09.C# Web. Занятие 09.
C# Web. Занятие 09.Igor Shkulipa
 
C# Web. Занятие 08.
C# Web. Занятие 08.C# Web. Занятие 08.
C# Web. Занятие 08.Igor Shkulipa
 
C# Web. Занятие 07.
C# Web. Занятие 07.C# Web. Занятие 07.
C# Web. Занятие 07.Igor Shkulipa
 
C# Web. Занятие 04.
C# Web. Занятие 04.C# Web. Занятие 04.
C# Web. Занятие 04.Igor Shkulipa
 
C# Web. Занятие 14.
C# Web. Занятие 14.C# Web. Занятие 14.
C# Web. Занятие 14.Igor Shkulipa
 
C# Web. Занятие 15.
C# Web. Занятие 15.C# Web. Занятие 15.
C# Web. Занятие 15.Igor Shkulipa
 
C# Web. Занятие 11.
C# Web. Занятие 11.C# Web. Занятие 11.
C# Web. Занятие 11.Igor Shkulipa
 
C# Web. Занятие 05.
C# Web. Занятие 05.C# Web. Занятие 05.
C# Web. Занятие 05.Igor Shkulipa
 
C# Web. Занятие 06.
C# Web. Занятие 06.C# Web. Занятие 06.
C# Web. Занятие 06.Igor Shkulipa
 
C# Desktop. Занятие 13.
C# Desktop. Занятие 13.C# Desktop. Занятие 13.
C# Desktop. Занятие 13.Igor Shkulipa
 

More from Igor Shkulipa (20)

Общие темы. Тема 03.
Общие темы. Тема 03. Общие темы. Тема 03.
Общие темы. Тема 03.
 
Общие темы. Тема 02.
Общие темы. Тема 02.Общие темы. Тема 02.
Общие темы. Тема 02.
 
Общие темы. Тема 01.
Общие темы. Тема 01.Общие темы. Тема 01.
Общие темы. Тема 01.
 
JavaScript Базовый. Занятие 06.
JavaScript Базовый. Занятие 06.JavaScript Базовый. Занятие 06.
JavaScript Базовый. Занятие 06.
 
JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.
 
JavaScript Базовый. Занятие 10.
JavaScript Базовый. Занятие 10.JavaScript Базовый. Занятие 10.
JavaScript Базовый. Занятие 10.
 
JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.
 
JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.
 
JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.
 
C# Web. Занятие 09.
C# Web. Занятие 09.C# Web. Занятие 09.
C# Web. Занятие 09.
 
C# Web. Занятие 08.
C# Web. Занятие 08.C# Web. Занятие 08.
C# Web. Занятие 08.
 
C# Web. Занятие 07.
C# Web. Занятие 07.C# Web. Занятие 07.
C# Web. Занятие 07.
 
C# Web. Занятие 04.
C# Web. Занятие 04.C# Web. Занятие 04.
C# Web. Занятие 04.
 
C# Web. Занятие 14.
C# Web. Занятие 14.C# Web. Занятие 14.
C# Web. Занятие 14.
 
C# Web. Занятие 15.
C# Web. Занятие 15.C# Web. Занятие 15.
C# Web. Занятие 15.
 
C# Web. Занятие 11.
C# Web. Занятие 11.C# Web. Занятие 11.
C# Web. Занятие 11.
 
C# Web. Занятие 05.
C# Web. Занятие 05.C# Web. Занятие 05.
C# Web. Занятие 05.
 
C# Web. Занятие 06.
C# Web. Занятие 06.C# Web. Занятие 06.
C# Web. Занятие 06.
 
C# Desktop. Занятие 13.
C# Desktop. Занятие 13.C# Desktop. Занятие 13.
C# Desktop. Занятие 13.
 

C# Web. Занятие 02.

  • 1. Темы лекции: JavaScript, Ajax, jQuery. Практическое задание: JavaScript, Ajax, jQuery. Тренер: Игорь Шкулипа, к.т.н. Разработка Веб-приложений на платформе Microsoft .NET Framework. Занятие 2
  • 2. http://www.slideshare.net/IgorShkulipa 2 JavaScript JavaScript - предназначен для написания сценариев для активных HTML- страниц. Язык JavaScript не имеет никакого отношения к языку Java. Java разработан фирмой SUN. JavaScript - фирмой Netscape Communication Corporation. Первоначальное название - LiveScript. После завоевания языком Java всемирной известности LiveScript из коммерческих соображений переименовали в JavaScript. JavaScript не предназначен для создания автономных приложений. Программа на JavaScript встраивается непосредственно в исходный текст HTML-документа и интерпретируется брaузером по мере загрузки этого документа. С помощью JavaScript можно динамически изменять текст загружаемого HTML-документа и реагировать на события, связанные с действиями посетителя или изменениями состоятия документа или окна. Важная особенность JavaScript - объектная ориентированность. Программисту доступны многочисленные объекты, такие, как документы, гиперссылки, формы, фреймы и т.д. Объекты характеризуются описательной информацией (свойствами) и возможными действиями (методами).
  • 3. http://www.slideshare.net/IgorShkulipa 3 Тег <script> Сценарий JavaScript встраивается в HTML-документ с помощью тега <script>. <script type="text/javascript"> <!-- document.write(“Hello, JavaScript!"); //--> </script> Текст сценария оформляется как комментарий, чтобы не было проблем у посетителей, брaузеры которых не понимают JavaScript. Кроме того к символам, завершающим комментарий добавляется еще два символа "/", т.к. некоторые браузеры рассматривает строку, состоящую только из символов "-->", как ошибочную.
  • 4. http://www.slideshare.net/IgorShkulipa 4 Переменные Переменные в JavaScript объявляются с помощью ключевого слова var. При объявлении тип переменной не указывается. Этот тип присваивается переменной только тогда, когда ей присваивается какое-либо значение. var Buf=""; var i=100; var f=1.234; Числа в строки интерпретатор JavaScript преобразует автоматически. Для преобразования строк в числа используют специальные функции parseInt и parseFloat. Преобразования типов: var myVar = "3.14159", str = ""+ myVar,// в string int = ~~myVar, // в integer float = 1*myVar, // во float bool = !!myVar, // в boolean array = [myVar]; // в array
  • 5. http://www.slideshare.net/IgorShkulipa 5 Операции Унарные операции - Изменение знака на противоположный ! Дополнение. Используется для реверсирования значения логических переменных ++ Увеличение значения переменной. Может применяться и как префикс, и как суффикс -- Уменьшение значения переменной. Может применяться и как префикс, и как суффикс Бинарные операции - Вычитание + Сложение * Умножение / Деление % Остаток от деления
  • 6. http://www.slideshare.net/IgorShkulipa 6 Операции Побитовые операции Операции сдвига & И | ИЛИ ^ исключающее ИЛИ ~ НЕ >> Сдвиг вправо << Сдвиг влево >>> Сдвиг вправо с заполнением освобождаемых разрядов нулями
  • 7. http://www.slideshare.net/IgorShkulipa 7 Операции Условные операции > Больше >= Больше или равно < Меньше <= Меньше или равно == Равно != Не равно || Логическое ИЛИ && Логическое И Другие операции . Доступ к полю объекта. ( document.write(Buf); ) [ ] Индексирование массива ( dim[i] ) ( ) Изменение порядка вычислений или передача параметров функции , Разделение выражений в многократном вычислении
  • 8. http://www.slideshare.net/IgorShkulipa 8 Операции присваивания = Присваивание += Сложение или слияние строк –= Вычитание *= Умножение /= Деление >>= Сдвиг вправо <<= Сдвиг влево >>>= Сдвиг вправо с заполнением освобождаемых разрядов нулями &= И |= ИЛИ ^= Исключающее ИЛИ
  • 9. http://www.slideshare.net/IgorShkulipa 9 Условная операция «? :» Форма записи: "условие" ? "выражение 1" : "выражение 2"; Если условие истинно, то выполняется выражение 1, иначе выполняется выражение 2.
  • 10. http://www.slideshare.net/IgorShkulipa 10 Условный оператор Если <условие>==true, то выполнится <оператор1> , в ином случае - <оператор2>. Блок <else> может быть опущен. В таком случае при истинном условии выполнится <оператор1> , а за ним – оператор, следующий после условного. Вместо <оператор1> и <оператор2> может использоваться любой оператор, включая составной оператор ({}), операторы циклов, операторы выбора и условный, вызова функции, пустой оператор (;) и др. 10 if (условие) оператор1; else оператор2;
  • 11. http://www.slideshare.net/IgorShkulipa 11 Оператор выбора Синтаксис выбирающего оператора допускает пустой составной оператор и пустой оператор в качестве операторов, следующих за условием выбирающего оператора: switch (i) ; switch (j) {} switch (r) i++; Общий вид оператора выбора: switch (условие) { case <константное выражение 1>: <оператор 1>; case <константное выражение 2>: <оператор 2>; ... case <константное выражение N>: <оператор N>; default: <оператор N+1>; }
  • 12. http://www.slideshare.net/IgorShkulipa 12 Схема выполнения оператора switch ● вычисляется выражение в круглых скобках после оператора switch (предварительная стадия); ● это значение последовательно сравнивается со значениями константных выражений за метками case (стадия определения начальной точки выполнения оператора); ● если значения совпадают, управление передаётся соответствующему помеченному оператору (стадия выполнения); ● если ни одно значение не совпадает и в теле оператора case есть оператор, помеченный меткой default, управление передаётся этому оператору (стадия выполнения); ● если ни одно значение не совпадает, и в теле оператора case нет оператора, помеченного меткой default, управление передаётся оператору, следующему за оператором switch (стадия выполнения). На стадии выполнения все операторы от точки выполнения и до конца тела оператора выполняются независимо от меток, если только какой- нибудь из операторов не передаст управление за пределы оператора выбора.
  • 13. http://www.slideshare.net/IgorShkulipa 13 Оператор цикла «for» for (<выражение1>; <выражение2>; <выражение3> ) <оператор>; for (<переменная> in <объект>) <оператор>; Оператор цикла «for-in» while (<условие>) { <оператор> } Оператор цикла с условием
  • 14. http://www.slideshare.net/IgorShkulipa 14 Операторы break и continue Оператор прекращения. Прерывает выполнение текущего блока. break; Оператор продолжения. Прерывает выполнение текущей итерации цикла и переходит к следующей. continue;
  • 15. http://www.slideshare.net/IgorShkulipa 15 Обработка исключений try { dddocument.write(‘Hello, JavaScript'); } catch (er) { document.write(er); } finally { document.write(‘Errors checked.'); throw ‘New exception thrown.'; }
  • 16. http://www.slideshare.net/IgorShkulipa 16 Специальные операторы Оператор delete. С помощью оператора delete можно удалить указанный элемент. Оператор возвращает true если удаление указанного элемента прошло успешно, и false если нет.. delete x; Оператор in. С помощью оператора in можно узнать имеется ли произвольное свойство у указанного объекта или массива. Возвращает true если указанное свойство есть, и false, если нет.. 1 in set; Оператор instanceof сверяет тип объекта с переданным значением. Если они совпадают, метод возвращает true, если нет false. g instanceof Array Оператор typeof возвращает тип указанного объекта. var fio={surname:'Пупкин',name:'Василий',middle:'Борисович'}; alert(typeof fio);
  • 17. http://www.slideshare.net/IgorShkulipa 17 События События - это функции, которые могут быть привязаны к элементам HTML страниц. Код событий выполнится только после того, как произойдет их активирующее действие. Разные типы событий имеют разные активирующие действия. Примеры активирующих действий JavaScript: • Щелчок мыши (событие onclick); • Нажатие клавиши (onkeypress); • Отправление формы (onsubmit); • Наведение курсора мыши на элемент (onmouseover) или выведение курсора мыши за пределы границ элемента (onmouseout); • Полная загрузка страницы или картинки (onload); • Изменение содержимого элемента, например содержимого текстового поля формы (onchange).
  • 18. http://www.slideshare.net/IgorShkulipa 18 Функции JavaScript Все функции JavaScript рекомендуется помещать в контейнер <HEAD>...</HEAD>. Тем самым вы обеспечите их гарантированную доступность при обработке HTML- документа. <!DOCTYPE html> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script> <!-- function changeBackground(a, color) { document.getElementById(a). setAttribute("style","background-color:"+color); } //--> </script> </head> <body> <img id="img1" src="1.png" onmouseover="changeBackground('img1', 'Red');" onmouseout="changeBackground('img1', 'Green');"/> </body> </html>
  • 20. http://www.slideshare.net/IgorShkulipa 20 Объекты JavaScript Язык JavaScript является объектно-ориентированным. Объекты JavaScript представляют собой наборы свойств и методов. Можно сказать, что свойства объектов - это данные, связанные с объектом, а методы - функции для обработки данных объекта. В языке JavaScript имеется три вида объектов: встроенные объекты, объекты брaузера и объекты, создаваемые программистом. JavaScript поддерживает следующий набор встроенных объектов: Array, Boolean, Date, Global, Function, Math, Number, String. Одной из особенностей языка является реализация прототипного наследования.
  • 21. http://www.slideshare.net/IgorShkulipa 21 JSON JSON (JavaScript Object Notation) — текстовый формат обмена данными, основанный на JavaScript. JSON строится на двух структурах: • Коллекция пар ключ/значение. В разных языках, эта концепция реализована как объект, запись, структура, словарь, хэш, именованный список или ассоциативный массив. • Упорядоченный список значений. В большинстве языков это реализовано как массив, вектор, список или последовательность. В JSON используются их следующие формы: • Объект — это неупорядоченное множество пар имя/значение, заключённое в фигурные скобки { }. Между именем и значением стоит символ ": ", а пары имя/значение разделяются запятыми. • Массив (одномерный) — это множество значений, имеющих порядковые номера (индексы). Массив заключается в квадратные скобки [ ]. Значения отделяются запятыми. • Значение может быть строкой в двойных кавычках, числом, значением true или false, объектом, массивом, или значением null. Эти структуры могут быть вложены друг в друга. • Строка — это упорядоченное множество из нуля или более символов юникода, заключенное в двойные кавычки, с использованием escape- последовательностей начинающихся с обратной косой черты (backslash). Символы представляются простой строкой. • Имя — это строка.
  • 22. http://www.slideshare.net/IgorShkulipa 22 Примеры JSON Пример 1. Слайд 16. var fio={surname:‘Пупкин',name:‘Василий',middle:‘Борисович'}; Пример 2. Wikipedia. { "firstName": "Иван", "lastName": "Иванов", "address": { "streetAddress": "Московское ш., 101, кв.101", "city": "Ленинград", "postalCode": 101101 }, "phoneNumbers": [ "812 123-1234", "916 123-4567" ] }
  • 23. http://www.slideshare.net/IgorShkulipa 23 ООП в JavaScript В JavaScript реализовано наследование на прототипах. Объекты наследуют не от классов, а от объектов. Наверху цепочки всегда находится объект встроенного класса Object. Но, в отличии, например от C# Object – это конкретный объект, а не класс. Реализуется наследование через неявную ссылку одного объекта на другой, который называется его прототипом и в спецификации обозначается [[prototype]]. Это свойство обычно скрыто от программиста. Также существует свойство с похожим названием prototype (без квадратных скобок) - оно вспомогательное и указывает, откуда брать прототип при создании объекта. В реализации JavaScript, используемой в браузерах Firefox/Mozilla и т.п., ссылка [[prototype]] является обычным свойством объекта: __proto__. В этих браузерах ее можно читать и изменять.
  • 24. http://www.slideshare.net/IgorShkulipa 24 Создание объектов Любая функция, кроме некоторых встроенных, может создать объект. Для этого ее нужно вызвать через директиву new. Например, функция FullName ниже создаст новый объект. function FullName (name, surname, middle) { this.name = name; this.surname = surname; this.middle = middle; } var fullName= new FullName (“Ivan“, “Ivanov”, “Ivanovich”);
  • 25. http://www.slideshare.net/IgorShkulipa 25 Наследование от прототипа var Name = { name: "", gender:""}; //JSON-создание объектов function Initials(name, middle){ this.name = name; this.middle = middle; } function SurnName(name, surname){ this.name = name; this.surname = surname; } function TestIt(name, surname, middle) { Initials.prototype = Name; SurnName.prototype = Name; var initials = new Initials("Ivan", "Ivanovich"); var surnname = new SurnName("Petr", "Petrov"); Name.gender = "male"; alert(initials.name + " " + initials.middle + " " + initials.gender); alert(surnname.name + " " + surnname.surname + " " + surnname.gender); }
  • 26. http://www.slideshare.net/IgorShkulipa 26 Добавление методов объектам var Name = { name: "", gender:""}; function Initials(name, middle){ this.name = name; this.middle = middle; } function SurnName(name, surname){ this.name = name; this.surname = surname; this.alertme = function () { alert(this.name + " " + this.surname + " " + this.gender); } } function TestIt(name, surname, middle) { Initials.prototype = Name; SurnName.prototype = Name; var initials = new Initials("Ivan", "Ivanovich"); var surnname = new SurnName("Petr", "Petrov"); Name.gender = "male"; alert(initials.name + " " + initials.middle + " " + initials.gender); surnname.alertme(); }
  • 27. http://www.slideshare.net/IgorShkulipa 27 Массивы в JavaScript Массив в JavaScript является экземпляром встроенного объекта Array. Нумерация элементов в массиве начинается с нуля. var a1 = new Array(); var a2 = new Array(3); var a3 = new Array(1, 2, 3); • a1 - массив, в котором нет ни одного элемента. • a2 - массив из трех элементов с неопределенным значением. • a3 - массив, заданный списком своих элементов. Число элементов в массиве можно изменить, просто задав значение соответствующего элемента: a3[5]= 6; Типы данных элементов массива в JavaScript могут быть различными: a3[3]=4; a3[4]=“5”; a3[7]=false; Для создания многомерного массива каждому элементу массива нужно присвоить другой массив: var myArray = new Array(2); for (i=0; i<3; i++) { myArray[i] = new Array(2); }
  • 28. http://www.slideshare.net/IgorShkulipa 28 Свойства и методы Array Свойство: • length. Число элементов массива. Методы: • concat( ). Слияние двух массивов. Через параметр передается имя второго массива: c=a.concat(b); • join( ). Слияние элементов массива в строку. Через параметр передается разделитель элементов. По умолчанию разделителем служит запятая. s=c.join('; '); • reverse( ). Меняет порядок элементов массива на обратный. • slice( ). Выделяет часть из массива. В качестве параметров передаются значения начального и конечного индексов, между которыми происходит выделение. При этом элемент массива с конечным индексом в результат не войдет. Следует помнить, что индексы отсчитываются от нуля.
  • 29. http://www.slideshare.net/IgorShkulipa 29 Объект Date С помощью методов встроенного объекта Date можно выполнять различные действия с часами компьютера. Для использования большинства методов объекта Date необходимо создать экземпляр этого объекта: var today = new Date(); Методы объекта Date • getYear. Возвращает год: • getMonth. Возвращает номер месяца. Январь - это 0, февраль - 1 и т.д. • getDate.Возвращает значение календарной даты в диапазоне от 1 до 31: • getDay. Возвращает номер дня недели. Воскресенье - 0, для понедельник - 1 и т.д.) • getHours. Возвращает количество часов, прошедших после полуночи. • getMinutes. Возвращает количество минут, прошедших с начала часа. • getSeconds. Возвращает количество секунд, прошедших с начала минуты. • getTime. Возвращает количество миллисекунд, прошедших с 00 часов 00 минут 1 января 1970 года. • getTimeZoneOffset. Возвращает смещение локального времени относительно времени по Гринвичу в миллисекундах. • parse. Возвращает количество миллисекунд, прошедших с 00 часов 00 минут 1 января 1970 года по время, указанное в параметре функции. • UTC. Преобразовывает дату, заданную параметрами метода, в количество миллисекунд, прошедших с 00 часов 00 минут 1 января 1970 года.
  • 30. http://www.slideshare.net/IgorShkulipa 30 Методы объекта Date • setYear. Устанавливает год в объекте класса Date. • setMonth. Устанавливает номер месяца. • setDate. Устанавливает значение календарной даты в диапазоне от 1 до 31. • setDay. Устанавливает номер дня недели. • setHours. Устанавливает количество часов, прошедших после полуночи. • setMinutes. Устанавливает количество минут, прошедших с начала часа. • setSeconds. Устанавливает количество секунд, прошедших с начала минуты. • setTime. Устанавливает дату, соответствующую количеству миллисекунд, прошедших с 00 часов 00 минут 1 января 1970 года: • toGMTString. Преобразует дату в строку, записанную в стандартном формате времени по Гринвичу: "Sat, 21 Apr 2001 14:00:00 GMT" • toLocaleString. Преобразует дату в строку, записанную в стандартном формате локального времени: "04/16/2001 18:00:00".
  • 31. http://www.slideshare.net/IgorShkulipa 31 Объекты брaузера К объектам браузера относятся такие объекты, как окно - window и документ - document. Обращаясь к свойствам и методам этих объектов, можно выполнять различные операции над окном брaузера, загруженным в это окно HTML-документом, а также над отдельными объектами, размещенными в HTML-документе. Свойства объекта window • name. Имя окна, указанное при его открытии методом open, а также в атрибуте TARGET тега <A> или в атрибуте NAME тега <FORM>. • self, window. Синонимы имени окна. Относятся к текущему окну. • top. Синоним имени окна. Относится к окну верхнего уровня. • parent. Синоним имени окна. Относится к окну, содержащему набор фреймов. • frames. Массив всех фреймов данного окна. • length. Количество фреймов в родительском окне. • status. Текущее сообщение, отображаемое в строке состояния окна брaузера.
  • 32. http://www.slideshare.net/IgorShkulipa 32 Методы объекта window • alert. Отображение диалоговой панели Alert с сообщением и кнопкой OK. Через параметр передается сообщение, отображаемое в диалоговой панели. После вызова этого метода выполнение сценария задерживается до тех пор, пока посетитель не нажмет кнопку OK, расположенную в диалоговой панели. • confirm. Отображение диалоговой панели Confirm с кнопками OK и Отмена. В зависимости от того, какая кнопка будет нажата, метод возвращает соответственно значение true или false. • prompt. Отображение диалоговой панели Prompt с полем ввода и кнопками OK и Отмена. В зависимости от того, какая кнопка будет нажата, метод возвращает соответственно введенную строку или значение null. Метод имеет два параметра. Первый - сообщение над полем ввода. Второй (необязательный) - начальное значение строки ввода. • open. Открытие окна. Метод имеет три параметра. Первый задает URL HTML- документа, предназначенного для загрузки в новое окно. Второй определяет имя окна для использования в атрибуте TARGET тега <A> или в атрибуте NAME тега <FORM>. Третий (необязательный) задает в виде текстовой строки параметры, определяющие внешний вид открываемого окна. var newWindow= open(“1.htm", "", "toolbar=no, menubar=no, width=300, height=200");
  • 33. http://www.slideshare.net/IgorShkulipa 33 Параметры внешнего вида окна toolbar Отображение стандартной инструментальной линейки [=yes|no] | [=1|0] location Отображение поля ввода адреса документа [=yes|no] | [=1|0] status Отображение строки состояния [=yes|no] | [=1|0] menubar Отображение линейки меню [=yes|no] | [=1|0] scrollbars Отображение полос прокрутки [=yes|no] | [=1|0] resizable Изменение размеров нового окна [=yes|no] | [=1|0] width Ширина окна в пикселах height Высота окна в пикселах fullscreen Полноэкранный режим copyhistory Сохранение истории загрузки документов в данное окно [=yes|no] | [=1|0] directories Наличие в данном окне кнопок групп новостей [=yes|no] | [=1|0]
  • 34. http://www.slideshare.net/IgorShkulipa 34 Методы объекта window • close. Закрытие созданного или основного окна: Текущее окно брaузера можно закрыть одним из следующих способов: window.close(); self.close(); • setTimeout. Установка таймера. Применяется для ограничения времени ввода пароля, создания бегущих строк и всевозможных анимационных эффектов. Метод имеет два параметра. Первый задает выражение JavaScript, которое запускается по прошествии времени, указанного вторым параметром в миллисекундах. Заданное выражение запускается один раз. • clearTimeout. Сброс таймера. • blur( ). При вызове метода окно теряет фокус. • focus( ). При вызове метода окно получает фокус. • MoveTo(x,y). Перемещает окно в точку с координатами. • MoveBy(x,y). Перемещает окно на x пикселей по горизонтали вправо и на y пикселей вниз. • ResizeTo(x,y). Изменяет размер окна на указанные размеры. • ResizeBy(x,y). Увеличивает или уменьшает размер окна на заданное количество пикселей. • print( ). Печать документа.(не работает в IE 4) • scroll(x,y), ScrollTo(x,y). Прокручивает окно так, что точка с кординатами x,y становится левой верхней точкой окна. • ScrollBy(x,y). Прокручивает окно на x,y пикселей. • stop( ). Прекращает загрузку документа в окно браузера.
  • 35. http://www.slideshare.net/IgorShkulipa 35 Свойства объекта document • URL. Полный URL документа. • location. Полный URL документа. • referrer. URL вызывающего документа. • title. Заголовок документа, определенный тегом <TITLE>. • bgColor. Цвет фона документа. • fgColor. Цвет текста. • linkColor. Цвет cсылок. • alinkColor. Цвет выбранных cсылок. • vlinkColor. Цвет посещенных cсылок. • links. Массив всех cсылок в документе. • anchors. Массив локальных меток. Применяется для организации ссылок внутри документа. • applets. Массив аплетов Java. • forms. Массив форм в виде объектов. • images. Массив растровых изображений. • embeds. Массив объектов plug-in. • lastModified. Дата последнего изменения документа. • cookie. Значение cookie для текущего документа. • anchor. Локальная метка, определенная тегом <A>. • form. Форма, определенная тегом <FORM>. • history. Список посещенных URL. • link. Текст или изображение, играющие роль гипертекстовой ссылки, созданной тегом <A>, в котором дополнительно заданы обработчики событий onClick и onMouseOver.
  • 36. http://www.slideshare.net/IgorShkulipa 36 Методы объекта document • сlear. Удаление содержимого документа из окна просмотра. • write. Запись в документ произвольной HTML-конструкции. • writeln. Аналогичен write, но с добавлением символа перевода строки в конец строки. • open. Открытие выходного потока для записи в HTML-документ данных типа MIME при помощи методов write и writeln. • close. Закрытие потока данных, открытого методом open. В окне будут отображены все изменения содержимого документа, сделанные сценарием после открытия потока.
  • 37. http://www.slideshare.net/IgorShkulipa 37 Ссылки в документе Для каждой ссылки, размещенной в HTML-документе, создается отдельный объект. Все такие объекты находятся в объекте document как элементы массива links. Анализируя эти элементы, сценарий JavaScript может определить свойства каждой ссылки в HTML-документе: • length. Количество ссылок в HTML-документе, т.е. количество элементов в массиве links. • hash. Имя локальной ссылки, если она определена в URL. • host. Имя узла и порт, указанные в URL. • hostname. Имя узла и доменное имя узла сети. Если доменное имя недоступно, вместо него указывается адрес IP. • href. Полный URL. • pathname. Путь к объекту, указанный в URL. • port. Номер порта, использумого для передачи данных с сервером, указанным в ссылке. • protocol. Строка названия протокола передачи данных (включающая символ "двоеточие"), указанного в ссылке. • search. Строка запроса, указанная в URL после символа "?". • target. Имя окна, куда будет загружен документ при выполнении ссылки. Это может быть имя существующего окна фрейма, определенного тегом <FRAMESET>, или одно из зарезервированных имен - _top, _parent, _self, _blank.
  • 39. http://www.slideshare.net/IgorShkulipa 39 Пример <!DOCTYPE html> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script> <!-- function changeBackground(a, color) { document.getElementById(a).setAttribute("style","background-color:"+color); } function replaceImage(a, path) { document.getElementById(a).setAttribute("src", path); var now= new Date(); window.alert('Image replaced! Current year is: ' + now.getFullYear()); } //--> </script> </head> <body> <img id="img1" src="1.png" onmouseover="changeBackground('img1', 'Red');" onmouseout="changeBackground('img1', 'Green');" onclick=" if (document.getElementById('img1').getAttribute('src').match('1.png')){ replaceImage('img1','2.png'); }else{ replaceImage('img1','1.png'); }"/> </body> </html>
  • 41. http://www.slideshare.net/IgorShkulipa 41 Ajax Ajax расшифровывается как Asynchronous Javascript And XML (Асинхронные Javascript И XML) и технологией в строгом смысле слова не является. Это просто аббревиатура, обозначающая подход к созданию веб-приложений с помощью следующих технологий: • стандартизированное представление силами XHTML и CSS; • динамическое отображение и взаимодействие с пользователем с помощью DOM; • обмен и обработка данных в виде XML и JSON; • JavaScript; • асинхронные запросы с помощью объекта XMLHttpRequest. Если в стандартном веб-приложении обработкой всей информации занимается сервер, тогда как браузер отвечает только за взаимодействие с пользователем, передачу запросов и вывод поступившего HTML, то в Ajax-приложении между пользователем и сервером появляется еще один посредник - движок Ajax. Он определяет, какие запросы можно обработать "на месте", а за какими необходимо обращаться на сервер.
  • 43. http://www.slideshare.net/IgorShkulipa 43 Что можно сделать с помощью Ajax • Небольшие элементы управления В первую очередь AJAX полезен для небольших элементов, связанных с элементарными действиями: добавить в корзину, подписаться, и т.п. • Динамическая подгрузка данных с сервера. Например, дерево, узлы которого подгружаются по мере раскрытия. • Незаметные для пользователя действия. Например, при редактировании статьи - каждые 10 минут результаты автосохраняются на сервере. • Непрерывная подзагрузка информации с сервера. Самый типичный пример - чат. В окошко постоянно поступают все новые сообщения, непрерывно подгружаемые с сервера. И, опять же, через AJAX, без перезагрузки страницы, пользователь может отсылать сообщения на сервер.
  • 44. http://www.slideshare.net/IgorShkulipa 44 Объект XMLHttpRequest Объект XMLHttpRequest (или, сокращенно, XHR) дает возможность браузеру делать HTTP-запросы к серверу без перезагрузки страницы. Несмотря на слово XML в названии, XMLHttpRequest может работать с данными в любом текстовом формате, и даже c бинарными данными. Использовать его очень просто. Как «достать» XML? ... var xmldoc = httpRequest.responseXML; var root_node = xmldoc.getElementsByTagName('root').item(0); alert(root_node.firstChild.data); ...
  • 45. http://www.slideshare.net/IgorShkulipa 45 Пример Ajax. Кроссбраузерная функция получения объекта. function getXmlHttp() { var xmlhttp; try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { xmlhttp = new XMLHttpRequest(); } return xmlhttp; }
  • 46. http://www.slideshare.net/IgorShkulipa 46 Пример Ajax. Получение массива случайных числел var serverAddr ="http://www.random.org/integers/?num=1&min=1&max=256&col=1& base=10&format=plain"; var array1 = []; function getNumber(arr) { var xmlHttp = getXmlHttp(); xmlHttp.open("GET", serverAddr, true); xmlHttp.onreadystatechange = function () { if (xmlHttp.readyState == 4) { if (xmlHttp.status == 200) { arr.push(~~xmlHttp.responseText); } } } xmlHttp.send(null); } function fillArray(count){ for (i = 0; i < count; i++) { getNumber(array1); }; } function showArray(){ fillArray(10); var myText = document.getElementById("text1"); myText.innerHTML = ""; for (i = 0; i < array1.length; i++) { myText.innerHTML += " " + array1[i]; } }
  • 47. http://www.slideshare.net/IgorShkulipa 47 jQuery jQuery – это JavaScript-библиотека, фокусирующаяся на взаимодействии JavaScript, HTML и CSS. Что умеет jQuery: • Обращаться к любому элементу DOM (объектной модели документа) и не только обращаться, но и манипулировать ими. • Работать с событиями. • Легко осуществлять различные визуальные эффекты. • Работать с AJAX. • Имеет огромное количество JavaScript плагинов, предназначенных для создания элементов пользовательских интерфейсов.
  • 48. http://www.slideshare.net/IgorShkulipa 48 Функция $() $("div") вернет все div-элементы на странице. $(".someBlock") вернет все элементы с классом someBlock. $("#content") вернет элемент с идентификатором content. $("#content2 div.someBlock") вернет div-элементы с классом someBlock, которые находятся внутри элемента с идентификатором content2. $("div:odd") вернет div-элементы, находящиеся на странице под нечетными номерами. $("[value = 5]") вернет все элементы с атрибутом value, равным 5. С помощью функции $() из библиотеки, можно находить элементы на странице по различным параметрам
  • 49. http://www.slideshare.net/IgorShkulipa 49 Функция $() $("#bigIt").css("height") возвратит значение высоты у элемента с идентификатором bigIt. $("div").css("width", "20px") установит новое значение ширины всем div-элемента на странице. $("#bigIt").attr("class") возвратит значение класса элемента с id = bigIt. $("#bigIt").attr("class", "box") установит новое значение атрибута class у элемента с id = bigIt. $("#bigIt").html(<p>Новый!</p>) изменит все html-содержимое элемента с id = bigIt, на заданное в методе html. $("#bigIt").text() возвратит текст, находящийся внутри элемента с id = bigIt. $(".someBox").empty() очистить от содержимого элементы с классом someBox.
  • 50. http://www.slideshare.net/IgorShkulipa 50 Цепочки методов Важной особенностью большинства методов jQuery, является возможность связывать их в цепочки. Методы, манипулирующие элементами документа, обычно возвращают эти объекты для дальнейшего использования, что позволяет писать примерно следующее: $("#bigIt").empty().attr("class", "noContent"); // в результате, у элемента с идентификатором bigIt будет удалено все содержимое, // после чего ему будет установлен класс noContent.
  • 51. http://www.slideshare.net/IgorShkulipa 51 Работа с набором элементов Помимо манипуляций с выбранными элементами, jQuery позволяет работать с самим набором: изменять его, а так же работать с элементами по отдельности. $("div").parent() вернет родительские элементы всех div-ов. $("div").children() вернет дочерние элементы всех div-ов. $("#someId").next() вернет элемент, лежащий сразу после someId. $("div").prev() вернет элементы, лежащие перед div'ами. $("div").eq(i) вернет div-элемент, с индексом i в наборе. $("div").get(i) вернет DOM-объект div'а, с индексом i. $("div").get() вернет массив DOM-объеков всех div-ов. $("div").size() вернет размер набора (количествово div-ов).
  • 52. http://www.slideshare.net/IgorShkulipa 52 Анимационные эффекты Ключевым методом, на которой базируются все остальные, является метод animate(), с помощью которого можно задавать плавное изменение различных CSS-свойств: .animate(properties, [duration], [easing], [callback]) • properties — список CSS-свойств, участвующих в анимации и их конечных значений. Задаются объектом, в формате {ключ:значение}, например:{opacity: 50, width: 100, height: 200}. • duration — продолжительность выполнения анимации. Может быть задана в миллисекундах или строковым значением 'fast' или 'slow' (200 и 600 миллисекунд). • easing — изменение скорости анимации (будет ли она замедляется к концу выполнения или наоборот ускорится). Задается строковым значением: "linear" и "swing" (для равномерной анимации и анимации с ускорением). Другие варианты можно найти в плагинах. • callback — функция, которая будет вызвана после завершения анимации. $("#mydiv") .animate({height: "hide"}, 300) .text("Новый текст") .animate({height: "show"}, 300);
  • 53. http://www.slideshare.net/IgorShkulipa 53 Ajax В jQuery реализована возможность выполнения запросов к серверу без перезагрузки страницы (ajax). Базовыми функциями для ее работы являются post() и get(): $.post(url, [params], [callback], [dataType]) $.get(url, [params], [callback], [dataType]) • url — url-адрес, по которому будет отправлен запрос. • data — данные, которые будут отправлены на сервер. Они должны быть представлены объектом, в формате: {fName1:value1, fName2:value2, ...}. • callback — пользовательская функция, которая будет вызвана после ответа сервера. • dataType — ожидаемый тип данных, которые пришлет сервер в ответ на запрос. Простейший пример: $.get(“http://random.org");
  • 54. http://www.slideshare.net/IgorShkulipa 54 Другие возможности Существуют и другие возможности jQuery, например: • $.browser поможет узнать тип браузера. • $.support поможет узнать конкретные особенности браузера. • .offset() и .position() позволят узнать или изменить позицию выбранного элемента. • .width() и .height() позволят узнать или изменить размеры выбранного элемента. • .scrollTop() и .scrollLeft() позволят работать с прокруткой. Ссылка на русскоязычное описание библиотеки И на сайт разработчиков
  • 55. http://www.slideshare.net/IgorShkulipa 55 Пример «Крестики-нолики с jQuery» <!doctype html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>jQuery XO</title> <script type="text/javascript" src="jquery-1.2.6.js"></script> <script src="xo.js" language="javascript"></script> <link rel="stylesheet" type="text/css" href="xo.css" /> </head> <body> <table style="width:600px; height:600px;"> <tr><td id="11"></td> <td id="12"></td> <td id="13"></td></tr> <tr><td id="21"></td> <td id="22"></td> <td id="23"></td></tr> <tr><td id="31"></td> <td id="32"></td> <td id="33"></td></tr> </table> </body> </html> xo.html td, tr { border: 1px solid black; text-align: center; color:transparent; width: 33.33%; height: 33.33%; } xo.css
  • 56. http://www.slideshare.net/IgorShkulipa 56 xo.js функция проверки победы function CheckVictory(xo) { if ( //Строки (($("#11").text() == xo) && ($("#12").text() == xo) && ($("#13").text() == xo)) || (($("#21").text() == xo) && ($("#22").text() == xo) && ($("#23").text() == xo)) || (($("#31").text() == xo) && ($("#32").text() == xo) && ($("#33").text() == xo)) || //Столбцы (($("#11").text() == xo) && ($("#21").text() == xo) && ($("#31").text() == xo)) || (($("#12").text() == xo) && ($("#22").text() == xo) && ($("#32").text() == xo)) || (($("#13").text() == xo) && ($("#23").text() == xo) && ($("#33").text() == xo)) || //Диагонали (($("#11").text() == xo) && ($("#22").text() == xo) && ($("#33").text() == xo)) || (($("#31").text() == xo) && ($("#22").text() == xo) && ($("#13").text() == xo))) { if (xo == 'X') alert('Крестики победили!'); else alert('Нолики победили!'); } }
  • 57. http://www.slideshare.net/IgorShkulipa 57 xo.js функция, отмечающая ход function MarkXO(elem, xo) { elem.text(xo); elem.css("background-repeat", "no-repeat"); elem.css("background-position", "center"); if (xo == 'X') elem.css("background-image", "url('x.png')"); else elem.css("background-image", "url('o.png')"); }
  • 58. http://www.slideshare.net/IgorShkulipa 58 xo.js функция-обработчик клика ячейки var xoGlobal = 'O'; function ClickLogic() { text = $(this).text(); if (text == '') { if (xoGlobal == 'X') { xoGlobal = 'O' } else { xoGlobal = 'X' }; MarkXO($(this), xoGlobal); CheckVictory(xoGlobal); } else { alert("Занято!"); } }
  • 59. http://www.slideshare.net/IgorShkulipa 59 xo.js последняя «функция» $(document).ready( function () { $('td').click(ClickLogic); }); Эта запись «переводится», приблизительно, как «в качестве обработчика $(document).ready установить функцию, которая обработчиком клика td-шки устанавливает функцию ClickLogic»
  • 63. http://www.slideshare.net/IgorShkulipa 63 Лабораторная работа №2 К своей HTML-странице добавить JavaScript/Ajax/jQuery-активность (анимация элементов по событию, простая игра или т.п.).