Введение в JavaScript

Содержание

Слайд 2

Сценарии на Стороне Клиента CS380

Сценарии на Стороне Клиента

CS380

Слайд 3

Зачем использовать клиентское Программирование? PHP уже позволяет нам создавать динамические веб-

Зачем использовать клиентское Программирование?

PHP уже позволяет нам создавать динамические веб- страницы.

Зачем также использовать клиентские сценарии?
Преимущества сценариев на стороне клиента (JavaScript):
удобство использования : можно изменить страницу без необходимости отправлять ее обратно на сервер ( более быстрый пользовательский интерфейс)
эффективность: может делать небольшие, быстрые изменения на странице, не дожидаясь сервера.
управляемый событиями: может реагировать на действия пользователя, такие как щелчки и нажатия клавиш

CS380

Слайд 4

Зачем использовать клиентское Программирование? преимущества программирования на стороне сервера (PHP): безопасность:

Зачем использовать клиентское Программирование?

преимущества программирования на стороне сервера (PHP):
безопасность: имеет

доступ к личным данным сервера; клиент не может видеть исходный код
совместимость: не зависит от совместимости браузера.
питание: может записывать файлы, открывать соединения с серверами, подключаться к базам данных , ...

CS380

Слайд 5

Javascript? облегченный язык программирования ("язык сценариев") используется для того, чтобы сделать

Javascript?

облегченный язык программирования ("язык сценариев")
используется для того, чтобы сделать

веб- страницы интерактивными
вставка динамического текста в HTML (например: имя пользователя)
реагировать на события (например: загрузка страницы пользовательским кликом)
получение информации о компьютере пользователя (например, тип браузера)
выполнение вычислений на компьютере пользователя (например, проверка формы)

CS380

Что такое Javascript?

Слайд 6

Javascript? веб- стандарт (но не поддерживается одинаково всеми браузерами) Не связано

Javascript?

веб- стандарт (но не поддерживается одинаково всеми браузерами)
Не связано с

Java иначе как по имени и некоторым синтаксическим сходствам

CS380

Слайд 7

Javascript vs Java интерпретируется, а не компилируется более расслабленный синтаксис и

Javascript vs Java

интерпретируется, а не компилируется
более расслабленный синтаксис и
правила
меньшее количество

и " более свободные"
типы данных
переменные не нужно объявлять
ошибки часто молчат (мало исключений)
ключевая конструкция- это функция, а не класс
"первоклассные" функции используются во многих ситуациях
содержится в веб- странице и интегрируется с ее содержимым HTML / CSS

CS380

Слайд 8

Javascript vs Java CS380 + =

Javascript vs Java

CS380

+

=

Слайд 9

JavaScript vs. PHP сходство: оба интерпретируются, а не компилируются оба расслаблены

JavaScript vs. PHP

сходство:
оба интерпретируются, а не компилируются
оба расслаблены в отношении

синтаксиса, правил и типов
оба варианта чувствительны к регистру
оба имеют встроенные регулярные выражения для мощной обработки текста

CS380

Слайд 10

JavaScript vs. PHP различия: JS более объектно-ориентирован: существительное.глагол (), менее процедурный:

JavaScript vs. PHP

различия:
JS более объектно-ориентирован: существительное.глагол (), менее процедурный: глагол(существительное)


JS фокусируется на пользовательских интерфейсах и взаимодействии с документом; PHP ориентирован на вывод HTML и обработку файлов / форм
Код JS выполняется в браузере клиента; код PHP выполняется на веб- сервере

CS380

JS <3

Слайд 11

Основные типы данных 1 целые численные: в десятичной системе единиц: 0,

Основные типы данных

1 целые численные:
в десятичной системе единиц: 0, 29,

