42. HTML. Формы. Валидация.

advertisement
42. HTML. Формы. Валидация.
Форма — это инструмент, с помощью которого HTML-документ может послать некоторую информацию в
некоторую заранее определенную точку внешнего мира, где информация будет некоторым образом обработана.
В последнее время определенное распространение получил язык PHP/FI, инструкции которого можно
встраивать прямо в HTML-документы (документы при этом сохраняются в виде файлов с расширением *.pht или
*.php).
Формы передают информацию программам-обработчикам в виде пар [имя переменной]=[значение
переменной]. Имена переменных следует задавать латинскими буквами. Значения переменных воспринимаются
обработчиками как строки, даже если они содержат только цифры.
Как устроена форма
Форма открывается меткой <FORM> и заканчивается меткой </FORM>. HTML-документ может содержать в себе
несколько форм, однако формы не должны находиться одна внутри другой. HTML-текст, включая метки, может
размещаться внутри форм без ограничений.
Метка <FORM> может содержать три атрибута, один из которых является обязательным. Вот эти атрибуты:
ACTION
Обязательный атрибут. Определяет, где находится обработчик формы.
METHOD
Определяет, каким образом (иначе говоря, с помощью какого метода протокола передачи гипертекстов) данные
из формы будут переданы обработчику. Допустимые значения: METHOD=POST и METHOD=GET. Если значение
атрибута не установлено, по умолчанию предполагается METHOD=GET.
ENCTYPE
Определяет, каким образом данные из формы будут закодированы для передачи обработчику. Если значение
атрибута не установлено, по умолчанию предполагается ENCTYPE=application/x-www-form-urlencoded.
Конец формы
В форме может быть несколько кнопок типа submit с различными именами и/или значениями. Обработчик,
таким образом, может действовать по-разному в зависимости от того, какую именно кнопку submit нажал
пользователь.
Как форма собирает данные
Существуют и другие типы элементов <INPUT>. Каждый элемент <INPUT> должен включать атрибут
NAME=[имя], определяющий имя элемента (и, соответственно, имя переменной, которая будет передана
обработчику). Имя должно задаваться только латинскими буквами. Большинство элементов <INPUT> должны
включать атрибут VALUE="[значение]", определяющий значение, которое будет передано обработчику под этим
именем. Для элементов <INPUT TYPE=text> и <INPUT TYPE=password>, однако, этот атрибут не обязателен,
поскольку значение соответствующей переменной может вводиться пользователем с клавиатуры.
HTML-валидатор производит несколько проверок Вашего кода. Основные из них:
1.
2.
3.
4.
Валидация синтаксиса — проверка на наличие синтаксических ошибок. <foo bar="baz"> является
корректным синтаксисом, несмотря на то, что <foo> не является допустимым HTML-тэгом, так что
проверка синтаксиса является минимально полезной для написания хорошего HTML.
Проверка вложенности тэгов — тэги должны быть закрыты в обратном порядке относительно их
открытия. Например, эта проверка отлавливает ошибки с неправильно закрытыми <div>.
Валидация DTD — проверка соответствия Вашего кода указанному Document Type Definition. Она
включает проверку названий тэгов, атрибутов, и «встраивания» тэгов (тэги одного типа внутри тэгов
другого типа)
Проверка на посторонние элементы — проверка выявляет все, что есть в коде, но отсутствует в DTD.
Например, пользовательские тэги и атрибуты.
43. Java Script. Введение в Java Script
JavaScript — объектно-ориентированный скриптовый язык программирования. Является диалектом языка
ECMAScript[~ 1].
JavaScript обычно используется как встраиваемый язык для программного доступа к объектам приложений.
Наиболее широкое применение находит в браузерах как язык сценариев для придания интерактивности вебстраницам.
Основные архитектурные черты: динамическая типизация, слабая типизация, автоматическое управление
памятью, прототипное программирование, функции как объекты первого класса.
На JavaScript оказали влияние многие языки, при разработке была цель сделать язык похожим на Java, но при
этом лёгким для использования непрограммистами[2]. Языком JavaScript не владеет какая-либо компания или
организация, что отличает его от ряда языков программирования, используемых в веб-разработке[~ 2][3].
Название «JavaScript» является зарегистрированным товарным знаком компании Oracle Corporation[4]
Возможности языка
JavaScript обладает рядом свойств объектно-ориентированного языка, но реализованное в языке
прототипирование обуславливает отличия в работе с объектами по сравнению с традиционными объектноориентированными языками. Кроме того, JavaScript имеет ряд свойств, присущих функциональным языкам —
функции как объекты первого класса, объекты как списки, карринг, анонимные функции, замыкания — что
придаёт языку дополнительную гибкость.
Несмотря на схожий с Си синтаксис, JavaScript по сравнению с языком Си имеет коренные отличия:
объекты, с возможностью интроспекции;
функции как объекты первого класса;
автоматическое приведение типов;
автоматическая сборка мусора;
анонимные функции.
В языке отсутствуют такие полезные вещи[24], как:
модульная система: JavaScript не предоставляет возможности управлять зависимостями и изоляцией областей
видимости;
стандартная библиотека: в частности, отсутствует интерфейс программирования приложений по работе с
файловой системой, управлению потоками ввода/вывода, базовых типов для бинарных данных;
стандартные интерфейсы к веб-серверам и базам данных;
система управления пакетами[~ 3], которая бы отслеживала зависимости и автоматически устанавливала их.
Семантика и синтаксис
Синтаксис языка JavaScript во многом напоминает синтаксис Си и Java, семантически же язык гораздо ближе к
Self, Smalltalk или даже Лиспу[17][25][Спецификация 2].
В JavaScript:
все идентификаторы регистрозависимы,
в названиях переменных можно использовать буквы, подчёркивание, символ доллара, арабские цифры,
названия переменных не могут начинаться с цифры,
для оформления однострочных комментариев используются //, многострочные и внутристрочные комментарии
начинаются с /* и заканчиваются */.
Структура языка
Структурно JavaScript можно представить в виде объединения трёх чётко различимых друг от друга
частей[26][27][28][29]:
ядро (ECMAScript),
объектная модель браузера (Browser Object Model или BOM (de)),
объектная модель документа (Document Object Model или DOM).
Если рассматривать JavaScript в отличных от браузера окружениях, то объектная модель браузера и объектная
модель документа могут не поддерживаться[28].
Объектную модель документа иногда рассматривают как отдельную от JavaScript
сущность[30][31][Спецификация 3], что согласуется с определением DOM как независимого от языка интерфейса
документа[32][~ 4]. В противоположность этому ряд авторов находят BOM и DOM тесно
взаимосвязанными[33][34].
[править] Ядро
Основная статья: ECMAScript
ECMAScript не является браузерным языком и на самом деле в нём не определяются методы ввода и вывода
информации[26]. Это скорее основа для построения скриптовых языков. Спецификация ECMAScript описывает
типы данных, инструкции, ключевые и зарезервированные слова, операторы, объекты, регулярные выражения,
не ограничивая авторов производных языков в расширении их новыми составляющими.
[править] Объектная модель браузера
Объектная модель браузера — браузероспецифичная часть языка[28][35], являющаяся прослойкой между ядром
и объектной моделью документа[36]. Основное предназначение объектной модели браузера — управление
окнами браузера и обеспечение их взаимодействия. Каждое из окон браузера представляется объектом window,
центральным объектом BOM. Объектная модель браузера на данный момент не стандартизирована[37][28],
однако спецификация находится в разработке WHATWG[36][Спецификация 4] и W3C[27][Спецификация 5].
Помимо управления окнами, в рамках объектной модели браузера, браузерами обычно обеспечивается
поддержка следующих сущностей[37][36]:
управление фреймами,
поддержка задержки в исполнении кода и зацикливания с задержкой,
системные диалоги,
управление адресом открытой страницы,
управление информацией о браузере,
управление информацией о параметрах монитора,
ограниченное управление историей просмотра страниц,
поддержка работы с HTTP cookie.
[Объектная модель документа
Основная статья: Document Object Model
Объектная модель документа — интерфейс программирования приложений для HTML и XML-документов[38].
Согласно DOM документу можно поставить в соответствие дерево объектов, обладающих рядом свойств,
которые позволяют производить с ним различные манипуляции:
получение узлов,
изменение узлов,
изменение связей между узлами,
удаление узлов.
44. Java Script. Типы и структуры данных. Java Script. Программирование свойств окна
Типы и структуры данных
Как и любой другой язык программирования JavaScript поддерживает встроенные типы и структуры данных. Все
их многообразие можно подразделить на:
- литералы и переменные
- массивы, функции и объекты
При этом все они делятся на встроенные и определяемые программистом. Функции и объекты рассматриваются
в разделах "Функции" и "Объекты". Поэтому здесь мы сосредоточимся на литералах, переменных и массивах.
Литералы
Литералом называют данные, которые используются в программе непосредственно. При этом под данными
понимаются числа или строки текста. Все они рассматриваются в JavaScript как элементарные типы данных.
Приведем примеры литералов:
числовой литерал: 10
числовой литерал: 2.310
числовой литерал: 2.3e+2
строковый литерал: 'Это строковый литерал'
строковый литерал: "Это строковый литерал"
Литералы используются в операциях присваивания значений переменным или операциях сравнения:
var a=10;
var str = 'Hy!!!';
if(x=='kuku') window.alert(x);
Переменные
Переменные в JavaScript могут быть определены назначением или при помощи оператора var:
i=10;
var i;
var i=10;
var id = window.open();
var a = new Array();
Как видно из примеров, переменные могут принимать самые разные значения, при этом тип переменной
определяется контекстом.
Существуют ли в JavaScript различные типы переменных? По всей видимости, да. При объявлении переменной
тип не указывается. Тип значения определяется контекстом. Поэтому существует соблазн предположить, что все
переменные одного и того же типа. Однако очевидно, что присваивание переменной значения объекта окна
(window.open())или объекта потока(setTimeout()), порождает создание совершенно разных структур в памяти.
Массивы
Массивы делятся на встроенные(document.links[], document.images[],...) и определяемые пользователем (автором
документа). Встроенные массивы мы подробно обсуждаем в разделах "Программируем картинки", "Программируем
формы" и "Программируем гипертекстовые переходы". Поэтому подробно остановимся на массивах, определяемых
пользователем. Для массивов определено несколько методов:
- join()
- reverse()
- sort()
и свойство length, которое позволяет получить число элементов массива. Это свойство активно используется в
примерах данного раздела. Например, при обсуждении метода join().
Функции
Язык программирования не может обойтись без механизма многократного использования кода программы. Такой
механизм обеспечивается процедурами или функциями. В JavaScript функция выступает в качестве одного из
основных типов данных. Одновременно с этим в JavaScript определен объект Function.
В общем случае любой объект JavaScript определяется через функцию. Для создания объекта используется
конструктор, который в свою очередь вводится через Function. Таким образом, с функциями в JavaScript связаны
следующие ключевые вопросы:
- Функция - тип данных
- Функция - объект
- Конструкторы объектов
Объекты
Объект - это ключевой, главный тип данных JavaScript. Любой другой тип данных имеет объектовую "обертку" wrapper. Это означает, что прежде чем получить доступ к значению переменной того или иного типа происходит
конвертирование переменной в объект, а только после этого выполняются действия над значением. Тип данных
Object сам определяет объекты.
В данном разделе мы остановимся на трех основных моментах:
- понятие объекта
- прототип объекта
- методы объекта Object
Мы не будем очень подробно вникать во все эти моменты, т.к. при программировании на стороне браузера чаще
всего обходятся встроенными средствами JavaScript, но т.к. все эти средства - объекты, нам нужно понимать, с
чем имеем дело.
Операторы
В этом разделе мы рассмотрим основные операторы JavaScript. Основное внимание при этом мы уделим
операторам декларирования и управления потоком вычислений. Без них не может быть написана ни одна
JavaScript программа.
Общий перечень этих операторов выглядит следующим образом:
- var
- {...}
- if
- while
- for
- for ... in
- break
- continue
- return
Сразу оговоримся, что этот список не является полным списком операторов JavaScript.
Управление фокусом
Фокус - это характеристика текущего окна, фрейма или поля формы. В каждом из разделов, описывающем
программирование этих объектов мы так или иначе касаемся вопроса фокуса. Под фокусом понимают
возможность активации свойств и методов объекта. Например, окно в фокусе, если оно является текущим окном,
т.е. лежит поверх всех других окон, и исполняются его методы или можно получить доступ к его свойствам.
В данном разделе мы рассмотрим управление фокусом в:
- окнах
- фреймах
- полях формы
совместно. Следует сразу заметить, что фреймы - это тоже объекты класса Window, и многие решения,
разработанные для окон справедливы и для фреймов.
45. Java Script. Программирование форм. Java Script. Программирование графики
Программируем графику
Наиболее зрелищные и интересные эффекты при программировании на JavaScript получаются при работе с
графикой.При этом в арсенале программиста не так уж и много инструментов: встроенные в документ картинки,
возможность генерации объекта IMAGE, а также комбинирование картинок с гипертекстовыми ссылками и
таблицами. Тем не менее, обилие различных эффектов, которые достигаются этими нехитрыми средствами,
впечатляет.
Программирование графики в JavaScript опирается на объект IMAGE, который характеризуется следующими
свойствами, методами и событиями:
Свойства
border
complete
height
hspace
lowsrc
name
src
vspace
width
Методы
нет
События
onAbort
onError
onLoad
Не смотря на такое обилие свойств, их абсолютное большинство можно только читать, но не изменять.
Отсутствие методов красноречиво об этом свидетельствует. Но два свойства можно изменять: src и lowsrc. Этого
оказывается достаточно для множества эффектов с картинками.
Все объекты класса IMAGE можно разделить на встроенные и порожденные программистом. Встроенные
объекты - это картинки контейнеров IMG. Если эти картинки поименовать, к ним можно обращаться по имени:
<a href="javascript:void(0);"
onClick="window.alert('Image name:'+document.mamonts.name)">
< img name=mamonts src=../images/jsi/i1.gif border=0>
< /a>
Картинка активна. Если на нее нажать, то получите имя контейнера IMG.Обращение document.mamonts.name
позволяет распечатать в окне предупреждения это имя. При этом само имя указано как name=mamonts в
контейнере IMG.
К встроенному графическому объекту можно обратиться и по индексу:
document.images[13].name;
В данном случае 14-ая картинка документа - это картинка мамонтов, которую вы видели выше. Если нажать на
гипертекстовую ссылку, то откроется окно предупреждения, в котором будет отображено имя контейнера IMG.
src и lowsrc
Свойства src и lowsrc определяют URL изображения, которое монтируется внутрь документа. При этом lowsrc
определяет временное изображение, обычно маленькое, которое отображается пока загружается основное
изображение, чей URL указывается в атрибуте src контейнера IMG. Свойство src принимает значение атрибута
src контейнера IMG. Программист может изменять значения и src и lowsrc. Рассмотрим пример с src:
document.i2.src="../images/jsi/i2.gif";
Как видно из этого примера, существует возможность изменять вмонтированную картинку за счет изменения
значения свойства src встроенного объекта IMAGE. Если вы первый раз просматриваете данную страницу, то
постепенное изменение картинки будет заметно на глаз. Как сделать это изменение более быстрым мы
рассмотрим в разделе "Изменение картинки".
Оптимизация отображения
ри программировании графики следует учитывать множество факторов, которые влияют на скорость отображения
страницы и скорость изменения графических образов. При этом обычная дилемма оптимизации программ - скорость
или размер занимаемой памяти, решается только путем увеличения скорости. О размере памяти как-то не принято
думать при программировании на JavaScript.
Из всех способов оптимизации отображения картинок мы остановимся только на нескольких из них:
- Оптимизация отображения при загрузке
- Оптимизация отображения за счет предварительной загрузки
- Оптимизация отображения за счет нарезки изображения
Если первые две позиции относятся в равной степени как к отображению статических картинок, так и к
мультипликации, то третий пункт характерен, главным образом, для мультипликации.
Оптимизация при загрузке
Практически любое руководство по разработке HTML-страниц указывает на то, что при использовании контейнера
IMG в теле HTML-страницы хорошим тоном является указание атрибутов width и height. Диктуется это порядком
загрузки компонентов страницы с сервера и алгоритмом работы HTML-parser. Первым загружается текст разметки.
После этого parser разбирает текст и начинает загрузку дополнительных компонентов, в том числе и графики. При
этом загрузка различных картинок, в зависимости от типа HTTP-протокола, может идти последовательно или
параллельно.
Также параллельно с загрузкой parser продолжает свою работу. Если для картинок заданы параметры ширины и
высоты, то можно отформатировать текст и отобразить его в окне браузера. До тех пор пока эти параметры не
определены, отображения текста не происходит.
Таким образом, указание высоты и ширины картинки позволит отобразить документ раньше, чем картинки будут
получены с сервера. Это дает возможность пользователю читать документ или воспользоваться его
гипертекстовыми ссылками до момента полной загрузки(событие load).
С точки зрения Javascript указание размеров картинки задает начальные параметры окна отображения графики
внутри документа. Это позволяет воспользоваться маленьким, абсолютно прозрачным образом, для того, чтобы
заменить его полноценной картинкой:
Идея состоит в передаче маленького объекта для замещения его большим объектом по требованию.
Предварительная загрузка
Замена одного образа другим часто бывает оправдана только в том случае, когда происходит достаточно быстро.
Если перезагрузка длится долго, то эффект, которого хотят добиться, теряется. Для такой быстрой подмены
используют возможность предварительной загрузки документа в специально созданный объект класса Image:
Реальный эффект можно почувствовать только при отключении кэширования страниц на стороне клиента
(браузера). Кэширование часто используют для ускорения работы со страницами Web-узла. Как правило, загрузка
первой страницы - это достаточно длительный процесс. Самое главное, что пользователь в этот момент готов
немного подождать. Поэтому кроме графики необходимой только на первой странице ему можно передать и
графику, которая на этой странице не отображается. Но зато при переходе к другим страницам узла она будет
отображаться без задержки на передачу с сервера.
Описанный только что прием не однозначен. Его оправдывает только то, что если пользователь нетерпелив, то он
вообще отключит передачу графики.
Нарезка картинок
Нарезка картинок применяется довольно часто. Она позволяет достигать эффекта частичного изменения
отображаемой картинки. Наиболее часто он применяется при создании меню:
Кроме этого эффекта нарезка позволяет реализовать достаточно эффективную мультипликацию на больших
картинках. При этом изменяется не весь образ, а только отдельные его части:
Из примера видно, что изменение части образа довольно сильно изменяет скорость отображения. При изменении
всей картинки о мультипликации можно говорить достаточно условно.
Графика и таблицы
Одним из наиболее популярных приемов дизайна страниц Web-узла является техника нарезки картинок на
составные части. Можно выделить следующие способы применения этой техники для организации навигационных
компонентов страницы:
- Горизонтальные и вертикальные меню
- Вложенные меню
- Навигационные графические блоки
Главной проблемой при использовании нарезанной графики является защита ее от контекстного форматирования
страницы HTML-parser-ом. Дело в том, что он автоматически переносит элементы разметки на новую строку, если
они не помещаются в одной строке. Нарезанная картинка требует совершенно определенного расположения своих
составных частей, поэтому простое их перечисление в ряд не дает желаемого эффекта:
Графика и обработка событий
В данном разделе речь не пойдет об обработчиках событий контейнера IMG. Мы просто рассмотрим наиболее
типичный способ комбинирования обработчиков событий и изменения графических образов. Собственно не
имело бы смысла применять нарезанную графику, если бы не возможность использования обработчиков
событий для изменения отдельных частей изображения. Продолжая обсуждение примера с навигационным
деревом, покажем его развитие с обработкой событий от мыши и изменением картинок:
46. Java Script. Программирование гипертекстовых переходов. Управление фокусом.
Введение
Фокус — это характеристика текущего окна, фрейма или поля формы. В каждом из разделов, описывающем
программирование этих объектов, мы, так или иначе, касаемся вопроса фокуса. Под фокусом понимают
возможность активизации свойств и методов объекта. Например, окно в фокусе, если оно является текущим,
т.е. лежит поверх всех других окон и исполняются его методы или можно получить доступ к его свойствам.
В данном разделе мы рассмотрим управление фокусом в
окнах;
фреймах;
полях формы.
Следует сразу заметить, что фреймы — это тоже объекты класса Window, и многие решения, разработанные
для окон, справедливы и для фреймов.
Управляем фокусом в окнах
Управляем фокусом в окнах
Для управления фокусом у объекта класса "окно" существует два метода: focus() и blur(). Первый передает
фокус в окно, в то время как второй фокус из окна убирает. Рассмотрим простой пример:
function hide_window()
{
wid=window.open("","test",
"width=400,height=200");
wid.opener.focus();
wid.document.open();
... wid.document.close();
}
В данном примере новое окно открывается и сразу теряет фокус; прячется за основным окном-родителем.
Если при первичном нажатии на кнопку оно еще всплывает и только после этого прячется, то при повторном
нажатии пользователь не видит появления нового окна, так как оно уже открыто и меняется только его
содержимое.
Для того чтобы этого не происходило, нужно после открытия передавать фокус на новое окно:
function visible_window()
{
wid=window.open("","test",
"width=400,height=200");
wid.focus();
wid.document.open();
... wid.document.close();
}
Если теперь нажимать попеременно кнопки "Скрытое окно" и "Видимое окно", окно будет то появляться,
то исчезать. При этом новых окон не появляется, так как с одним и тем же именем может быть открыто
только одно окно.
Невидимое окно может доставить пользователю неприятности, из которых самая безобидная — отсутствие
реакции на его действия. Код просто записывается в невидимое окно. Но ведь в скрытом окне можно что-нибудь
и запустить. Для этого стоит только проверить, существует ли данное окно или нет, и если оно есть и не
в фокусе, то активизировать в нем какую-нибудь программу.
Для реализации такого сценария достаточно использовать метод окна onblur(). Его можно также задать в
контейнере BODY в качестве обработчика события onBlur, но в этом случае он видим пользователю.
Мы воспользуемся этим методом "в лоб":
window.onblur =
new Function("window.defaultStatus =
'Background started...';");
window.onfocus =
new Function("window.defaultStatus =
'Document:Done';");
Обратите внимание на поле статуса браузера. Оно демонстрирует возможность выполнения функции в фоновом
режиме. Кроме того, onblur() в этом виде не отрабатывает в Internet Explorer. Причина кроется в прототипе
объекта и возможности его переназначения программистом.
Конечно, когда разработчики создавали всю эту конструкцию, думали не о том, как насолить пользователю,
а о том, как сократить ресурсы, необходимые браузеру для отображения нескольких окон. Ведь можно
выполнить все то же самое с точностью до наоборот: запускать, например, часы в фокусе и останавливать
их в фоне. Но этот пример мы рассмотрим в контексте фреймов.
Управление фокусом во фреймах
Управление фокусом во фреймах
Фрейм — это такое же окно, как и само окно браузера. Точнее — это объект того же класса. К нему
применимы те же методы, что и к обычному объекту "окно":
var flag=1;
function clock()
{
if(flag==0)
{
d=new Date();
s=d.getHours()+':'+d.getMinutes()+':'+
d.getSeconds();
window.document.forms[0].elements[0].value=s;
}
setTimeout('clock();',100);
}
window.onblur =
new Function('this.flag = 1;');
window.onfocus =
new Function('this.flag = 0;');
window.onload = clock;
Данный фрагмент кода размещен в каждом из двух фреймов, которые отображаются в примере. А их именно два.
Просто ширина границы набора фреймов установлена в 0. Если окно примера разделить мысленно пополам и
"кликнуть" мышью в одну из половин, то пойдут часы в этой половине. Если теперь переместиться в другой
фрейм и "кликнуть" мышью в нем, то часы пойдут в поле формы этого фрейма, а в другом фрейме остановятся.
Фокус в полях формы
Фокус в полях формы
Управление фокусом в полях формы, кроме этого раздела, описано еще и в разделе "Текст в полях ввода".
Здесь мы рассматриваем этот вопрос в контексте общего применения методов blur() и focus(). Эти методы
определены для любого поля формы, а не только для полей ввода. Рассмотрим простой пример.
Попробуйте изменить в этой форме значение любого из полей. Вряд ли это вам удастся. Обработчик события
Focus (onFocus) уводит фокус из поля на произвольное место страницы.
Программирование гипертекстовых переходов
Картинку на HTML-странице можно менять без перезагрузки всей HTML-страницы. К большому сожалению,
изменить часть текста страницы без использования позиционированных слоев нельзя.
Замечание: начиная с версий 4.0 Microsoft Explorer это стало возможным, но так как здесь речь идет о
классическом JavaScript и его применении к различным объектным моделям только в одной интерпретации,
данную возможность мы рассматривать не будем.
Кроме графики, на странице есть еще несколько встроенных массивов объектов, элементы которых можно
изменять.
Один из них — массив гипертекстовых ссылок.
Гипертекстовая ссылка относится к классу объектов URL. К этому классу объектов относятся:
- Location;
- Area;
- Link.
Область применения URL на HTML-страницах гораздо шире этих трех позиций. Чаще всего мы сталкиваемся
с ним при программировании:
- графики (атрибут SRC контейнера IMG);
- форм (атрибут ACTION контейнера FORM);
- ссылок (атрибут HREF контейнера A);
- "чувствительных" картинок (атрибут HREF контейнера AREA).
Первые две позиции подробно обсуждаются в разделах "Программируем картинки" и "Программируем формы".
В данном разделе мы сосредоточимся на программировании собственно гипертекстовых переходов и
"чувствительных" картинок. Но прежде рассмотрим объект URL.
Объект URL
Объект URL
Объект класса URL обладает свойствами, которые определены схемой URL. В качестве примера рассмотрим
ссылку на применение атрибута SRC в контейнере IMG:
http://javascript-spravka.ru/help/index.html
Значения свойств
href: http://javascript-spravka.ru/help/index.html
protocol: http:
hostname: javascript-spravka.ru
host: javascript-spravka.ru:80
port: 80
pathname: help/index.html
search:
hash:
Обращение к свойству объекта класса URL выглядит как:
имя_объект_класса_URL.свойство
Например, так:
document.links[0].href
document.location.host
document.links[2].hash
Свойства объекта URL дают программисту возможность менять только часть URL – объекта (гипертекстовой
ссылки, например). Наиболее интересно это выглядит в объекте Location , когда при изменении свойства
происходит перезагрузка документа. Однако и при работе с обычными гипертекстовыми ссылками такая
технология более предпочтительна, чем изменение всего URL целиком.
Здесь следует заметить, что чаще всего все-таки меняют весь URL. Это связано с тем, что такое действие
более понятно с точки зрения HTML-разметки. Ведь у контейнера A нет атрибута PROTOCOL, но зато есть
атрибут HREF
Массивы встроенных гипертекстовых ссылок
Массивы встроенных гипертекстовых ссылок
К встроенным гипертекстовым ссылкам относятся собственно ссылки (<A HREF=...>...</A>) и ссылки
"чувствительных" графических картинок. Они составляют встроенный массив гипертекстовых ссылок
документа (document.links[]).
К сожалению, обратиться по имени к гипертекстовой ссылке нельзя. Точнее такое обращение не рекомендуется
в силу различий между браузерами. Поэтому обращаться к ним можно только как к массиву встроенных ссылок.
В качестве примера распечатаем гипертекстовые ссылки некоторого документа:
for(i=0;i<document.links.length;i++)
document.write(document.links[i].href+"<BR>");
Список ссылок:
http://www.javascript-spravka.ru/help/index.html
http://www.javascript-spravka.ru/help/terms.html
http://www.javascript-spravka.ru/help/shop.html
Вставим в документ контейнер MAP:
<MAP NAME=test>
<AREA SHAPE=rect COORDS="0,0,0,0"
HREF="javascript:window.alert('Area_Link_1');void(0);">
<AREA SHAPE=rect COORDS="0,0,0,0"
HREF="javascript:window.alert('Area_Link_2');void(0);">
</MAP>
И снова распечатаем массив ссылок:
links[0]:http://www.javascript-spravka.ru/help/index.html
links[1]:http://www.javascript-spravka.ru/help/terms.html
links[2]:http://www.javascript-spravka.ru/help/shop.html
links[3]:javascript:window.alert('Area_Link_1');void(0);
links[4]:javascript:window.alert('Area_Link_2');void(0);
Две новые ссылки — это ссылки из контейнера MAP, который не отображается, но ссылки из него попадают
в массив встроенных ссылок. При этом, как в нашем случае, они могут попасть между обычными
гипертекстовыми ссылками, если контейнер MAP расположить внутри текста документа. На данной странице
он помещен перед контейнером SCRIPT, в котором мы распечатываем массив встроенных ссылок.
Замена атрибута HREF
Замена атрибута HREF
Покажем, как при помощи JavaScript-кода можно управлять свойствами объекта класса Link. Рассмотрим меню
типа "записная книжка":
Конечно, это не настоящая "записная книжка". Поле формы заполняется только при выборе гипертекстовой
ссылки, расположенной над этим полем. Единственная цель данного примера — показать, как изменяется
значение атрибута HREF (оно отображается в поле status окна браузера). Изменение производится посредством
вызова функции:
function line(a)
{
if(a==0)
{
clear();
window.document.o0.src="fio.gif";
window.document.all['lo0'].href='javascript:window.document.f1.fi1.value="Фамилия И.О."; void(0);';
window.document.o1.src="rpho.gif";
window.document.all['lo1'].href='javascript:window.document.f1.fi2.value="253-93-10"; void(0);';
window.document.o2.src="hpho.gif";
window.document.all['lo2'].href='javascript:window.document.f1.fi3.value="253-93-12"; void(0);';
}
.....
}
В данном случае мы работаем с тремя элементами массива встроенных гипертекстовых ссылок:
all['lo0'], all['lo1'] и all['lo2']. У каждого из них при вызове функции со значением аргумента a,
равным 0, 1 и 2, соответственно, изменяем значение свойства href. Это свойство мы меняем целиком.
URL можно менять и частично.
Изменение части URL
Изменение части URL
Гипертекстовая ссылка — это объект класса URL. У этого объекта можно изменять и другие свойства.
Проиллюстрируем эту возможность при частичном изменении ссылки. Распечатаем сначала свойство, которое
не зависит от протокола (в нашем случае от javascript)
document.all.next.pathname: href:--> http://javascript-spravka.ru/help/index.html
pathname:--> help/index.html
Изменим теперь pathname:
document.all.next.pathname="test";
document.write(
window.document.all.next.pathname);
href:--> http://javascript-spravka.ru:80/test
pathname--> test
Обратите внимание, что Internet Explorer самостоятельно добавил в ссылку номер порта. По этой причине
использовать свойства, отличные от href, в ссылках, где используется схема javascript, не рекомендуется.
Обработка событий Mouseover и Mouseout
Обработка событий Mouseover и Mouseout
Эти два события из всех событий, которые обрабатываются на страницах Web, используются чаще всего.
Именно они позволяют обесцвечивать и проявлять картинки, а также менять содержание поля status. Первое
событие генерируется браузером, если курсор мыши указывает на гипертекстовую ссылку, а второе — когда
он покидает гипертекстовую ссылку. Рассмотрим пример с записной книжкой, но только для проявления меню
второго уровня будем использовать обработчик события onMouseover:
<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=0
ALIGN=center>
<TR>
<TD>
<A HREF="javascript:void(0);"
onMouseover="line2(0);return true;">
<IMG SRC=addrpho.gif BORDER=0></A></TD>
...
</TR>
</TABLE>
В качестве обработчика события мы вызываем функцию line2(), которая идентична line1() из предыдущего
примера. В примере IMG перенесен на новую строку для наглядности. На самом деле так поступать не
следует — при интерпретации HTML-парсером могут появиться неучтенные пропуски, которые не
предусмотрены
автором страницы.
Мы рассмотрели редкий пример, в котором не требуется возврата предыдущего значения после прохода мыши
по гипертекстовой ссылке. По этой причине в гипертекстовой ссылке не применялся второй обработчик
onMouseout. В большинстве случаев, например при расцвечивании картинки, он требуется:
<A HREF="javascript:void(0);"
onMouseover="document.pic1.src='image2.gif';
return true;"
onMouseout="document.pic1.src='image.gif';
return true;">
<IMG NAME=pic1 src=image.gif BORDER=0></A>
Рассматривая предыдущий пример, мы не обсудили использование функции return. При работе с графикой
значение, которое возвращает обработчик события, на результат отображения не влияет. Но если изменять
значение поля статуса браузера, то изменения произойдут только в случае возврата значения true. Более
подробно об этом рассказано в разделе "Поле статуса".
Обработка события click
Обработка события click
Вообще говоря, обработчик события click в современном JavaScript не нужен. Можно прекрасно обойтись
URL-схемой javascript, которая была специально придумана для перехвата события гипертекстового перехода.
Обработчик onClick следует рассматривать как реликт, доставшийся нам в наследство от предыдущих версий
языка, который поддерживается в версиях Netscape Navigator и Internet Explorer.
Основная задача обработчика данного события — перехват события гипертекстового перехода. Если функция
обработки данного события возвращает значение true, то переход происходит, при значении false — не
происходит:
Отменим переход в начало страницы описания события обработчика onClick:
<A HREF=#click onClick=
"window.alert('Нет перехода на #click');
return false;">onClick</A>
А теперь дадим пользователю право выбора перехода в начало страницы посредством окна подтверждения:
<A HREF=#top onClick=
"return window.confirm(
'Перейти в начало страницы?');">
переход в начало страницы</A>
Обратите внимание на место применения функции window.confirm() — аргумент команды return. Логика проста:
функция возвращает значение true или false, и именно оно подставляется в качестве аргумента. Если
просто написать функцию без return, то ничего работать не будет.
Можно ли вообще обойтись одним обработчиком onClick без использования атрибута HREF? Видимо, нет.
Первое, что необходимо браузеру — это определение типа контейнера A. Если в нем есть только атрибут
NAME, то это якорь, если присутствует атрибут HREF — ссылка. Это два разных объекта. Они имеют различные
составляющие, в том числе и обработчики событий. В контексте текущего раздела нам нужна именно ссылка,
т.е. контейнер A с атрибутом HREF. Проверим наше предположение:
<A ID=red
onClick="window.alert('тест');return false;">
Нет атрибута HREF
</A>
Текст "Нет атрибута HREF" — это якорь. Обработчик на нем не работает, так как на него нельзя указать
мышью.
<A HREF="" id=red
onClick="window.alert('URL:'+this.href);
return false;">
Нет атрибута HREF
</A>
Теперь мы указали пустую ссылку (см. поле статуса). Содержание окна — это база URL.
47. Java Script. Объект Document.
Содержит информацию о текущем документе и обеспечен методами отображения HTML-документа.
Синтаксис:
Для определения объекта document используется стандартный HTML синтаксис:
<BODY
BACKGROUND="backgroundImage"
BGCOLOR="backgroundColor"
TEXT="foregroundColor"
LINK="unfollowedLinkColor"
ALINK="activatedLinkColor"
VLINK="followedLinkColor"
[onLoad="handlerText"]
[onUnload="handlerText"]>
</BODY>
BACKGROUND определяет картинку, которая выполняет роль фона документа.
BGCOLOR, TEXT, LINK, ALINK, VLINK определяет цвет как шестиразрядное шестнадцатиричное число (в формате
"rrggbb" или "#rrggbb") или как одно из строковых названий в Color Value.
Использование свойств и методов объекта document:
1.
2.
document.propertyName
document.methodName(parameters)
propertyName одно из свойств, описанных ниже.
methodName один из методов, описанных ниже.
Свойство:

window
Описание:
HTML документ состоит из тагов <HEAD> и <BODY>. <HEAD> содержит информацию о заголовке документа и
основании (абсолютный URL основания, используемый для относительных URL ссылок в документе). Таг
<BODY> заключает в себе тело документа, который определен текущим URL. Все тело документа (все другие
элементы HTML документа) находятся внутри тага <BODY>.
Вы можете загрузить новый документ, используя объект location.
Вы можете ссылаться на якоря, формы и ссылки документа, используя массивы anchors, forms и links. Эти массивы
содержат запись для каждого якоря, формы и ссылки в документе.
Свойства:













alinkColor отражает атрибут ALINK
anchors массив, отражающий все якоря в документе
bgColor отражает атрибут BGCOLOR
cookie определяет "ключик"
fgColor отражает атрибут TEXT
forms массив, отражающий все формы в документе
lastModified отражает дату последней модификации документа
linkColor отражает атрибут LINK
links массив, отражающий все ссылки в документе
referrer отражает URL документа, из которого вызван текущий документ
title отражает содержание тага <TITLE>
URL отражает полный URL документа
vlinkColor отражает атрибут VLINK
Следующие объекты также являются свойствами объекта document:




anchor
form
history
link
Методы:




close
open
write
writeln
События:

нет. События onLoad и onUnload определяются в таге <BODY>, но являются событиями объекта window.
48. Java Script. Объект Window.
Метод window.open() вызывается с такими параметрами:
window.open( адрес файла, имя окна, параметры ) , где



адрес файла - адрес файла, первоначально загружаемого в новое окно;
имя окна - дается новому окну, чтобы впоследствии ссылаться на него из скрипта;
параметры - набор элементов нового окна браузера - строка, в которой через запятую в любом порядке
перечисляются пары параметр=значение . Если какой-то параметр не указан, будет применено значение
по умолчанию.
параметр
значение
описание
width
размер в пикселах
ширина нового окна
height
размер в пикселах
высота нового окна
left
размер в пикселах
абсцисса левого верхнего угла нового окна
top
размер в пикселах
ордината левого верхнего угла нового окна
toolbar
1 / 0 / yes / no
вывод панели инструменов
location
1 / 0 / yes / no
вывод адресной строки
directories
1 / 0 / yes / no
вывод панели ссылок
menubar
1 / 0 / yes / no
вывод строки меню
scrollbars
1 / 0 / yes / no
вывод полос прокрутки
resizable
1 / 0 / yes / no
возможность изменения размеров окна
status
1 / 0 / yes / no
вывод строки статуса
fullscreen
1 / 0 / yes / no
вывод на полный экран
Например, при выполнении window.open('test.htm','new','width=300,height=200,toolbar=1') откроется окно
300х200, в котором из стандартных интерфейсных элементов будет только панель инструментов.
49. Java Script. Обработка ошибок в Java Script. Основные методы и функции Java Script.
Обработка ошибок в JavaScript
JavaScript имеет два основных уровня обработки ошибок: синтаксические ошибки и ошибки времени
выполнения.
Синтаксические ошибки возникают до выполнения кода JavaScript, означая в основном, что код невозможно
компилировать. Возьмем, например, следующий код:
for(var i=0; i<10; i++)
// рабочий код здесь
}
Обратите внимание, что здесь пропущена открывающая скобка {. Если попробовать выполнить этот код, то
немедленно появится сообщение об ошибке, даже если код находится в функции, которая не выполняется сразу.
Такие ошибки почти всегда легко находятся и исправляются. В этом случае будет получено сообщение,
говорящее что-нибудь подобное " Ожидалась ')', строка 10, позиция 18". Если перейти к строке 10, то там
обычно будет находиться достаточно очевидная ошибка, такая, как пропущенная ), дополнительный знак <
или какая-то другая опечатка. С такими ошибками ничего нельзя сделать, кроме как просто исправить и
двигаться дальше. Ниже представлен список некоторых наиболее распространенных синтаксических ошибок:
Пропущенные или непарные фигурные, круглые или квадратные скобки
Каждая фигурная {, круглая (, или квадратная [ скобка должна иметь свою закрывающую парную скобку.
Если имеются вложенные скобки, то внутренние должны быть закрыты прежде, чем внешние. Например, набор
скобок {[}] является недопустимым.
Условия операторов if, for и while должны помещаться в круглые скобки. Выражнение "if x=5{" является
недопустимым, так как "x=5" должно быть заключено в круглые скобки. Если с этим возникнут проблемы, то
существуют редакторы, такие, как EditPlus, которые могут выделять соответствующие пары скобок, и т.д.
Пропущенные или непарные кавычки
Это очень распространенная проблема. Строки в JavaScript начинаются символом 'или " и должны заканчиваться
таким же символом. Если этот символ существует в строке, то он должен быть экранирован. Например, код
var x = "It`s a beautiful day";
является недопустимым, потому что " в It`s не экранировано. Этот код должен выглядеть следующим образом:
var x = 'It\'s a beautiful day';
// или
var x = "It's a beautiful day";
Еще одной достаточно распространенной ошибкой является завершение строки другим символом, т.е.:
var x = "It's a beautiful day';
Эта строка начинается с символа ", поэтому должна закончиться также символом ".
Пропущенная точка с запятой
Хотя точки с запятой обычно не нужны в JavaScript, но лучше все же их использовать. Например, если нужно
сократить файл JavaScript, то обычно удаляют все переносы строк. Возьмем следующий код:
var x=5
var y=10
Если удалить переносы строк, то получим код
var x=5 var y=10
который вызовет ошибку. Если бы использовались точки с запятой, то проблемы не было бы.
К содержанию
Ошибки времени выполнения
Ошибки времени выполнения
После запуска кода на исполнение начинают появляться ошибки времени выполнения. Эти ошибки могут
возникать в связи с множеством причин. Каждый из следующих далее блоков кода будет порождать ошибку:
alert(x); // 'x' не определено
var x;
x[5] = 'test'; // 'x' будет null или не является объектом
window.frames = 5; // Не реализовано
var for; // ожидается идентификатор
document.doesNotExist(5);
// объект не поддерживает это свойство или метод
alert(parseInt('5')); // ожидается объект
Многие из этих проблем вызываются более общими ошибками, которые приходится разыскивать.
Неправильное использование прописных букв
Все встроенные функции JavaScript используют специальную форму записи имен функций, предполагающую,
что имя функции начинается со строчной буквы, а в начале каждого следующего слова будет использоваться
прописная буква: parseInt, getElementById, createElement, appendChild, и т.д.
Так как JavaScript учитывает регистр символов, то неправильный ввод имени одной из этих функций часто
будет приводить к ошибке во время выполнения.
Ссылка на несуществующий код, функции или объекты DOM]
Эта проблема возникает обычно в отношении объектов DOM. Предположим, что имеется код, который изменяет
некоторые элементы формы на странице. Если делается попытка выполнить этот код до появления элементов
формы, например, если поместить его в тег <HEAD>, то будет получена ошибка JavaScript.
Обычно эта проблема легко решается. Лучшим решением будет выполнение кода по событию onload, например:
<BODY onload="loadFunction();">
или еще лучше, присоединение события к загрузке тела.
Использование зарезервированного слова
Существует длинный список зарезервированных ключевых слов JavaScript. Если делается попытка использовать
многие из них вне их специального контекста, как, например, запись
var for = 5;
то будет возникать ошибка.
Использование пропущенного параметра
При определении функции обычно используется некоторое количество аргументов. Если некоторые из этих
аргументов пропущены и делается попытка их использовать, то возникнут ошибки.
Большинство из этих проблем попадают в категорию опечаток и просто обычных ошибок, которые можно
исправить, но необходимо о них знать, чтобы случайно не сделать.
Однако последний тип ошибки из этого списка с пропущенными параметрами можно проверить достаточно
легко:
function myFunction(a, b, c){
if(a){
// выполняется работа с a
}
if(b && c){
// выполняется работа с b и c
}
}
Если функция вызывается только с одной переменной, то проблемы не возникает. Однако надо помнить об
одной вещи: если входящая по значению переменная может быть определена как false (0 или false), то код
не будет работать. В связи с этим лучше проверять, что переменная не была определена:
function myFunction(a, b, c){
if(typeof(a)!='undefined'){
// выполнение кода с a
}
if((typeof(b)!='undefined') && (typeof(c)!='undefined')){
// выполнение кода с b и c
}
}
В этом случае, даже если одна из переменных будет передана как 0, false или null, код все равно будет
работать.
К содержанию
Функция window.onerror
window.onerror
Откровенно говоря, функция window.onerror имеет небольшую практическую пользу. Ее чаще всего используют
для полного отключения всех сообщений об ошибках во время выполнения:
window.onerror = function(){
return true;
}
С этим кодом сообщение об ошибке никогда не будет выводиться. Однако в связи с этим приложение может не
работать. Например, если бы переменная была null и с ней была выполнена какая-то операция, то в обычной
ситуации должно появиться сообщение об ошибке. При использовании этого кода функция или сценарий в
случае
возникновения ошибки будет просто молча останавливаться.
Функцию window.onerror можно также использовать для вывода пользователям несколько более
дружественных
сообщений об ошибках. Можно просто вывести, например, сообщение 'Произошла ошибка, свяжитесь,
пожалуйста,
с Web-мастером', вместо вывода пользователю всех технических деталей ошибки (что большинство браузеров
делает по умолчанию).
Еще одно использование window.onerror состоит в отправке разработчику списка всех ошибок, произошедших
на сайте. Можно использовать AJAX для отправки сообщений об ошибках в форме, чтобы можно было позже их
исправить. Все это возможно сделать неявно, без взаимодействия с пользователем.
К содержанию
Операторы Try/Catch/Finally и Throw
Операторы Try/Catch/Finally и Throw
Операторы Try/Catch являются несомненно наиболее распространенным и обычно лучшим способом
реализовать
обработку ошибок в JavaScript. Но не только это - операторы Try/Catch могут иногда быть единственным
способом реализовать некоторые задачи, такие, как обнаружение объекта. Возьмем, например, простую
функцию для создания в Internet Explorer объекта XMLHttp:
var activeXObjects = ['Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0',
'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP'];
for(var i=0; i<activeXObjects.length; i++){
try{
return new ActiveXObject(activeXObjects[i]);
}catch(err){}
}
Заранее неизвестно, какие объекты установил пользователь, и, к сожалению, браузер не предоставляет
никакого механизма это определить. Поэтому остается создавать каждый из 6 возможных объектов, пока
один из них (будем надеяться) не заработает.
Операторы Try/Catch можно использовать для перехвата ошибок двух типов: ошибок времени выполнения и
ошибок пользователя. Ошибки времени выполнения, как говорилось ранее, возникают, когда у компилятора
JavaScript существует проблема с созданным кодом. Ошибки пользователя, с другой стороны, будут технически
проходить без проблем, но возникают в связи с контекстом приложения. Если имеется поле, в которое
пользователь, например, должен ввести свой возраст, и пользователь вводит -2, то это приводит к
появлению ошибки.
Блок Try/Catch имеет достаточно простой синтаксис:
try{
// код
}catch(err){
// код обработки ошибки
}
Если код в блоке try приводит к ошибке, то сценарий немедленно переходит в блок catch. Объект ошибки
" err" в JavaScript имеет ряд полезных свойств - описание, сообщение, имя и номер, которые можно
использовать для вывода информации о том, что произошло:
try{
var x;
x[5] = 5;
}catch(err){
alert('An error occured: '+err.description);
}
Если в операторе catch окажется ошибка, то JavaScript сможет обратиться в дальнейшем к ее описанию.
Такой блок кода Try/Catch можно применять в любом месте. Однако, обычно, код должен быть написан таким
образом, чтобы это не нужно было использовать, - в частности, весь ввод должен проверяться.
Блок Try/Catch можно применять также для создания своих собственных ошибок:
function setAge(x){
if(typeof(x)=='undefined') throw('Вы должны ввести возраст');
if(typeof(x)!='number') throw('Возраст должен быть числом');
if(x<0) throw('Возраст не может быть меньше 0');
if(x>120) throw('Возраст не может быть больше 120');
var myAge = x;
// еще код
}
try{
setAge(userInput);
}catch(err){
alert(err);
}
В этом случае выполняется проверка того, что пользователь вводит возраст. Если он вводит недопустимые
данные, сценарий немедленно завершается, а пользователь получает сообщение об ошибке.
Блок try/catch имеет еще одну часть, оператор "finally":
try{
// код
}catch(err){
// код
}finally{
// код
}
Код в "завершающем блоке" будет выполняться независимо от того, что происходит с операторами Try/Catch.
В чем же разница между завершающим блоком и простым размещением кода после блока try/catch? В
большинстве
случаев никакой разницы не будет. Однако, если блок try/catch находится в функции и происходит выход из
функции в блоке try или catch, то возникнет существенное различие:
function myFunction(){
try{
return someValue;
}catch(err){
return defaultValue;
}finally{
alert('finally!');
}
alert('End!');
}
В этом случае оба блока try и catch возвращают значение. Мы получим сообщение "finally!", но не получим
сообщение "End!", потому что произойдет выход из функции до сообщения alert('End!'). То же самое остается
справедливым для операторов Try/Catch, которые осуществляют выход из тела цикла for или while, например:
for(var i=0; i<10; i++){
try{
if(i==5) continue;
}catch(err){
// обработка ошибки
}finally{
// код
}
// еще код
}
Основные методы и функции Java Script
abs
Возвращает абсолютное значение числа.
Синтаксис:
Math.abs(number)
number любое числовое выражение или свойство существующего объекта.
acos
Возвращает арккосинус числа (в радианах).
Синтаксис:
Math.acos(number)
number числовое выражение между -1 и 1 или свойство существующего объекта.
alert
Отображает диалоговое окно Alert с сообщением и кнопкой OK.
Синтаксис:
alert("message")
Метод alert используется для отображения сообщения, не требующего решения пользователя. Аргумент message
определяет сообщение, которое содержит диалоговое окно.
Хотя alert является методом объекта window вам не нужно определять windowReference, при его вызове.
Например, windowReference.alert() необязательно.
anchor
Создает HTML якорь, который используется как гипертекстовая ссылка.
Синтаксис:
text.anchor(nameAttribute)
text любая строка или свойство существующего объекта.
nameAttribute любая строка или свойство существующего объекта.
asin
Возвращает арксинус числа (в радианах).
Синтаксис:
Math.asin(number)
number числовое выражение между -1 и 1 или свойство существующего объекта.
Метод asin возвращает числовое значение между -Пи/2 и Пи/2. Если значение number находится за пределами
данного диапазона, возвращаемое значение всегда будет 0.
atan
Возвращает арктангенс числа (в радианах).
Синтаксис:
Math.atan(number)
number любое числовое выражение или свойство существующего объекта, представляющее собой тангенс угла.
Метод atan возвращает числовое выражение между -Пи/2 и Пи/2.
back
Позволяет вернуться на предыдущий URL в списке посещенных URL'ей.
Синтаксис:
history.back()
Этот метод выполняет действие равносильное выбору пользователем кнопки Back в окне Navigator'а. Метод back
также равносилен history.go(-1).
big
Вызывает строку, отображаемою большим шрифтом, как если установить ей таг <BIG>.
Синтаксис:
stringName.big()
stringName любая строка или свойство существующего объекта.
Для форматирования и отображения строки в документе метод big используется с методами write или writeln.
blink
Вызывает мигающую строку, как если установить ей таг <BLINK>.
Синтаксис:
stringName.blink()
stringName любая строка или свойство существующего объекта.
Для форматирования и отображения строки в документе метод blink используется с методами write или writeln.
blur
Изменен в Navigator 3.0.
Убирает фокус с указанного объекта.
Синтаксис:
1. password.blur()
2. select.blur()
3. textName.blur()
4. textareaName.blur()
password любое значение атрибута NAME объекта password или элемент массива elements.
select любое значение атрибута NAME объекта select или элемент массива elements.
textName любое значение атрибута NAME объекта text или элемент массива elements.
textareaName любое значение атрибута NAME объекта textarea или элемент массива elements.
Метод blur используется для удаления фокуса с указанного элемента формы.
bold
Вызывает строку, отображаемую жирным шрифтом, как если установить ей таг <B>.
Синтаксис:
stringName.bold()
stringName любая строка или свойство существующего объекта.
Для форматирования и отображения строки в документе метод bold используется с методами write или writeln.
ceil
Возвращает ближайшее целое числа, округленного в большую сторону или равное числу.
Синтаксис:
Math.ceil(number)
number любое числовое выражение или свойство существующего объекта.
charAt
Возвращает символ указанный в index.
Синтаксис:
stringName.charAt(index)
stringName любая строка или свойство существующего объекта.
index любое целое число от 0 до stringName.length-1 или свойство существующего объекта.
Символы в строке индексируются слева направо. Индексом первого символа является 0, индексом последнего
символа - stringName.length-1. Если вы указали index превышающий количество символов в строке, JavaScript
возвратит пустую строку.
clearTimeout
Окончание задержки, установленной методом setTimeout.
Синтаксис:
clearTimeout(timeoutID)
timeoutID задержка, установка которой была возвращена предыдущим вызовом метода setTimeout.
Смотрите описание метода setTimeout
click
Имитирует щелчок мыши на выбранном элементе формы.
Синтаксис:
buttonName.click()
radioName[index].click()
checkboxName.click()
buttonName любое значение атрибута NAME объектов button, reset или submit или элемент массива elements.
radioName значение атрибута NAME объекта radio или элемент массива elements.
index целое число, представляющее кнопку radio в объекте radio.
checkboxName любое значение атрибута NAME объекта checkbox или элемент массива elements.
Результат действия метода click изменяется в зависимости от вызываемого элемента:
для button, reset и submit выполняется одинаковое действие - нажатие кнопки.
для radio - выбор кнопки radio.
для checkbox - отметка галочкой checkbox и установка значения на on.
close (объект document)
Закрывает поток вывода и завершает вывод данных в рабочую область Navigator'а для отображения.
Синтаксис:
document.close()
Метод close закрывает поток вывода, открытый методом document.open(). Если поток был открыт для рабочей
области Navigator'а, метод close завершает вывод содержимого потока на экран. Таги стиля шрифта, такие как
<BIG> и <CENTER>, автоматически закрывают поток вывода. Метод close также останавливает "meteor shower" в
иконе Navigator'а и отображает "Document: Done" в строке состояния.
close (объект window)
Изменен в Navigator 3.0.
Закрывает указанное окно.
Синтаксис:
windowReference.close()
windowReference ссылка на окно, как описано в объекте window.
Метод close закрывает указанное окно. Если вы объявляете close без указания windowReference, то JavaScript
закрывает текущее окно.
В событиях вы должны указывать window.close() вместо обычно используемого close(). Объявление close() без
определения имени объекта равносильно document.close().
confirm
Отображает диалоговое окно с указанным сообщением и кнопками OK и Cancel.
Синтаксис:
confirm("message")
message любая строка или свойство существующего объекта.
Метод confirm используется для принятия пользователем решения, требующего выбора OK или Cancel. Аргумент
message определяет сообщение, которое требует решения пользователя. Метод confirm возвращает true, если
пользователь выбрал OK, и false, если пользователь выбрал Cancel.
Хотя confirm является методом объекта window, вам не нужно указывать windowReference при его вызове.
Например, windowReference.confirm() является необязательным.
cos
Возвращает косинус числа.
Синтаксис:
Math.cos(number)
number числовое выражение, представляющее собой размер угла в радианах или свойство существующего
объекта.
Метод cos возвращает числовое значение между -1 и 1, которое представляет собой косинус угла.
escape
Возвращает ASCII значение аргумента, закодированного в ISO Latin-1.
Синтаксис:
escape("string")
string не буквенно-числовая строка в ISO Latin-1 кодировке или свойство существующего объекта.
Функция escape не является методом, связанным с любым объектом, но является частью самого языка.
Значение, возвращаемое функцией escape, является строкой вида "%xx", где xx является ASCII кодировкой
символа в аргументе. Если аргументом функции escape является буквенно-числовым символом, то функция
escape возвращает тот же символ.
eval
Функция eval выполняет строку-аргумент и подставлает полученное значение вместо себя.
Синтаксис:
eval("string")
string любая строка, представляющая собой JavaScript выражение, команду или последовательность команд.
Выражение может включать переменные и свойства существующего объекта.
Функция eval является встроенной функцией JavaScript. Она не является методом, связанным с любым объектом,
но является частью самого языка.
Аргументом функции eval является строка. Не используйте eval для вычислений арифметических выражений.
JavaScript вычисляет арифметические выражения автоматически. Если аргумент представляет собой выражение,
eval вычисляет выражение. Если аргумент представляет собой одно или более JavaScript команд, то eval
выполняет команды.
Если вы построили арифметическое выражение как строку, вы можете использовать eval для ее вычисления.
exp
Возвращает enumber, где number является аргументом, а e является экспонентой, основанием натурального
логарифма.
Синтаксис:
Math.exp(number)
number любое числовое выражение или свойство существующего объекта.
fixed
Вызывает строку, отображаемую моноширинным шрифтом, как если установить ей таг <TT>.
Синтаксис:
stringName.fixed()
stringName любая строка или свойство существующего объекта.
Для форматирования и отображения строки в документе метод fixed используется с методами write и writeln.
floor
Возвращает ближайшее целое числа, округленного в меньшую сторону или равное числу.
Синтаксис:
Math.floor(number)
number любое числовое выражение или свойство существующего объекта.
focus
Изменен в Navigator 3.0.
Устанавливает фокус на определенный объект.
Синтаксис:
1. password.focus()
2. select.focus()
3. textName.focus()
4. textareaName.focus()
password любое значение атрибута NAME объекта password или элемент массива elements.
select любое значение атрибута NAME объекта select или элемент массива elements.
textName любое значение атрибута NAME объекта text или элемент массива elements.
textareaName любое значение атрибута NAME объекта textarea или элемент массива elements.
Метод focus используется для установки фокуса на указанный элемент формы. Вы можете затем программно
ввести значение в элемент или позволить пользователю ввести значение.
fontcolor
Вызывает строку, отображаемую установленным цветом, как если поместить ее в таг <FONT COLOR=color>.
Синтаксис:
stringName.fontcolor(color)
stringName любая строка или свойство существующего объекта.
color строка или свойство существующего объекта, определяющая цвет как шестиразрядное шестнадцатиричное
число (RGB) или как одно из строковых названий в списке Color Value.
Для форматирования и отображения строки в документе метод fontcolor используется с методами write и writeln.
Если вы определяете color как шестиразрядное шестнадцатиричное число вы должны использовать формат
rrggbb.
Метод fontcolor анулирует значение, установленное в свойстве fgColor.
fontsize
Вызывает строку, отображаемую установленным размером шрифта, как если поместить ее в таг <FONT
SIZE=size>.
Синтаксис:
stringName.fontsize(size)
stringName любая строка или свойство существующего объекта.
size целое число от 1 до 7 или строка, представляющая собой целое со знаком (+ или -) от 1 до 7, или свойство
существующего объекта.
Для форматирования и отображения строки в документе метод fontsize используется с методами write и writeln.
Когда вы определяете size как целое, вы устанавливаете размер stringName в один из семи специфицированных
размеров. Когда вы определяете size как "-2", вы устанавливаете размер шрифта stringName относительно
размера, установленного в таге .
forward
Загружает следующий URL в списке посещенных URL'ей.
Синтаксис:
history.forward()
Этот метод выполняет действие равносильное выбору пользователем кнопки Forward в окне Navigator'а. Метод
forward также равносилен history.go(1).
getDate
Возвращает число месяца для указанной даты.
Синтаксис:
dateObjectName.getDate()
dateObjectName любое имя объекта date или свойство существующего объекта.
Значение, возвращаемое getDate, является целым числом от 1 до 31.
getDay
Возвращает день недели для указанной даты.
Синтаксис:
dateObjectName.getDay()
dateObjectName любое имя объекта date или свойство существующего объекта.
Значение, возвращаемое getDay, является целым числом, соответствующим дню недели: ноль для воскресенья,
один для понедельника, два для вторника и так далее.
getHours
Возвращает часы для указанной даты.
Синтаксис:
dateObjectName.getHours()
dateObjectName любое имя объекта date или свойство существующего объекта.
Значение, возвращаемое getHours, является целым числом от 0 до 23.
getMinutes
Возвращает минуты для указанной даты.
Синтаксис:
dateObjectName.getMinutes()
dateObjectName любое имя объекта date или свойство существующего объекта.
Значение, возвращаемое getMinutes, является целым числом от 0 до 59.
getMonth
Возвращает месяц для указанной даты.
Синтаксис:
dateObjectName.getMonth()
dateObjectName любое имя объекта date или свойство существующего объекта.
Значение, возвращаемое getMonth, является целым числом от 0 до 11. Ноль соответствует январю, один февралю и так далее.
getSeconds
Возвращает секунды в текущем времени.
Синтаксис:
dateObjectName.getSeconds()
dateObjectName любое имя объекта date или свойство существующего объекта.
Значение, возвращаемое getSeconds, является целым числом от 0 до 59.
getTime
Возвращает числовое значение, соответствующее времени для указанной даты.
Синтаксис:
dateObjectName.getTime()
dateObjectName любое имя объекта date или свойство существующего объекта.
Значение, возвращаемое методом getTime, является числом миллисекунд, начиная с 1 января 1970 00:00:00. Вы
можете использовать этот метод для назначения даты и времени другому объекту date.
getTimezoneOffset
Возвращает смещение временной зоны в минутах относительно гринвичского меридиана.
Синтаксис:
dateObjectName.getTimezoneOffset()
dateObjectName любое имя объекта date или свойство существующего объекта.
Смещение временной зоны является разницей между местным временем и GMT (гринвичским временем).
Сезонное время (зимнее, летнее) не дает возможности говорить об этом смещении как о константе.
getYear
Возвращает год для указанной даты.
Синтаксис:
dateObjectName.getYear()
dateObjectName любое имя объекта date или свойство существующего объекта.
Значение, возвращаемое getYear, равно году минус 1900. Например, если год равен 1976, то возвращаемое
значение равно 76.
go
Загружает URL из списка посещенных URL'ей.
Синтаксис:
history.go(delta | location)
delta целое число или свойство существующего объекта, представляющее собой относительную позицию в
списке посещенных URL'ей.
location строка или свойство существующего объекта, представляющая собой URL или его часть из списка
посещенных URL'ей.
Метод go позволяет перейти на адрес, содержащийся в списке посещенных URL'ей, который указан вами в
качестве аргумента метода go. Вы можете посмотреть этот список, выбрав History в меню Window. Последние 10
позиций списка также отображаются в меню Go.
Аргумент delta может быть положительным и отрицательным числом. Если delta больше нуля, то метод go
переходит на URL вперед в списке посещенных URL'ей; в противном случае переход осуществляется на URL
назад. Если delta равна 0, то Navigator перезагружает текущую страницу.
Аргумент location является строкой. location выбирает для загрузки ближайший адрес в списке посещенных
URL'ей, содержащий подстроку location, указанную вами в качестве аргумента. Каждая часть URL содержит
определенную информацию. Смотрите объект location, где описаны компоненты URL.
indexOf
Возвращает индекс позиции впервые встреченного искомого значения в вызванном объекте string. Поиск
начинается с fromIndex.
синтаксис:
stringName.indexOf(searchValue, [fromIndex])
stringName любая строка или свойство существующего объекта.
searchValue строка или свойство существующего объекта, представляющая собой искомое значение.
fromIndex место в вызванной строке, с которого начинается поиск. Это может быть любое целое число от 0 до
stringName.length-1 или свойство существующего объекта.
Символы в строке индексируются слева направо. Индекс первого символа равен 0, индекс последнего stringName.length-1.
Если вы не указываете значение fromIndex, JavaScript принимает по умолчанию 0. Если searchValue не найден,
JavaScript возвращает -1.
isNaN
Изменена в Navigator 3.0.
На UNIX платформах проверяет аргумент, является ли он "NaN" (не числом).
Синтаксис:
isNaN(testValue)
testValue значение, которое вы хотите проверить.
Функция isNaN является встроенной функцией JavaScript. Она не является методом, связанным с любым
объектом, но является частью самого языка. Функция isNaN применяется только на UNIX платформах.
На всех платформах, за исключением Windows, функции parseFloat и parseInt возвращают "NaN", когда они
принимают нечисловое значение. Значение "NaN" не является числом в любом случае. Вы можете вызывать
функцию NaN для того, чтобы определить является ли результат parseFloat или parseInt "NaN". Если над "NaN"
совершаются арифметические операции, то их результатами также будет "NaN".
Функция isNaN возвращает true или false.
italics
Вызывает строку, отображаемую курсивом, как если установить ей таг <I>.
Синтаксис:
stringName.italics()
stringName любая строка или свойство существующего объекта.
Для форматирования и отображения строки в документе метод italics используется с методами write или writeln.
lastIndexOf
Возвращает индекс впервые встреченного искомого значения в вызванном объекте string. Поиск по строке
осуществляется в обратном направлении, начиная с fromIndex.
Синтаксис:
stringName.lastindexOf(searchValue, [fromIndex])
stringName любая строка или свойство существующего объекта.
searchValue строка или свойство существующего объекта, представляющая собой искомое значение.
fromIndex место в вызванной строке, с которого начинается поиск. Это может быть любое целое число от 0 до
stringName.length-1 или свойство существующего объекта.
Символы в строке индексируются слева направо. Индекс первого символа равен 0, индекс последнего stringName.length-1.
Если вы не указываете значение fromIndex, JavaScript принимает по умолчанию stringName.length-1 (конец
строки). Если searchValue не найден, JavaScript возвращает -1.
link
Создает гипертекстовую ссылку HTML, по которой можно перейти на другой URL.
Синтаксис:
linkText.link(hrefAttribute)
Для создания и отображения гипертекстовой ссылки в документе метод link используется с методами write или
writeln. Создайте ссылку методом link, затем вызовите write или writeln для отображения ссылки в документе.
В синтаксисе строка linkText представляет собой текст, который увидит пользователь. Строка hrefAttribute
представляет собой атрибут HREF тага <A>, это будет целевой URL. Каждая часть URL содержит определенную
информацию. Смотрите объект location, где описаны компоненты URL.
Ссылки, созданные методом link, становятся элементами массива links.
log
Возвращает натуральный логарифм числа (по основанию e).
Синтаксис:
Math.log(number)
number любое положительное числовое выражение или свойство существующего объекта.
Если значение number находится за пределами диапазона, возвращенное значение всегда будет 1.797693134862316e+308.
max
Возвращает большее число из двух.
Синтаксис:
Math.max(number1, number2)
number1 и number2 любые числовые аргументы или свойства существующих объектов.
min
Возвращает меньшее число из двух.
Синтаксис:
Math.min(number1, number2)
number1 и number2 любые числовые аргументы или свойства существующих объектов.
open (объект document)
Открывает поток для получения вывода методами write и writeln.
Синтаксис:
document.open(["mimeType"])
mimeType устанавливает любой из следующих типов документа:
text/html
text/plain
image/gif
image/jpeg
image/x-bitmap
plug-In
plug-In любой составной plug-in MIME тип, поддерживаемый Netscape'ом.
Метод open открывает поток для получения вывода методами write и writeln. Если mimeType является текстом
или картинкой, то поток открыт в рабочую область Navigator'а; иначе, поток открыт на plug-in. Если документ
уже существует в целевом окне, то метод open очищает его.
Для закрытия потока используйте метод document.close(). Метод close вызывает текст или картинку, которые
были отправлены в рабочую область Navigator'а для отображения. После использования document.close(),
введите document.open() снова, когда вы захотите начать вывод другого потока.
mimeType является необязательным аргументом, определяющим тип документа. Если вы не указываете
mimeType, то метод open принимает по умолчанию text/html.
Описание mimeType:
text/html определяет текст, содержащий ASCII текст в HTML формате.
text/plain определяет текст, содержащий ASCII текст с символами конца строки, для ограничения отображаемых
строк.
image/gif определяет документ с закодированными байтами, содержащий GIF заголовок и размеры в пикселях.
image/jpeg определяет документ с закодированными байтами, содержащий JPEG заголовок и размеры в
пикселях.
image/x-bitmap определяет документ с закодированными байтами, содержащий bitmap заголовок и размеры в
пикселях.
plug-in загружает определенный plug-in и использует его как место назначения для методов write и writeln.
Например, "x-world/vrtml" загружет VR Scout VRML plug-in из Chaco Communications, а "aplication/x-director"
загружает Macromedia Shockware plug-in.
open (объект window)
Открывает новое окно web-броузера.
Синтаксис:
[windowVar=][window].open("URL", "windowName", ["windowFeatures"])
windowVar имя нового окна. Эта переменная используется при ссылках на свойства, методы и контейнеры окна.
URL определяет URL, открываемый в новом окне. Смотрите объект location, где описаны компоненты URL.
windowName имя окна, используемое в атрибуте TARGET тага <FORM> или <A>. windowName может содержать
только буквенно-цифровые символы или символ подчеркивания (_).
windowFeatures список через запятую любых из следующих опций или значений:
toolbar[=yes | no] | [=1 | 0]
location[=yes | no] | [=1 | 0]
directoties[=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=pixels
height=pixels
Вы можете использовать любой набор этих опций. Опции разделяются запятой. Не делайте пробелов между
опциями.
pixels положительное целое число, определяющее размеры окна в пикселях.
Метод open открывает новое окно web-броузера клиента, что равносильно выбору New WebBrowser из меню File
Navigator'а. Аргумент URL определяет URL, содержащийся в новом окне. Если URL является пустой строкой, то
создастся пустое окно.
В событиях вы должны указывать window.open() вместо обычно используемого open(). Объявление open() без
определения имени объекта равносильно document.open().
windowFeatures является необязательным списком перечисленных через запятую опций для нового окна.
Булевы опции windowFeatures принимают значение true, если они определены без значений, или как yes или 1.
Например, open("", "messageWindow", "toolbar") и open("", "messageWindow", "toolbar=1") как в первом, так и во
втором случае опция toolbar принимает значение true. Если windowName не определяет существующего окна и
вы не определяете windowFeatures, то все булевы опции windowFeatures принимают по умолчанию значение
true. Если вы определяете любую из опций windowFeatures, то все остальные опции принимают значение false,
если вы их не определите дополнительно.
Описание windowFeatures:
toolbar создает стандартные рабочие инструменты Navigator'а, с такими кнопками как "Back" и "Forward".
location создает поле ввода Location.
directories создает кнопки стандартных директорий Navigator'а, такие как "What's New" и "What's Coll".
status создает строку состояния внизу окна.
menubar создает меню вверху окна.
scrollbars создает горизонтальную и вертикальную прокрутки, когда документ больше, чем размер окна.
resizable позволяет пользователю изменять размер окна.
width определяет ширину окна в пикселях.
height определяет высоту окна в пикселях.
parse
Возвращает количество миллисекунд в строковом представлении даты, начиная с 1 января 1970 00:00:00, по
местному времени.
Синтаксис:
Date.parse(dateString)
Метод parse выдает дату в строковом представлении (например, "Dec 25, 1995") и возвращает количество
миллисекунд, начиная с 1 января 1970 00:00:00 (по местному времени). Эта функция используется для установки
значений даты, основанных на строковом значении, например, в сочетании с методом setTime и объектом Date.
Полученная строка представляет собой время, parse возвращает значение времени. Она принимается в
стандартном синтаксисе даты IETF: "Mon, 25 Dec 1995 13:30:00 GMT". Она понимает континентальную US
временную зону, но в основном, используется временная зона смещения, например "Mon, 25 Dec 1995 13:30:00
GMT+0430" (4 часа, 30 минут западнее Гринвича). Если вы не указали временной зоны, принимается местная
временная зона. GMT и UTC считаются эквивалентными.
Так как функция parse является статическим методом Date, вы всегда используете ее как Date.parse(), а не как
метод созданного вами объекта date.
parseFloat
Анализирует строковый аргумент и возвращает число с плавающей точкой.
Синтаксис:
parseFloat(string)
string строка, представляющая собой значение, которое вы хотите проанализировать.
Функция parseFloat является встроенным объектом JavaScript. Она не является методом, связанным с любым
объектом, но является частью самого языка.
Функция parseFloat анализирует строку-аргумент и возвращает число с плавающей точкой. Если встреченный
им символ отличается от знака (+ или -), цифры (0-9), десятичной точки или экспоненты, то он возвращает
значение до этой точки, игнорируя этот символ и все последующие символы.
Если первый символ не может быть конвертирован в число, parseFloat возвращает одно из следующих значений:
"пусто" на Windows платформах.
"NaN" на любых других платформах указывает на то, что значение не является числом.
parseInt
Анализирует строковый аргумент и возвращает целое число, определенное как основание.
Синтаксис:
parseInt(string [,radix])
string строка, которая представляет собой значение, которое вы хотите проанализировать.
radix целое число, представляющее собой основание, возвращаемого значения.
Функция parseFloat является встроенным объектом JavaScript. Она не является методом, связанным с любым
объектом, но является частью самого языка.
Функция parseFloat анализирует его первый аргумент-строку и пытается возвратить целое число, определенное
как основание. Например, основание 10 означает перевод в десятичное число, 8 - восьмеричное, 16 шестнадцатиричное, и т.д.
Если parseInt в указанном основании встречает символ, не являющийся числом, то он пропускает его и все
следующие символы и возвращает целочисленное значение разобранное до точки. ParseInt усекает числа до
целочисленных значений.
Если основание не определено или определено как 0, JavaScript принимает следующее:
если ввод string начинается с "0x", то основание равно 16 (шестнадцатиричное).
если ввод string начинается с "0", то основание равно 8 (восьмиричное).
если ввод string начинается с любого другого значения, то основание равно 10 (десятичное).
если первый символ не может быть конвертирован в число, parseFloat возвращает одно из следующих значений:
"пусто" на Windows платформах.
"NaN" на любых других платформах указывает на то, что значение не является числом.
Для арифметических целей значение "NaN" не явяляется числом в любом случае. Вы можете вызвать функцию
isNaN для того, чтобы определить является ли результат parseInt "NaN". Если "NaN" применить в
арифметических операциях, то их результатами также будут "NaN".
pow
Возвращает base в степени exponent, т.е. baseexponent.
Синтаксис:
Math.pow(base, exponent)
base числовое выражение или свойство существующего объекта.
exponent числовое выражение или свойство существующего объекта. Если результат может оказаться
недопустимым значением (например, pow(-1, 0.5), то возвращенное значение равно нулю.
prompt
Отображает диалоговое окно с сообщением и полем ввода.
Синтаксис:
prompt(message, [inputDefault])
message любая строка или свойство существующего объекта; строка отображается как сообщение.
inputDefault строка, целое число или свойство существующего объекта, представляющая собой значение
вводимое в поле по умолчанию.
Метод prompt используется для отображения диалогового окна, требующего ввода текста пользователем. Если
вы не определяете первоначальное значение для inputDefault, то диалоговое окно отображает значение
<undefined>.
Хотя prompt является методом объекта window, вам не нужно определять windowReference, при его вызове.
Например, windowReference.prompt() является не обязательным.
random
Изменен в Navigator 3.0.
Возвращает случайное число между нулем и единицей. Этот метод применяется только на UNIX платфомах.
Синтаксис:
Math.random()
setDate
Устанавливает число месяца для указанной даты.
Синтаксис:
dateObjectName.setDate(dayValue)
dateObjectName любое имя объекта date или свойство существующего объекта.
dayValue целое число от 1 до 31 или свойство существующего объекта, представляющего собой число месяца.
setHours
Устанавливает часы для указанной даты.
Синтаксис:
dateObjectName.setHours(hoursValue)
dateObjectName любое имя объекта date или свойство существующего объекта.
hoursValue целое число от 0 до 23 или свойство существующего объекта, представляющее собой часы.
setMinutes
Устанавливает минуты для указанной даты.
Синтаксис:
dateObjectName.setMinutes(minutesValue)
dateObjectName любое имя объекта date или свойство существующего объекта.
minutesValue целое число от 0 до 59 или свойство существующего объекта, представляющее собой минуты.
setMonth
Устанавливает месяц для указанной даты.
Синтаксис:
dateObjectName.setMonth(month Value)
dateObjectName любое имя объекта date или свойство существующего объекта.
monthValue целое число от 0 до 11 (представляющее собой месяцы с января по декабрь) или свойство
существующего объекта.
setSeconds
Устанавливает секунды для указанной даты.
Синтаксис:
dateObjectName.setSeconds(secondsValue)
dateObjectName любое имя объекта date или свойство существующего объекта.
secondsValue целое число от 0 до 59 или свойство существующего объекта.
setTime
Устанавливает значение объекта date.
Синтаксис:
dateObjectName.setTime(timevalue)
dateObjectName любое имя объекта date или свойство существующего объекта.
timevalue целое число или свойство существующего объекта, представляющее собой количество миллисекунд,
начиная с 1 января 1970 00:00:00.
Метод setTime используется для добавления даты и времени другому объекту.
setTimeout
Выполняет выражение по истечении установленного количества миллисекунд.
Синтаксис:
timeoutID=setTimeout(expression, msec)
timeoutID идентификатор, который используется только для окончания выполнения, используя метод
clearTimeout.
expression строковое выражение или свойство существующего объекта.
msec числовое значение, числовой ряд или свойство существующего объекта в миллисекундах.
Метод setTimeout выполняет выражение после установленного количества времени. Он не выполняет
выражение многократно. Например, если метод setTimeout установлен на 5 секунд, то выражение выполнится
через 5 секунд, но не каждые 5 секунд.
setYear
Устанавливает год для указанной даты.
Синтаксис:
dateObjectName.setYear(yearValue)
dateObjectName любое имя объекта date или свойство существующего объекта.
timevalue целое число больше чем 1900 или свойство существующего объекта.
sin
Возвращает синус числа.
Синтаксис:
Math.sin(number)
number числовое выражение или свойство существующего объекта, представляющее собой величину угла в
радианах.
Метод sin возвращает числовое значение между -1 и 1, представляющее собой синус угла.
small
Выводит строку, отображаемую маленьким шрифтом, как если установить ей таг <SMALL>.
Синтаксис:
stringName.small()
stringName любая строка или свойство существующего объекта.
Для форматирования и отображения строки в документе метод small используется с методами write или writeln.
sqrt
Возвращает квадратный корень числа.
Синтаксис:
Math.sqrt(number)
number любое неотрицательное числовое выражение или свойство существующего объекта.
Если значение number находится за пределами данного диапазона, возвращенное значение всегда будет 0.
strike
Выводит строку, отображаемую как перечеркнутый текст, как если установить ей таг <STRIKE>.
Синтаксис:
stringName.strike()
stringName любая строка или свойство существующего объекта.
Для форматирования и отображения строки в документе метод strike используется с методами write или writeln.
sub
Выводит строку, отображаемую как нижний индекс, как если установить ей таг <SUB>.
Синтаксис:
stringName.sub()
stringName любая строка или свойство существующего объекта.
Для форматирования и отображения строки в документе метод sub используется с методами write или writeln.
submit
Передает форму.
Синтаксис:
formName.submit()
formName любая строка или свойство существующего объекта.
Метод submit передает указанную форму. Он выполняет такое же действие как кнопка submit.
Метод submit используется для передачи данных http-серверу. Метод submit возвращает данные, используя
методы "get" или "post", определенные в свойстве method.
substring
Возвращает подстроку объекта string.
Синтаксис:
stringName.substring(indexA, indexB)
stringName любая строка или свойство существующего объекта.
indexA любое целое число от 0 до stringName.length-1 или свойство существующего объекта.
indexB любое целое число от 0 до stringName.length-1 или свойство существующего объекта.
Символы в строке индексируются слева направо. Индекс первого символа равен 0, индекс последнего stringName.length-1.
Если indexA меньше чем indexB, то метод substring возвращает подстроку, начиная с символа indexA и заканчивая
символом перед indexB. Если indexA больше чем indexB, то метод substring возвращает подстроку, начиная с
символа indexB и заканчивая символом перед indexA. Если indexA равен indexB, то метод substring возвращает
пустую строку.
sup
Выводит строку, отображаемую как нижний индекс, как если установить ей таг <SUP>.
Синтаксис:
stringName.sup()
stringNameлюбая строка или свойство существующего объекта.
Для форматирования и отображения строки в документе метод sup используется с методами write или writeln.
tan
Возвращает тангенс числа.
Синтаксис:
Math.tan(number)
number числовое выражение, представляющее собой величину угла в радианах, или свойство существующего
объекта.
Метод tan возвращает числовое значение, представляющее собой тангенс угла.
toGMTString
Переводит дату в строку, используя среднее гринвичское время (GMT).
Синтаксис:
dateObjectName.toGMTString()
dateObjectName любое имя объекта date или свойство существующего объекта.
Точный формат значения возвращаемого toGMTString зависит от платформы.
toLocaleString
Переводит дату в строку, используя местный часовой пояс.
Синтаксис:
dateObjectName.toLocaleString()
dateObjectName любое имя объекта date или свойство существующего объекта.
Если вы для перевода даты используете toLocaleString, помните, что различные locales собирают строку в
различных путях. Используйте методы getHours, getMinutes, getSeconds для получения более переносимых
результатов.
toLowerCase
Возвращает значение вызванной строки, переведенной в нижний регистр.
Синтаксис:
stringName.toLowerCase()
stringName любая строка или свойство существующего объекта.
Метод toLowerCase возвращает значение stringName, переведенное в нижний регистр. toLowerCase не изменяет
значения stringName.
toUpperCase
Возвращает значение вызванной строки, переведенной в верхний регистр.
Синтаксис:
stringName.toUpperCase()
stringName любая строка или свойство существующего объекта.
Метод toUpperCase возвращает значение stringName, переведенное в верхний регистр. toUpperCase не изменяет
значения stringName.
unescape
Возвращает ASCII строку для указанного значения.
Синтаксис:
unescape("string")
string строка или свойство существующего объекта, содержащие символы в любой из следующих форм:
"%integer", где integer - число между 0 и 255 (десятичное)
"hex", где hex - число между 0x0 и 0xFF (шестнадцатиричное)
Функция unescape не является методом, связанным с каким-либо объектом, но является частью самого языка.
Строка, возвращаемая функцией unescape, является рядом символов в ISO Latin-1 кодировке.
UTC
Возвращает количество миллисекунд в объект date, начиная с 1 января 1970 00:00:00, GMT.
Синтаксис:
Date.UTC(year, month, day, [, hrs] [, min] [, sec])
year год после 1990.
month месяц между 0-11.
day день месяца между 1-31.
hrs часы между 0-23.
min минуты между 0-59.
sec секунды между 0-59.
UTC берет параметры даты, разделенные запятой, и возвращает количество миллисекунд, начиная с 1 января
1970 00:00:00, GMT.
Так как UTC является статическим методом Date, используйте его как Date.UTC(), а не как метод созданного вами
объекта date.
write
Пишет одно или более HTML выражений в документ в указанном окне.
Синтаксис:
document.write(expression1 [,expression2], ... [,expressionN])
с expression1 по expressionN любое JavaScript выражение или свойство существующего объекта.
Метод write отображает любое количество выражений в окне документа. Вы можете определить любое JavaScript
выражение методом write, включая числовое, строковое или логическое.
Метод write является таким же как метод writeln, но метод write не добавляет символа перевода на новую строку
в конец выходной информации.
Метод write используется внутри тага <SCRIPT> или внутри события. События выполняются после закрытия
документа, поэтому метод write по умолчанию откроет новый документ с mimeType text/html, если вы не
укажете метод document.open() в событии.
writeln
Пишет одно или более HTML выражений в документ в указанном окне, добавляя символ перевода на новую
строку в конец выходной информации.
Синтаксис:
document.writeln(expression1 [,expression2], ... [,expressionN])
с expression1 по expressionN любое JavaScript выражение или свойство существующего объекта.
Метод writeln отображает любое количество выражений в окне документа. Вы можете определить любое
JavaScript выражение методом write, включая числовое, строковое или логическое.
Метод writeln является таким же как метод write, но метод writeln добавляет символ перехода на новую строку в
конец выходной информации. HTML игнорирует символ новой строки, за исключением определенных тагов,
таких как <PRE>.
Метод writeln используется внутри любого тага <SCRIPT> или внутри события. События выполняются после
закрытия документа, поэтому метод writeln по умолчанию откроет новый документ с mimeType text/html, если
вы не укажете метод document.open() в событии.
50. JavaScript. Лексическая структура. Переменные. Выражения и операторы.
Лексическая структура
Лексическая структура языка программирования – это набор элементарных правил, определяющих, как пишутся
программы на этом языке. Это низкоуровневый синтаксис языка; он задает вид имен переменных, символы,
используемые для комментариев, и то, как одна инструкция отделяется от другой. Эта короткая глава
документирует лексическую структуру javascript.
2.1. Набор символов
При написании программ на javascript используется набор символов Unicode. В отличие от 7разрядной
кодировки ASCII, подходящей только для английскогого языка, и 8разрядной кодировки ISO Latin1, подходящей
только для английского и основных западноевропейских языков, 16разрядная кодировка Unicode обеспечивает
представление практически любого письменного языка. Эта возможность важна для интернационализации и
особенно для программистов, не говорящих на английском языке. Американские и другие англоговорящие
программисты обычно пишут программы с помощью текстового редактора, поддерживающего только
кодировки ASCII или Latin1, и потому у них нет простого доступа к полному набору символов Unicode. Однако
никаких трудностей это не порождает, поскольку кодировки ASCII и Latin1 представляют собой подмножества
Unicode, и любая javascriptпрограмма, написанная с помощью этих наборов символов, абсолютно корректна.
Программисты, привыкшие рассматривать символы как 8разрядные значения, могут быть сбиты с толку, узнав,
что javascript представляет каждый символ с помощью двух байтов, однако на самом деле для программиста это
обстоятельство остается незаметным и может просто игнорироваться. Стандарт ECMAScript v3 допускает
наличие Unicodeсимволов в любом месте javascriptпрограммы. Однако версии 1 и 2 стандарта допускают
использование Unicodeсимволов только в комментариях и строковых литералах, заключенных в кавычки, все
остальные составляющие программы ограничены набором ASCIIсимволов.1 Версии javascript, предшествующие
стандарту ECMAScript, обычно вообще не поддерживают Unicode.
2.2. Чувствительность к регистру
javascript – это язык, чувствительный к регистру. Это значит, что ключевые слова, переменные, имена функций и
любые другие идентификаторы языка должны всегда содержать одинаковые наборы прописных и строчных
букв. Например, ключевое слово while должно набираться как «while», а не «While» или «WHILE». Аналогично
online, Online, OnLine и ONLINE – это имена четырех разных переменных. Заметим, однако, что язык HTML, в
отличие от javascript, не чувствителен к регистру. По причине близкой связи HTML и клиентского javascript это
различие может привести к путанице. Многие javascriptобъекты и их свойства имеют теже имена, что и теги и
атрибуты языка HTML, которые они обозначают. Если в HTML эти теги и атрибуты могут набираться в любом
регистре, то в javascript они обычно должны набираться строчными буквами. Например, атрибут обработчика
события onclick чаще всего задается в HTML как onclick, однако в javascriptкоде (или в XHTMLдокументе) он
должен быть обозначен как onclick.
2.3. Символыразделители и переводы строк
javascript игнорирует пробелы, табуляции и переводы строк, присутствующие между лексемами в программе.
Поэтому символы пробела, табуляции и перевода строки могут без ограничений использоваться в исходных
текстах программ для форматирования и придания им удобочитаемого внешнего вида. Однако имеется
небольшое ограничение, которое касается символов перевода строк и о котором рассказывается в следующем
разделе.
2.4. Необязательные точки с запятой
Простые javascriptинструкции обычно завершаются символами точки с запятой (;), как в C, C++ и Java. Точка с
запятой служит для отделения инструкций друг от друга. Однако в javascript точку с запятой можно не ставить,
если каждая инструкция помещается в отдельной строке. Например, следующий фрагмент может быть записан
без точек с запятой:
a = 3;
b = 4;
Для русскоязычных программистов это означает, что а) русскоязычный текст может появляться только в
комментариях и в строковых литералах, предназначенных непосредственно для вывода; б) такие тексты
представляются в кодировке UTF16 (Unicode – это единая система связывания символов любого языка с
однозначным численным кодом, а для кодирования этого численного кода могут применяться различные
кодировки, например UTF8, UTF16 и др.); в) все остальные лексемы программы – операторы, имена переменных
и т. д. – должны состоять из латинских литер; это достаточно обычная и привычная практика и для других
языков программирования.
Однако если обе инструкции расположены в одной строке, то первая точка с запятой должна присутствовать
обязательно:
a = 3; b = 4;
Пропуск точек с запятой нельзя признать правильной практикой программирования, и поэтому желательно
выработать привычку их использовать. Теоретически javascript допускает переводы строк между любыми двумя
лексемами, но привычка синтаксического анализатора javascript автоматически вставлять точки с запятой за
программиста приводит к некоторым исключениям из этого правила. Если в результате разделения строки
программного кода та ее часть, которая предшествует символу перевода, оказывается законченной
инструкцией, синтаксический анализатор javascript может решить, что точка с запятой пропущена случайно, и
вставить ее, изменив смысл программы. К подобным требующим внимания ситуациям относятся, среди прочих,
инструкции return, break и continue. Рассмотрим, например, следующий фрагмент:
return
true;
Синтаксический анализатор javascript предполагает, что программист имеет в виду следующее:
return;
true;
Хотя на самом деле программист, видимо, хотел написать:
return true;
Вот случай, когда следует быть внимательным, – данный код не вызовет синтаксической ошибки, но приведет к
неочевидному сбою. Похожая неприятность возникает, если написать:
break
outerloop;
javascript вставляет точку с запятой после ключевого слова break, что вызывает синтаксическую ошибку при
попытке интерпретировать следующую строку. По аналогичным причинам постфиксные операторы ++
и должны располагаться в той же строке, что и выражения, к которым они относятся.
2.5. Комментарии
javascript, как и Java, поддерживает комментарии и в стиле C++, и в стиле C. Любой текст, присутствующий между
символами // и концом строки, рассматривается как комментарий и игнорируется javascript. Любой текст между
символами /* и */ также рассматривается как комментарий. Эти комментарии в стиле C могут состоять из
нескольких строк и не могут быть вложенными. Следующие строки кода представляют собой корректные
javascriptкомментарии:
// Это однострочный комментарий.
/* Это тоже комментарий */ // а это другой комментарий.
/*
* Это еще один комментарий.
* Он располагается в нескольких строках.
*/
2.6. Литералы
Литерал – это значение, указанное непосредственно в тексте программы. Ниже приведены примеры литералов:
12
// Число двенадцать
1.2
// Число одна целая две десятых
"hello world" // Строка текста
'Hi'
// Другая строка
true
// Логическое значение
false
// Другое логическое значение
/javascript/gi // Регулярное выражение (для поиска по шаблону)
null
// Отсутствие объекта
В ECMAScript v3 также поддерживаются выражения, которые могут служить в качестве массивовлитералов и
объектовлитералов. Например:
{ x:1, y:2 }
[1,2,3,4,5]
// Инициализатор объекта
// Инициализатор массива
Литералы – важная часть любого языка программирования, поскольку написать программу без них невозможно.
2.7. Идентификаторы
Идентификатор – это просто имя. В javascript идентификаторы выступают в качестве названий переменных и
функций, а также меток некоторых циклов. Правила формирования допустимых идентификаторов совпадают с
правилами Java и многих других языков программирования. Первым символом должна быть буква, символ
подчеркивания (_) или знак доллара ($).1 Последующие символы могут быть любой буквой, цифрой, символом
подчеркивания или знаком доллара. (Цифра не может быть первым символом, т. к. тогда интерпретатору
труднее отличать идентификаторы от чисел.) Примеры допустимых идентификаторов:
i
my_variable_name
v13
_dummy
$str
В ECMAScript v3 идентификаторы могут содержать буквы и цифры из полного набора символов Unicode. До этой
версии стандарта javascriptидентификаторы
были ограничены набором ASCII. ECMAScript v3 также допускает наличие в идентификаторах
escapeпоследовательностей Unicode – символов \u, за которыми расположены 4 шестнадцатеричные цифры,
обозначающие 16разрядный код символа. Например, идентификатор π можно записать как \u03c0. Этот
синтаксис неудобен, но обеспечивает возможность транслитерации javascriptпрограмм с Unicodeсимволами в
форму, допускающую работу с ними в текстовых редакторах и других средствах, не поддерживающих полный
набор Unicode. Наконец, идентификаторы не могут совпадать ни с одним из ключевых слов, предназначенных в
javascript для других целей. В следующем разделе перечислены ключевые слова, зарезервированные для
специальных нужд javascript.
2.8. Зарезервированные слова
В javascript имеется несколько зарезервированных слов. Они не могут быть идентификаторами (именами
переменных, функций и меток циклов) в javascriptпрограммах. В табл. 2.1 перечислены ключевые слова,
стандартизованные в ECMAScript v3. Для интерпретатора javascript они имеют специальное значение, т. к.
являются частью синтаксиса языка.
Таблица 2.1. Зарезервированные ключевые слова javascript
break
do
if
switch
typeof
case
else
in
this
var
catch
false
instanceof
throw
void
continue
finally
new
true
while
default
for
null
try
with
delete
function
return
В табл. 2.2 перечислены другие ключевые слова. В настоящее время они в JavaScript не используются, но
зарезервированы ECMAScript v3 в качестве возможных будущих расширений языка.
Таблица 2.2. Слова, зарезервированные для расширений ECMA
abstract
double
goto
native
static
Boolean
enum
implements
package
super
byte
export
import
private
synchronized
char
extends
int
protected
throws
class
final
interface
public
transient
const
float
long
short
volatile
debugger
Помимо нескольких только что перечисленных формально зарезервированных слов текущие проекты стандарта
ECMAScript v4 рассматривают применение ключевых слов as, is, namespace и use. Хотя текущие интерпретаторы
javascript не запрещают использование этих четырех слов в качестве идентификаторов, однако все равно
следует этого избегать.
Кроме того, следует избегать использования идентификаторов глобальных переменных и функций,
предопределенных в языке javascript. Если попытаться создать переменную или функцию с таким
идентификатором, то это будет приводить либо к ошибке (если свойство определено как доступное только для
чтения), либо к переопределению глобальной переменной или функции, чего точно не стоит делать, если вы не
стремитесь к этому преднамеренно. В табл. 2.3 перечислены имена глобальных переменных и функций,
определяемых стандартом ECMAScript v 3. Конкретные реализации могут содержать свои предопределенные
элементы с глобальной областью видимости, кроме того, каждая конкретная платформа javascript (клиентская,
серверная и прочие) может еще больше расширять этот список.
Таблица 2.3. Другие идентификаторы, которых стоит избегать
arguments
encodeURI
Infinity
Object
String
Array
Error
isFinite
parseFloat
SyntaxError
Boolean
escape
isNaN
parseInt
TypeError
Date
eval
Math
RangeError
undefined
decodeURI
EvalError
NaN
ReferenceError
unescape
decodeURIcomponent
Function
Number
RegExp
RegExp
Переменные
Переменная – это область памяти компьютера, предназначенная для хранения данных. Переменные в JavaScript
используют для хранения различных данных, например дату, какое-то числовое значение и др.
Для использования переменной ее для начала нужно объявить, присвоить ей какое-либо значение и только
после этого ее можно будет использовать в сценарии.
Объявление
Для объявления переменной в JavaScript используется ключевое слово var, за которым следует имя новой
переменной:
var peremen_1
где peremen_1 – имя переменной.
Можно так же одной строкой объявлять несколько переменных, имена которых разделяют запятыми:
var peremen_1, peremen_2
Присвоение переменным значений
После объявления переменной ей нужно присвоить значение. Присвоить значение переменной можно в любом
месте сценария или же сразу после объявления. Например:
var peremen_1 = 10
Следует заметить что, в сценарии значения переменных неоднократно можно менять.
Использование переменных
После объявления и присвоения значений переменные можно использовать в сценарии. Вот простой пример:
<script language="JavaScript" type="text/javascript">
<!-var param_1 = 5
var param_2 = 10
var summa = param_1 + param_2
alert(summa)
//-->
</script>
В этом примере сначала мы объявили две переменные и сразу присвоили им значения. Потом мы объявили
переменную summa, а в качестве значения мы присвоили сумму первых двух переменных. Потом с помощью
функции alert() мы отображаем на экране значение переменной summa.
Правила присвоения имен переменным:





имя переменной может содержать только буквы, цифры или знак нижнего подчеркивания,
использование других символов запрещается
первым символом должна быть буква или знак нижнего подчеркивания
имена переменных чувствительны к регистру символов
не допускается использование в качестве имен переменных зарезервированные слова JavaScript
количество символов в именах переменных не ограничивается
Выражения
Выражение - любой имеющий силу набор литералов, переменных, операторов, и выражений, которые вычисляю
простое значение. Значение может быть число, строка, или логическое значение. Существует два типа
выражений: которые присваивают значение переменной, и которые вычисляют выражение без присваивания
его переменной. Например, выражение
x=7
Является выражением, которое приписывает x значение 7. Это выражение вычисляет 7. Такие выражения
используют операторы присвоения. С другой стороны, выражение
3+4
Просто вычисляет 7; оно не выполняет присвоения. Операторы используемые в таких выражениях, упоминаются
просто как операторы.
JavaScript имеет следующие выражения:



Арифметические: например, вычисляет число
Строковые: вычисляют строку символов, например "Джон" или "234"
Логические: вычисляют true(истина) или false(ложь)
Язык JavaScript включает в себя значение null для переменных, которым не присвоено никакое значение. Любая
попытка использовать переменную, имеющую значение null, в вычисляемом выражении приводит к ошибке, за
исключением случая присваивания значения null переменной, например timerID = null.
Операторы
JavaScript имеет арифметические, строковые и логические операторы. Имеет, и бинарные и унарные операторы.
Бинарный оператор требует двух операндов, унарный перед оператором и одним после оператора:
Operand1 operator operand2
Например, 3 + 4 or x * y
Унарный оператор требует одного операнда, до или после оператора:
operator operand
Или
operand operator
Например x ++ или ++ x.
Арифметические Операторы
Арифметические операторы принимают численные значения (литералы или переменные) как их операнды и
возвращают числовое значение.
Стандартные Арифметические Операторы
Арифметические операторы - сложение (+), вычитание (-), умножение (*), и деление (/). Эти операторы работают
стандартным способом.
Модуль (%)
Оператор модуля используется следующим образом:
Var1 % var2
Оператор модуля возвращает первый операнд по модулю второго операнд, то есть var1 по модулю var2, где var1
и var2 - переменные. Функция по модулю - это остаточный член от деления var1 на var2. Например, 12 % 5
возвращается 2.
Инкремент (++)
Оператор инкремент используется следующим образом:
var++ или ++var
Этот оператор увеличивает его операнд и возвращает значение. Если используемый постфикс, с оператором
после операнда (например x ++), то возвращает значение перед увеличением. Если используемый префикс с
оператором перед операндом (например, ++ x), то возвращает значение после увеличения.
Например, если x - 3, то утверждение
y = x ++
Увеличивает x до 4 и присваивает y равное 3.
Если x - 3, то утверждение
y = ++ x
Увеличивает x до 4 и присваивает y равное 4.
Декремент (--)
Оператор декремента используется следующим образом:
var-- или --var
Этот оператор уменьшает его операнд и возвращает значение. Если используемый постфикс (например x--) то
возвращает значение перед уменьшением. Если используемый префикс (например, --x), то возвращает значение
после уменьшения.
Например, если x - 3, то утверждение
y = x -Уменьшает x до 2 и присваивает y равное 3.
Если x - 3, то утверждение
y = -- x
Уменьшает x до 2 и присваивает y равное 2.
Унарное вычитание (-)
Унарный оператор вычитания должен предшествовать его операнду. Например,
x = -x
Вычитает значение x; например, если бы x был равен 3, то стал бы равным -3.
Побитовые Операторы
Побитовые операторы воздействуют на операнды как набор битов (0 и 1). Например, десятичное число 9 имеет
двоичное представление 1001. Побитовые операторы выполняют действия на таких двоичных представлениях,
но они возвращают стандартное JavaScript численное значение.
Побитовые Логические операторы
Побитовые логические операторы работают следующим образом:



Операнды преобразованы в 32-битные целые числа, и выражения строк битов (0 и 1).
Каждый бит в первом операнде соединен с соответствующим битом во втором операнде: первый бит к
первому биту, второй бит ко второму биту, и так далее.
Оператор применяется к каждой паре битов, и результат создан побитовым.
Побитовые операторы:

Побитовый И & возвращает 1, если оба операнда 1.


Побитовый ИЛИ | возвращает 1, если любой операнд 1.
Исключающее побитовое ИЛИ ^ возвращает 1, если есть 1 но не оба операнда 1.
Например, бинарное представление 9 - 1001, и бинарное представление 15 - 1111. Так, когда побитовые
операторы применяются к этим значениям, то результаты выглядят следующим образом:



15 & 9 возвращает 9 (1111 & 1001 = 1001)
15 | 9 возвращает 15 (1111 | 1001 = 1111)
15 ^ 9 возвращает 6 (1111 ^ 1001 = 0110)
Побитовые Операторы сдвига
Побитовые операторы сдвига:



Сдвит влево (<<)
Сдвиг вправо (>>)
Сдвиг вправо с заполнением нулями (>>>)
Операторы сдвига присваивает два операнда: первый - количество на которое будет сдвинуто, и второй
определяет число битовых положений, которыми первый операнд должен быть сдвинут. Направление действия
сдвига управляется использующим оператором.
Операторы сдвига преобразуют операнды к 32-битное целое число, и возвращают результат того же самого типа
что и левый оператор.
Сдвит влево (<<)
Сдвиг влево перемещает все биты влево на количество позиций, указанных в правой части выражения, заполняя
освободившиеся позиции нулямию
Например, 9<<2 возвращает 36, потому что 1001 сдвигается на 2 бита влево и становится равным 100100, что
равно в дисятеричной системе 36.
Сдвиг вправо (>>)
Cдвиг вправо заполняет освободившиеся слева позиции значением самого левого бита исходного значения.
Например, 9 >> 2 возвращает 2, потому что 1001 сдвигается на два бита вправо и становится 10, что равно в
дисятеричной системе 2. Аналогично, -9 >> 2 возвращает -3, потому что знак сохраняется.
Сдвиг вправо с заполнением нулями (>>>)
Сдвиг вправо с заполнением нулями работает аналогично сдвигу влево, только в противоположном
направлении.
Например, 19>>>2 возвращает 4, потому что 10011 сдвигается на два бита вправо и становятся 100, что равно в
дисятеричной системе 4. Для postive чисел, ноль - заполняет правый сдвиг, и распространяющийся знак
сдвигается вправо выдает тот же самый результат.
Логические операторы
Логические операторы принимают логические (Булевы) значения как операнды. Они возвращают логическое
значение. Логические значения true(истина) и false(ложь).
И (&&)
Использование: expr1 && Expr2
Логический "и" возвращает оператор true, если оба логических выражения и expr1 и expr2 true. Иначе,
возвращается false.
Или (||)
Использование: expr1 || expr2
Логический "или" возвращает оператор true, если хотя бы одно из логических выражений или expr1 или expr2
true. Если и expr1 и expr2 false, то это возвращается false.
Нет (!)
Использование:! Expr
Логический оператор "нет" - унарный оператор, который отрицает выражение операнда expr. То есть если expr
true, то возвращает false, и если expr false, то возвращает true.
Вычисление...
Так как логические выражения вычисляются слева направо, то они проверены для возможного вычисления
"короткой цепи", используя следующее правило:


false && Какая - нибудь - короткая цепь, оцененная как false.
true || Какая - нибудь - короткая цепь, оцененная как true.
Логическое правило гарантирует, что эти вычисления будут всегда правильными.
Операторы Сравнения (==, >, >, =<, <=,!=)
Оператор сравнения сравнивает его операнды и возвращает логическое значение, основанное на том, является
ли сравнение true или false. Операнды могут быть численными или строковыми значениями. Когда используется
на строковых значениях, то сравнения основывается на стандартном лексикографическом порядке.
Операторы:






Равно (==): возвращает true, если операнды равны.
Не равно (!=): возвращает true, если операнды не равны.
Больше чем (>): возвращает true, если левый операнд больше чем правый операнд. Пример: x>y
возвращает true, если x больше чем y.
Больше или равно чем (>=): возвращает true, если левый операнд больше чем или равен правому
операнду. Пример: x>=y возвращает true, если x больше или равен чем y.
Меньше чем (<): возвращает true, если левый операнд - меньше чем правый операнд. Пример: x
Меньше или равно чем (< =): возвращает true, если левый операнд - меньше или равен правому
операнду. Пример: x<= y возвращает true, если x - меньше или равен y.
Операторы Строки
В дополнение к операторам сравнения, которые могут использоваться на значениях строк, оператор
конкатенации (+), суммирует две строки вместе, возвращая другую строку, которая является соединением двух
строк операнда. Например,
"my " + "string"
Возвращает строку
"my string"
Оператор происвоения += может также использоваться, чтобы конкатенировать строки. Например, если
переменнай mystring - строка, которая имеет значение "alpha", затем выражение
Mystring + = "bet"
Вычисляет как "alphabet" и приписывает это значение mystring.
Старшинство Оператора
Старшинством операций называется порядок, в котором выполняются операции в сложных выражениях.
Операции на одном уровне имеют равное старшинство. Вычисления производятся слева направо для всех
бинарных операций, начиная с операций, перечисленных в верхней части списка, и заканчивая операциями в
нижней части.
Старшинство операторов, от самого низкого до самого высокого будут следующие:
Запятая,
Присвоение =+=-=*=/=%=<<=>>=>>>=&=^=|=
Выбор по условию ? :
Логическое ИЛИ ||
Логическое И &&
Побитовы ИЛИ |
Побитовый исключающее ^
Побитовое И &
Неравенство !=
Равенство/Неравенство == !=
Сравнение <<=>> =
Побитовый сдвиг << >> >>>
Сложение/вычитание + Умножите/деление * / %
Отрицание/дополнение/унарный минус/инкремент/декремент ! ~ - ++ -Вызов, передача параметров () [].
51. JavaScript. Объекты и массивы. Классы, конструкторы и прототипы.
Объекты и массивы
данных
Массивы данных используются во многих языках программирования. Идея состоит в том, чтобы собрать
несколько однотипных или взаимосвязанных значений под одним именем, вместо создания множества
непременных. Объекты представляют собой Солее сложно организованные массивы данных, поскольку они
кроме значений разных типов содержат также методы обработки этих значений.
Методами называются функции, являющиеся частью объекта. Вызов метода происходит следующим образом:
имя_объекта.метод(). Как видите, с методами вам уже приходилось иметь дело, например с методом write,
который принадлежит объекту document.
Но в JavaScript все переменные, даже самые простые, являются объектами со своими методами (в частности
метод toString, с которым вы познакомились выше). Массивы данных JavaScript также являются одним из типов
встроенных объектов. JavaScript содержит обширную коллекцию встроенных объектов; для их описания и
описания всех их методов потребуется отдельная книга. В этой книге вы познакомитесь с общими принципами
использования некоторых встроенных объектов: Math и String (далее в этой главе, в разделе «Выражения и
операции»), а также с объектом Date (в главе 6). Перечисленные объекты содержат коллекции полезных
методов, которые можно использовать для вычислений и обработки данных.
Объекты массивов и словарей, которые мы рассмотрим в этом разделе, кроме предоставления полезных
методов, позволяют создавать коллекции данных.
Общим для объектов JavaScript является использование ключевого слова new при создании нового экземпляра
объекта. Команда typeof, вызванная для экземпляра объекта, возвращает значение object.
Массивы
Массивы содержат коллекции взаимосвязанных данных. В JavaScript, в отличие от многих других языков
программирования, один массив может содержать данные разных типов. Можно создать массив значений, а
также массивы объектов других типов (в том числе и массивов — многомерные массивы), массивы методов,
гиперссылок, файлов мультимедиа и т.д. В этом разделе мы рассмотрим общие принципы создания и
использования массивов.
Классы в Javascript: вызов методов родительского класса
Javascript — очень динамический язык, в нём заложена возможность менять язык под себя и создавать удобные
инструменты для дальнейшей работы. «Реализация классического наследования» — как раз один из таких
инструментов. В данный момент я не представляю себе, как я программировал бы на JS без «классов».
Для меня «Классы» — это, скорее, подход к проектированию и реализации поставленной задачи. В нашем новом
проекте такой подход используется по полной программе (и, я думаю, что он оправдывает себя на все 100%).
Эта статья написана в качестве приложения к другой моей статье «Компоненты в Unobtrusive Javascript» (хотя,
в принципе, может выступать в роли самостоятельного текста).
На данный момент существует море реализаций «Классов в JS».
Я бы выделил два их них: это реализации в Prototype.js и в Base2. В обоих способах нельзя вызвать «другой»
метод родительского класса (т.е. нельзя вызвать parent::A из функции this.B) — я считаю это существенным
недостатком: бывает так, что нельзя выполнить задачу не изменив сам подход.
Для реализации такой конструкции, возможно, пришлось чуть-чуть пожертвовать производительностью: не все
методы Класса находятся в прототипе функции-инициализатора. Но я знаю, что плюсов от использования
подхода гораздо больше.
Я условно разделил методы класса на два вида:
1.
2.
3.
Обычные методы. Они хранятся в прототипе функции-конструкторе
«Виртуальные» методы. Такие методы, например, __constructor и __destructor, требуют возможности
вызова методов родительского класса. Хранятся они не в прототипе. А в thisObj попадают в функцииинициализаторе объекта.
Персональный журнал для заметок Владимира Кузнецова
4.
Конструкторы в JavaScript
5.
6.
7.
16-03-2009
pattern
В JavaScript нет понятия класс, но есть конструкторы, с помощью которых можно реализовать функцию
класса, такую, например, как контейнер переменных и методов. Объекты класса в JavaScript могут иметь
скрытые переменные и методы, а так же поддерживают не только классическое наследование, но и
другие модели повторного использования кода.
Конструктор представляет собой обычную функцию.
var Module = function () {
};
или
function Module() {
}
Эти две записи тождественны. Я все-таки предпочитаю использовать первый вариант, так как он
позволяет объявить функцию с достаточно сложным названием. Например, App.Package1.Module2.
Для создания нового объекта конструктор вызывается через оператор new.
var instance = new Module();
Оператор new меняет значение переменной this внутри конструктора. В отличие от его обычного
значения, this будет новым объектом. Тело конструктора обычно инициализирует поля объекта. По
завершению конструктор вернет этот новый объект, если точка выхода не будет явно переопределена
через оператор return.
Некоторый смущающий момент заключается в том, что если конструктор будет вызван без оператора
new, то this уже не будет новым объектом, а будет ссылаться на window!
Чтобы обезопасить себя от различных ошибок, в конструкторе можно принудительно создавать новый
объект и возвращать его.
var Module = function () {
var me = {};
return me;
};
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Download