70, -147 и т.п.;
в 16-ричной: 0х70 или 0х70, 0XFA7D0 и т.п.;
в 8-ричной: 070, 0710 (Внимание!!! Ведущий ноль воспринимается как символ 8-ричного числа) и т.п.
2 вещественные численные:
0.0, -2.9, 0.7E1, 14.7e-2, 1e+308 (максимальное вещественное число), 1.001e-305 (минимальное по модулю вещественное число, отличное от нуля) и т.п.;
3 логические (булевские): true и false;
4 строковые: "Привет, все!", "ОК", 'Слово "Привет!" с кавычками внутри строки', "Другой вариант 'Привет' с кавычками внутри строки" и т.п. (допускаются оба типа кавычек и многократное использование таких пар внутри друг друга). Специальные символы обозначаются комбинацией символа \ и буквы (или последовательности цифр), например: \b — "забой", \n — перевод на новую строку, \" — "кавычка".
5 null — специальное значение для обозначения “пустого множества” значений.
Слайд 12

Размещение кода JavaScript на HTML странице Гипертекстовая ссылка (схема URL) Обработчик

Размещение кода JavaScript на HTML странице

Гипертекстовая ссылка (схема URL)
Обработчик события (handler)
Подстановка

(Entity)
Элемент разметки Script
Слайд 13

Переменные. Приведение типов var myVariable=0.1 var B=false myVariable="Теперь это текстовая переменная"

Переменные. Приведение типов

var myVariable=0.1
var B=false
myVariable="Теперь это текстовая переменная"

Операторы: арифметических действий,

присваивания, инкрементные, декрементные. Условные выражения

Сложение "+",
вычитание "-",
умножение "*",
деление "/",
остаток от целочисленного деления "%".

y+=x эквивалентно y=y+x
y-=x эквивалентно y=y-x
y*=x эквивалентно y=y*x
y/=x эквивалентно y=y/x
y%=x эквивалентно y=y%x – остаток от деления нацело y на x.

Слайд 14

Операторы сравнения "= =" -"равно"; ">" -"больше"; " ">=" -"больше или

Операторы сравнения

"= =" -"равно";
">" -"больше";
"<" -"меньше";
">=" -"больше или равно";
"<=" -"меньше

или равно";
"!=" -"не равно".

Старшинство операций
условное выражение: "?:";
логическое "ИЛИ": "||";
логическое "И": "&&";
побитовое "ИЛИ": "|";
побитовое "XOR": "^";
побитовое "И": "&";
сравнение на равенство "= =", "!=";
сравнение: "<", "<=", ">", ">=";
побитовый сдвиг: "<<", ">>", ">>>";
сложение, вычитание: "+", "-";
умножение, деление: "*", "/";
отрицание, инкремент, декремент: "!", "~", "++", "--";
скобки: "( )", "[ ]".

Слайд 15

Функции function myFunction(arg1, arg2, ...) { ... последовательность операторов ... }

Функции

function myFunction(arg1, arg2, ...)
{
...
последовательность операторов
...
}

Условный оператор if

if(условие)
{
утверждение1
}
else
{
утверждение2
}

Цикл for

for(секция

инициализации; секция условия; секция изменения счетчиков)
{
утверждение
}
Слайд 16

Цикл while while(условие) { выражение } Оператор with для работы с

Цикл while

while(условие)
{
выражение
}

Оператор with для работы с объектами
with(объект)
{
утверждение
}

Правила работы с

объектами
function IndividualPlan(student, yearCount)
{
this.person=student;
this.year=yearCount;
}
PaulPlan=new IndividualPlan(Paul,5);
PaulPlan.person.name.
Слайд 17

Классы и объекты языка JavaScript Класс Global (задан неявно) Класс Math

Классы и объекты языка JavaScript

Класс Global (задан неявно)
Класс Math
Класс Window


Коллекция фреймов (window.frames)
Класс Document (window.document)
Класс Location (window.location)
Класс Link (document.link)
Класс History
Класс MimeType
Класс Navigator

Экранные элементы

Класс Form (document.forms[i])
Классы Button
Класс Checkbox
Класс Radio
Класс Reset
Классы Text и Password
Класс Textarea
Классы Select и Option

Слайд 18

The DOM tree CS380

The DOM tree

CS380

Слайд 19

Типы DOM узлы элементов (HTML- тег) может иметь детей и /

Типы DOM

узлы элементов (HTML- тег)
может иметь детей и / или

атрибуты
текстовые узлы (текст в элементе блока)
узлы атрибутов (пара атрибут / значение)
текст / атрибуты являются дочерними элементами в узле элемента
не может иметь детей или атрибутов
обычно не показывается при рисовании дерева DOM

CS380

This is a paragraph of text with a
link in it.

HTML
Слайд 20

Типы DOM CS380 This is a paragraph of text with a link in it . HTML

Типы DOM

CS380

This is a paragraph of text with a
link in

it.

HTML
Слайд 21

Обход дерева DOM CS380

Обход дерева DOM

CS380

Слайд 22

DOM tree traversal example This is a paragraph of text with a link . HTML CS380

DOM tree traversal example

This is a paragraph of text with

a
link.

HTML

CS380

Слайд 23

Выбор групп объектов DOM методы в документе и других объектах DOM для доступа к потомкам: CS380

Выбор групп объектов DOM

методы в документе и других объектах DOM для

доступа к потомкам:

CS380

Слайд 24

Изменение дерева DOM var p = document.createElement("p"); p.innerHTML = "A paragraph!"; $("main").appendChild(p); JS CS380

Изменение дерева DOM

var p = document.createElement("p");
p.innerHTML = "A paragraph!";
$("main").appendChild(p); JS

CS380

Слайд 25

Удаление узла со страницы function slideClick() { var bullets = document.getElementsByTagName("li");

Удаление узла со страницы

function slideClick() {
var bullets = document.getElementsByTagName("li");
for (var i

= 0; i < bullets.length; i++) {
if (bullets[i].innerHTML.indexOf("children") >= 0) {
bullets[i].remove();
}
}
} JS

каждый объект DOM имеет метод removeChild для удаления его дочерних объектов со страницы
Прототип добавляет метод remove для узла, чтобы удалить себя

CS380

Слайд 26

Слайд 27

Слайд 28

Проблемы с JavaScript JavaScript- это мощный язык, но он имеет много

Проблемы с JavaScript

JavaScript- это мощный язык, но он имеет много недостатков:


- дом может быть неуклюжим в использовании
- один и тот же код не всегда работает одинаково в каждом браузере

CS380

Слайд 29

Фреймворк JQuery

Фреймворк
JQuery

Слайд 30

Функция $() $(html) $(elems) $(fn) $(expr, context) $(html) Позволяет создать html-элементы

Функция $()

$(html)
$(elems)
$(fn)
$(expr, context)
$(html)
Позволяет создать html-элементы «на лету» из «чистого» HTML.

Например, мы можем создать элемент div, содержащий параграф с текстом «Ба-бах!» и добавить его к элементу с id="body" таким образом:
var my_div = $("

Ба-бах!

");
my_div.appendTo("#body");
$(elems)
Позволяет «прицепить» всю функциональность jQuery к уже существующим элементам на странице (а именно к элементам из объектной модели документа, из DOM).
$(document.body).css( "background-color", "black" );
$( myForm.elements ).hide();
Слайд 31

$(expr[, context]) - наиболее часто используемая функция. Первый, обязательный, параметр –

$(expr[, context])
- наиболее часто используемая функция. Первый, обязательный, параметр – это

выражение, которое позволит jQuery найти элемент на странице. Второй, необязательный, параметр указывает, где искать этот элемент (по умолчанию jQuery будет искать по всей странице).
Например: Найдем все элементы p, находящиеся внутри всех элементов div на странице
$("div > p");
Найдем все радиокнопки в первой форме на странице
$("input:radio", document.forms[0]);
Найдем все элементы div в XML, что прислан с сервера с помощью технологии AJAX:
$("div", xml.responseXML);
Найдем все видимые элементы LI внутри элемента UL
$("ul > li:visible"); // CSS + селектор
Слайд 32

$(fn) - выполняет код в тот момент, когда доступна объектная модель

$(fn)
- выполняет код в тот момент, когда доступна объектная модель

документа, то есть когда браузер уже получил исходный код страницы полностью, но, возможно, еще не подгрузил различное мультимедийное содержимое (рисунки, видео, флэш).
$(document).ready(
function() { /* ... */}
);
или его сокращенным вариантом, $(fn):
$(
function(){/* ... */}
);
Пример:
$(document).ready(
function()
{
// добавим ко всем ссылкам на странице некий текст
$("a").append("(opens in new window)");
}
);
Слайд 33

Функции JQuery append(content)/prepend(content) - Добавить переданный элемент или выражение в конец/в

Функции JQuery
append(content)/prepend(content) - Добавить переданный элемент или выражение в конец/в начало

выбранного элемента.
appendTo(expr)/prependTo(expr) - Добавить выбранный элемент в конец/в начало переданного элемента.
attr(name) - Получить значение атрибута.
attr(params) - Установить значение атрибутов. Атрибуты передаются в виде {ключ1:значение1[, ключ2:значение2[, …]]}
attr(name, value) - Установить значение одного атрибута.
css(name)/css(params)/css(name, value) - Получить/установить значение отдельных параметров CSS. Аналогично функции attr().
text()/text(val) - Получить/задать текст элемента. В случае ввода текста специальные символы HTML заменяются символьными примитивами (entities, например, знак ">" будет заменен >).
Empty() - Удалить все подэлементы текущего элемента.
Слайд 34

Пример: Код Ссылка $("#my-div").html(); Вернет Ссылка $("#my-div").append(" Полужирный текст "); //

Пример:
Код


$("#my-div").html();
Вернет Ссылка
$("#my-div").append("Полужирный текст");
// или
$("Полужирный

текст").appendTo($("#my-div"));
HTML станет таким:

Ссылка
Полужирный текст

$("#my-div").empty();
HTML станет таким:

Слайд 35

Пример: HTML Hello , how are you? JQuery $("p").find("span").html("Ahoy").end().append(" I'm fine

Пример:
HTML

Hello, how are you?


JQuery
$("p").find("span").html("Ahoy").end().append("

I'm fine

");
Код Текущая коллекция элементов
$("p") [

..

]
.find("span") [..]
.html("Ahoy") [..]
.end()

[

..

]
.append(...); [

..

]
Результат HTML:

Ahoy, how are you?

I'm fine


Слайд 36

Пример: Цвет всех ссылок на странице станет зеленым: $("a").css("color", "green"); Индексы

Пример:
Цвет всех ссылок на странице станет зеленым:
$("a").css("color", "green");
Индексы и get([index])
Возвращаемая

функцией $() коллекция является «псевдо»-массивом DOM-элементов. Поэтому можно обратиться к индивидуальным элементам по их индексу:
$("p")[0].className = "test";
$("p"); // Получили объект jQuery
$("p").get(); // Получили соответствующую коллекцию DOM-элементов
$("a").get(0); // Получили первую из всех ссылок на странице
each(fn)
Иногда нужно пробежаться по всем элементам коллекции и выполнить над ними какие-то действия. Для этого нам понадобится функция each. Эта функция принимает в качестве аргумента другую функцию. each() работает в контексте найденных элементов и поэтому каждый раз, когда выполняется переданная ей функция, в этой функции доступна переменная this, указывающая на соответствующий DOM-элемент.
Слайд 37

Animate Ключевой функцией, на которой базируются все остальные, является функция animate:

Animate
Ключевой функцией, на которой базируются все остальные, является функция animate:
animate(params, speed,

easing, callback);
Здесь:
∙ params – свойства, которые участвуют в анимации в виде пар {ключ: значение}. Например: {height: "show"} или {opacity: 50, width: 100, height: 200}.
∙ speed – скорость в миллисекундах.
∙ easing – замедлениие анимации (замедляется ли к концу, "easein", или, наоборот, ускоряется, "easeout". Дополнительные типы доступны в модулях расширения).
∙ callback – функция, которая будет вызвана после завершения анимации.
Пример.
Пусть у нас есть элемент div с каким-нибудь текстом. Мы хотим скрыть этот текст, заменить новым, и показать обновленный текст.
$("#mydiv")
.animate({height: "hide"}, 300)
.text("Новый текст")
.animate({height: "show"}, 300);
Слайд 38

Эффекты Метод animate является основой большинства, если не всех, эффектов jQuery

Эффекты
Метод animate является основой большинства, если не всех, эффектов jQuery и

плагинов. Например, jQuery предлагает следующие методы для показа и скрытия элементов:
∙ show([speed[, callback]]) – показать элемент;
∙ hide([speed[, callback]]) – скрыть элемент;
∙ fadeIn(speed[, callback]) – показать элемент путем изменения его прозрачности;
∙ fadeOut(speed[, callback]) – скрыть элемент путем изменения его прозрачности;
∙ slideDown(speed, callback) – показать элемент, спустив его сверху;
∙ slideUp(speed, callback) – показать элемент, подняв его снизу;
где
speed – скорость в миллисекундах или одно из "slow" (600 миллисекунд) или "fast" (200 миллисекунд);
callback – функция, которая будет вызвана после выполнения анимации.
Слайд 39

Слайд 40

Синхронная веб-связь синхронно: пользователь должен ждать загрузки новых страниц типичный шаблон

Синхронная веб-связь

синхронно: пользователь должен ждать загрузки новых страниц
типичный шаблон коммуникации, используемый

на веб- страницах (нажмите, подождите, обновите)

CS380

Слайд 41

Веб-приложения и Ajax веб- приложение: динамический веб- сайт, который имитирует ощущение

Веб-приложения и Ajax

веб- приложение: динамический веб- сайт, который имитирует ощущение настольного

приложения
представляет непрерывные пользовательские действия, а не разрозненные страницы
примеры: Gmail, Google Maps, Google Docs and Spreadsheets, Flickr, A9

CS380

Слайд 42

Веб- приложения и Ajax Ajax: асинхронный JavaScript и XML не язык

Веб- приложения и Ajax

Ajax: асинхронный JavaScript и XML
не язык программирования, а

особый способ использования JavaScript
загрузка данных с сервера в фоновом режиме
позволяет динамически обновлять страницу, не заставляя пользователя ждать
во избежание "нажал-подождал-обновить" шаблон
Пример: Google Suggest

CS380

Слайд 43

Асинхронная веб- связь асинхронный: пользователь может продолжать взаимодействовать со страницей во

Асинхронная веб- связь

асинхронный: пользователь может продолжать взаимодействовать со страницей во время

загрузки данных.
коммуникационный паттерн, ставший возможным благодаря Ajax

CS380

Слайд 44

XMLHttpRequest JavaScript включает объект XMLHttpRequest, который может извлекать данные с веб-

XMLHttpRequest

JavaScript включает объект XMLHttpRequest, который может извлекать данные с веб- сервера
поддерживается

в IE5+, Safari, Firefox, Opera, Chrome и т. д. (с незначительными совместимостями)
он может делать это асинхронно (в фоновом режиме , прозрачно для пользователя)
содержимое выбранного файла может быть помещено на текущую веб- страницу с помощью DOM

CS380

Слайд 45

Типичный AJAX- запрос пользователь щелкает мышью , вызывая обработчик событий код

Типичный AJAX- запрос

пользователь щелкает мышью , вызывая обработчик событий
код обработчика создает

объект XMLHttpRequest
XMLHttpRequest объект запрашивает страницу с сервера
сервер получает соответствующие данные, отправляет их обратно
XMLHttpRequest запускает событие при поступлении данных
- это часто называется обратным вызовом вы можете присоединить функцию обработчика к этому событию
обработчик событий обратного вызова обрабатывает данные и отображает их
Слайд 46

Методы и свойства прототипа Ajax CS380 options that can be passed to the Ajax.Request constructor

Методы и свойства прототипа Ajax

CS380

options that can be passed to the

Ajax.Request constructor
Слайд 47

Методы и свойства прототипа Ajax CS380 events in the Ajax.Request object that you can handle

Методы и свойства прототипа Ajax

CS380

events in the Ajax.Request object that you

can handle
Слайд 48

Базовый прототип Ajax шаблона function handleRequest(ajax) { alert(ajax.responseText); } JS

Базовый прототип Ajax шаблона

function handleRequest(ajax) {
alert(ajax.responseText);
} JS

Слайд 49

Создание запроса POST new Ajax.Request("url", { method: "post", // optional parameters:

Создание запроса POST

new Ajax.Request("url",
{
method: "post", // optional
parameters: { name: value, name:

value, ..., name: value },
onSuccess: functionName,
onFailure: functionName,
onException: functionName
}
); JS

CS380

Слайд 50

Отладка Ajax- кода Net tab shows each request, its parameters, response,

Отладка Ajax- кода

Net tab shows each request, its parameters, response, any

errors
expand a request with + and look at Response tab to see Ajax result
Слайд 51

AJAX JQuery Базовыми функциями для работы с AJAX являются post() и

AJAX JQuery
Базовыми функциями для работы с AJAX являются post() и get()

(есть еще более низкоуровневая, ajax(), но мы ее не будем рассматривать):
$.post(url[, params[, callback]])
$.get(url[, params[, callback]])
Здесь:
∙ url – адрес страницы, на которую будет отправлен запрос;
∙ params – параметры, передаваемые в запросе в виде пар «ключ : значение»;
∙ callback – функция, которая будет вызвана в случае успешного завершения вызова.
Пример:
$.post(
'/ajaxtest.php',
{
type: "test-request",
param1: "param1",
param2: 2
},
onAjaxSuccess
);
function onAjaxSuccess(data)
{ // Здесь мы получаем данные, отправленные сервером
alert(data);}
Слайд 52

Объекты элементов DOM CS380

Объекты элементов DOM

CS380

Слайд 53

Свойства объекта DOM Hello, I am very happy to see you! HTML

Свойства объекта DOM


Hello, I am very happy to

see you!


“Potter"
HTML
Слайд 54

Свойства DOM для элементов управления формами Freshman? HTML

Свойства DOM для элементов управления формами


id="frosh" type="checkbox" checked="checked" /> Freshman? HTML
Слайд 55

Злоупотребление innerHTML innerHTML может вводить произвольное содержимое HTML на страницу тем

Злоупотребление innerHTML

innerHTML может вводить произвольное содержимое HTML на страницу
тем не

менее, это склонно к ошибкам и ошибкам и считается плохим стилем

CS380

Слайд 56

setTimeout пример CS380 function delayMsg() { setTimeout(booyah, 5000); $("output").innerHTML = "Wait

setTimeout пример

CS380

function delayMsg() {
setTimeout(booyah, 5000);
$("output").innerHTML = "Wait for it...";
}
function booyah() {

// called when the timer goes off
$("output").innerHTML = "BOOYAH!";
} JS


HTML

Слайд 57

setInterval Пример CS380 var timer = null; // stores ID of

setInterval Пример

CS380

var timer = null; // stores ID of interval timer
function

delayMsg2() {
if (timer == null) {
timer = setInterval(rudy, 1000);
} else {
clearInterval(timer);
timer = null;
}
}
function rudy() { // called each time the timer goes off
$("output").innerHTML += " Rudy!";
} JS


HTML

Слайд 58

Passing parameters to timers CS380 function delayedMultiply() { // 6 and

Passing parameters to timers

CS380

function delayedMultiply() {
// 6 and 7 are passed

to multiply when timer goes off
setTimeout(multiply, 2000, 6, 7);
}
function multiply(a, b) {
alert(a * b);
} JS

любые параметры передаются в функцию таймера

setTimeout(multiply(6 * 7), 2000); JS

Слайд 59

Распространенные ошибки CS380 setTimeout(booyah(), 2000); setTimeout(booyah, 2000); setTimeout(multiply(num1 * num2), 2000); setTimeout(multiply, 2000, num1, num2); JS

Распространенные ошибки

CS380

setTimeout(booyah(), 2000);
setTimeout(booyah, 2000);
setTimeout(multiply(num1 * num2), 2000);
setTimeout(multiply, 2000, num1, num2); JS

Слайд 60

Изменение style: element.style CS380

Изменение style: element.style

CS380

Слайд 61

Preetify CS380 function changeText() { //grab or initialize text here //

Preetify

CS380

function changeText() {
//grab or initialize text here
// font styles added by

JS:
text.style.fontSize = "13pt";
text.style.fontFamily = "Comic Sans MS";
text.style.color = "red"; // or pink?
} JS
Слайд 62

Variables variables are declared with the var keyword (case sensitive) types

Variables

variables are declared with the var keyword (case sensitive)
types are not

specified, but JS does have types ("loosely typed")
Number, Boolean, String, Array, Object, Function, Null, Undefined
can find out a variable's type by calling typeof

CS380

var name = expression; JS

var clientName = "Connie Client";
var age = 32;
var weight = 127.4; JS

Слайд 63

Number type integers and real numbers are the same type (no

Number type

integers and real numbers are the same type (no int

vs. double)
same operators: + - * / % ++ -- = += -= *= /= %=
similar precedence to Java
many operators auto-convert types: "2" * 3 is 6

CS380

var enrollment = 99;
var medianGrade = 2.8;
var credits = 5 + 4 + (2 * 3); JS

Слайд 64

Comments (same as Java) identical to Java's comment syntax recall: 4

Comments (same as Java)

identical to Java's comment syntax
recall: 4 comment syntaxes
HTML:


CSS/JS/PHP: /* comment */
Java/JS/PHP: // comment
PHP: # comment

CS380

// single-line comment
/* multi-line comment */ JS

Слайд 65

Math object var rand1to10 = Math.floor(Math.random() * 10 + 1); var

Math object

var rand1to10 = Math.floor(Math.random() * 10 + 1);
var three

= Math.floor(Math.PI); JS

CS380

methods: abs, ceil, cos, floor, log, max, min, pow, random, round, sin, sqrt, tan
properties: E, PI

Слайд 66

Special values: null and undefined var ned = null; var benson

Special values: null and undefined

var ned = null;
var benson =

9;
// at this point in the code,
// ned is null
// benson's 9
// caroline is undefined JS

CS380

undefined : has not been declared, does not exist
null : exists, but was specifically assigned an empty or null value
Why does JavaScript have both of these?

Слайд 67

Logical operators CS380 > = most logical operators automatically convert types:

Logical operators

CS380

> < >= <= && || ! == !=

=== !==
most logical operators automatically convert types:
5 < "7" is true
42 == 42.0 is true
"5.0" == 5 is true
=== and !== are strict equality tests; checks both type and value
"5.0" === 5 is false
Слайд 68

if/else statement (same as Java) if (condition) { statements; } else

if/else statement (same as Java)

if (condition) {
statements;
} else if (condition)

{
statements;
} else {
statements;
}
JS

CS380

identical structure to Java's if/else statement
JavaScript allows almost anything as a condition

Слайд 69

Boolean type var iLike190M = true; var ieIsGood = "IE6" >

Boolean type

var iLike190M = true;
var ieIsGood = "IE6" > 0; //

false
if ("web devevelopment is great") { /* true */ }
if (0) { /* false */ } JS

CS380

any value can be used as a Boolean
"falsey" values: 0, 0.0, NaN, "", null, and undefined
"truthy" values: anything else
converting a value into a Boolean explicitly:
var boolValue = Boolean(otherValue);
var boolValue = !!(otherValue);

Слайд 70

for loop (same as Java) var sum = 0; for (var

for loop (same as Java)

var sum = 0;
for (var i

= 0; i < 100; i++) {
sum = sum + i;
} JS

var s1 = "hello";
var s2 = "";
for (var i = 0; i < s.length; i++) {
s2 += s1.charAt(i) + s1.charAt(i);
}
// s2 stores "hheelllloo" JS

CS380

Слайд 71

while loops (same as Java) while (condition) { statements; } JS

while loops (same as Java)

while (condition) {
statements;
} JS

CS380

break and continue

keywords also behave as in Java

do {
statements;
} while (condition); JS

Слайд 72

Popup boxes alert("message"); // message confirm("message"); // returns true or false

Popup boxes

alert("message"); // message
confirm("message"); // returns true or false
prompt("message"); // returns

user input string JS

CS380

Слайд 73

Arrays var name = []; // empty array var name =

Arrays

var name = []; // empty array
var name = [value, value,

..., value]; // pre-filled
name[index] = value; // store element JS

CS380

var ducks = ["Huey", "Dewey", "Louie"];
var stooges = []; // stooges.length is 0
stooges[0] = "Larry"; // stooges.length is 1
stooges[1] = "Moe"; // stooges.length is 2
stooges[4] = "Curly"; // stooges.length is 5
stooges[4] = "Shemp"; // stooges.length is 5 JS

Слайд 74

Array methods var a = ["Stef", "Jason"]; // Stef, Jason a.push("Brian");

Array methods

var a = ["Stef", "Jason"]; // Stef, Jason
a.push("Brian"); // Stef,

Jason, Brian
a.unshift("Kelly"); // Kelly, Stef, Jason, Brian
a.pop(); // Kelly, Stef, Jason
a.shift(); // Stef, Jason
a.sort(); // Jason, Stef JS

array serves as many data structures: list, queue, stack, ...
methods: concat, join, pop, push, reverse, shift, slice, sort, splice, toString, unshift
push and pop add / remove from back
unshift and shift add / remove from front
shift and pop return the element that is removed

Слайд 75

String type methods: charAt, charCodeAt, fromCharCode, indexOf, lastIndexOf, replace, split, substring,

String type

methods: charAt, charCodeAt, fromCharCode, indexOf, lastIndexOf, replace, split, substring, toLowerCase,

toUpperCase
charAt returns a one-letter String (there is no char type)
length property (not a method as in Java)
Strings can be specified with "" or ''
concatenation with + :
1 + 1 is 2, but "1" + 1 is "11"

var s = "Connie Client";
var fName = s.substring(0, s.indexOf(" ")); // "Connie"
var len = s.length; // 13
var s2 = 'Melvin Merchant'; JS

Слайд 76

More about String accessing the letters of a String: var count

More about String

accessing the letters of a String:

var count =

10;
var s1 = "" + count; // "10"
var s2 = count + " bananas, ah ah ah!"; // "10 bananas, ah ah ah!"
var n1 = parseInt("42 is the answer"); // 42
var n2 = parseFloat("booyah"); // NaN JS

escape sequences behave as in Java: \' \" \& \n \t \\
converting between numbers and Strings:

var firstLetter = s[0]; // fails in IE
var firstLetter = s.charAt(0); // does work in IE
var lastLetter = s.charAt(s.length - 1); JS

CS380

Слайд 77

Splitting strings: split and join var s = "the quick brown

Splitting strings: split and join

var s = "the quick brown fox";
var

a = s.split(" "); // ["the", "quick", "brown", "fox"]
a.reverse(); // ["fox", "brown", "quick", "the"]
s = a.join("!"); // "fox!brown!quick!the" JS

split breaks apart a string into an array using a delimiter
can also be used with regular expressions (seen later)
join merges an array into a single string, placing a delimiter between them

Слайд 78

Объекты Свойства kuku document.links[0].href="kuku1.htm"; Методы id=window.open("","example","width=400,height=150"); События

Объекты

Свойства
kuku
document.links[0].href="kuku1.htm";
Методы
id=window.open("","example","width=400,height=150");
События
CLICK HERE');">

Слайд 79

Методы function hello() { id=window.open("","example","width=400,height=150"); id.focus(); id.document.open(); id.document.write(" Hello JavaScript ");

Методы

function hello() {
id=window.open("","example","width=400,height=150"); id.focus(); id.document.open(); id.document.write("

Hello JavaScript

"); id.document.write("
"); id.document.write("");
id.document.close(); }

Слайд 80

Пример 2

Пример 2

Слайд 81

События

События

Слайд 82

Схема URL ... Внимание!!! при нажатии на гипертекстовую ссылку Внимание!!! можно получить окно предупреждения:

Схема URL

...
Внимание!!!
при нажатии на гипертекстовую ссылку Внимание!!! можно

получить окно предупреждения:
Слайд 83

Схема URL

Схема URL






type=reset value=Reset>


Слайд 84

Пример 3 До нажатия на кнопку Click После нажатия на кнопку Click

Пример 3

До нажатия на кнопку Click

После нажатия на кнопку Click

Слайд 85

Обработчик событий

Обработчик событий


Слайд 86

Обработчик событий window.alert( document.s.s1.options[document.s.s1.selectedIndex].text);"> Привет

Обработчик событий



Слайд 88

Вставка (контейнер SCRIPT) ...JavaScript-код... // --> ... Тело документа ...

Вставка (контейнер SCRIPT) 





... Тело документа ...


Слайд 89

Вставка (контейнер SCRIPT) Часы в строке статуса function time_scroll() { d

Вставка (контейнер SCRIPT) 



Часы в строке статуса