![]() |
|||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||
Глава 1. Общие сведенияДля чего, собственно, нужен JavaScript. JavaScript был разработан совместно компаниями Sun Microsystems и Netscape. За синтаксическую основу нового языка был взят язык Java, в свое время разработанный компанией Sun Microsystems. В последнее время популярность JS очень возросла в результате выхода в свет новейших браузеров поддерживающих данный язык. Некоторые используют Java Апплеты. Да, безусловно, есть очень красивые вещи. Теперь посмотрите на те сайты, которые предлагают апплеты. Вы можете заметить, что авторы таких страниц их не используют. Что касается меня, вы не найдете здесь апплетов. Даже если я случайно попадаю на страницу разрисованную ими, незамедлительно ухожу с нее. Дело в том, что встречаются апплеты не корректно написанные. Не буду конкретно называть сайты, но встречаются такие: после выхода со страницы остаются измененные системные шрифты, просто подвисает компьютер - вероятно, использован динамический сегмент данных, но не корректно работает механизм высвобождение памяти, и другие баги. Апплеты грузятся в память и остаются там до перезагрузки компьютера. А если остались глобальные переменные, измененные свойства, методы стандартных объектов? Я бы на месте разработчиков браузеров встроил предупреждение "Осторожно апплеты!" Это было отступление к тому, чтобы вы не путали совершенно разные языки: Java и JavaScript. Определимся, что из себя представляет язык JavaScript. JS - интерпретатор с элементами объектно-ориентированной модели. Хотя он и лишен возможностей создания собственных классов, но он оперирует стандартными объектами. Так как обработчик находится на компьютере пользователя, JS, будучи интерпретатором, использует методы и свойства объектов обозревателя на пользовательском компьютере. Тем, кто привык к структурному программированию, будет несколько сложно привыкнуть к объектной модели. JS имеет возможность написания пользовательских функций, имеет ряд операторов, но работает с объектами, их методами, свойствами и событиями. Также имеется иерархия наследования свойств объектов. Сложность составляет и то, что JS встраивается в HTML документ и взаимодействует с ним. В описании к языку JS, я не буду приводить синтаксиса HTML, это можно найти и в другом месте. Итак, начнем. Скрипты могут находиться в любом месте HTML-документа. Однако теги HTML нельзя помещать внутри JS-программы. JS программа помещается между тегами <script> ... </script>, исключение составляют обработчики событий. Встретив тег <script>, браузер построчно анализирует содержимое документа до тех пор, пока не будет достигнут тег </script>. После этого производится проверка скрипта на наличие ошибок и компилция JS программы в формат, пригодный для выполнения на компьютере пользователя. Главная часть JS программы может быть помещена в контейнер <head>... </head>, поскольку он считывается при загрузке HTML - документа одним из первых. Теоретически скрипт можно помещать в любом месте HTML - документа, хотя лучше это делать перед контейнером <body>... </body>, т.е. в заголовке документа. Окончательный выбор за вами. Синтаксис тега: <script language="JavaScript"> [текст программы] </script> Следует иметь в виду, что слово "JavaScript" записывается с соблюдением регистра символов. Выражения языка JavaScript. Выражение - это сочетание переменных, операторов и методов, возвращающее определенное значение. Условные выражения. Условные выражения используются для сравнения одних переменных с другими, а также с константами или значениями, возвращаемыми различными выражениями. В языке JS есть оператор сравнения ?, имеющий синтаксис: (условное выражение) ? операторы_1 : операторы_2 Если условное выражение истинно - выполнются операторы_1, в противном случае операторы_2. Можно также присваивать значения переменным. Например, оператор: type_time = (hour >= 12) ? "PM" : "AM" присваивает строковое значение "PM" переменной type_time, если значение переменной hour больше или равно 12; в противном случае присваивается "AM". Оператор ? в действительности является сокращенным вариантом оператора if . . . else. Предыдущий пример может быть записан так: if
(hour >=
12) Операции присваивания В языке JS имеется несколько вариантов присваивания:
Так, например, можно записать: Операции сравнения:
От выражений, имеющих знак "<" следует отказываться по возможности, так, как данный символ может иметь и другое значение в HTML-документах. Во избежание подобных казусов, когда подобное выражение может послужить случайным открытием тега HTML: if mvar <h . . . . . .bgcolor- может
интерпретироваться как начало заголовка HTML. Теги HTML в JS
программах недопустимы. bvar1 = true; можно записать выражение: bvar1 ||
bvar2 Можно записывать и более сложные выражения: if ((bvar1 && bvar2)
|| bvar3)
{ Базовые операторы зыка JavaScript Программы на языке JS обычно состоят из программных блоков или единичных операторов. Программные блоки - это группы операторов, которые заключаются в фигурные скобки ({ и }). Каждый оператор, если он занимает единственную строку, имеет разграничивающую точку с запятой (;), обозначающую окончание оператора. Каждый оператор имеет собственный синтаксис. Синтаксис оператора - это набор правил, определяющих обязательные и допустимые для использования в данном операторе значения. Значения, присутствие которых является необязательным, при описании синтаксиса принято заключать в квадратные скобки, например [value]. При несоблюдении правил синтаксиса произойдет ошибка компиляции. Операторы комментариев и примечаний Синтаксис: // Текст
комментариев Соответственно первый комментарий может иметь только одну строку, второй несколько. Комментарии нужны исключительно только для пояснений или для временного исключения некоторых фрагментов программы во время отладки. Операторы циклов В языке JS имеются операторы для выполнения итераций т.е. повторения ряда операторов. Цикл For Синтаксис: for ([инициализация
начального значения;] [условие;] [механизм обновления
счетчика, шаг]) { Оператор For
позволяет многократно выполнять операторы в JS-программе.
Оператор For может быть использован для выполнения одного или
нескольких операторов. Фигурные скобки можно опустить, если
тело цикла содержит только один оператор. Все параметры
оператора For являются необязательными и используются для
управления процессом выполнения цикла. При применении всех
параметров каждую часть нужно отделять точкой с запятой
(;). <html> В приведенном примере программа выводит в документ ряд горизонтальных линеек - HTML тегов (<HR>), - размер которых увеличивается с шагом 5 (size += 5) от 5% до 100% ширины рабочей области окна браузера. Всего образуется 20 итераций. Переменная String1 хранит строку, содержащую HTML-тег. В цикле к этой строке добавляется новое значение ширины, записанное в переменной size. Когда значение этой переменной достигает 100, цикл завершается. Фигурные скобки в данном примере не нужны, поскольку тело цикла содержит только один оператор. (Здесь и далее оговоримся, что исполняемые выражения встречающиеся внутри операторов влияющих на порядок выполнения программы, например циклов: вызовы функций, методы, обработчики событий и т.п. условимся называть операторами). HTML-документ содержит кнопку, которая активизирует функцию testloop(). Цикл while Синтаксис: При помощи оператора while можно выполнять один или несколько операторов до тех пор, пока не будет удовлетворено условие. Если в теле цикла выполняется несколько операторов, их необходимо заключить в фигурные скобки. Попробуем привести пример программы, которая использует цикл while. Например нужно вывести таблицу умножения: <html> Теги HTML в тексте программы на JS
недопустимы. Таблица
создается в функции ftable(). Цикл while выполняется 10
раз. Таблица выводится при помощи стандартной функции языка JS
writeln(). Метод prompt() обеспечивает ввод данных с
клавиатуры. В данном примере вводится число для вычисления
таблицы умножения от 1 до
10. Выход из цикла - оператор break Синтаксис: Оператор break используется для выхода из какого-либо цикла, например из цикла for или while. Выполнение цикла прекращается в той точке, в которой размещен этот оператор, а управление передается следующему оператору, находящемуся непосредственно после цикла. Рассмотрим следующую программу: <html> } В этом примере переменной index присваивается значение 1, а цикл while должен выполняться до тех пор, пока значение переменной index меньше либо равно 10-ти (index <= 10). Однако оператор if проверяет выполнение условия index = = 6. Если это условие выполняется, то цикл while завершается с помощью оператора break. В результате цикл while будет всегда завершаться после первых шести итераций, а значение переменной index никогда не достигнет 10-ти. Продолжение цикла - оператор continue Синтаксис: Оператор continue используется для прерывания выполнения блока операторов, которые составляют тело цикла и продолжения цикла в следующей итерации. В отличие от оператора break, оператор continue не останавливает выполнение цикла, а наоборот запускает новую итерацию. Если в цикле while идет просто запуск новой итерации, то в циклах for запускает с обновленным шагом. Определение функции Синтаксис: Функция - это блок из
одного или нескольких операторов. Блок выполняет определенные
действия, а затем, возможно, возвращает значение. В языке JS
процедуры - подпрограммы не возвращающие значений, не
различаются. Все подпрограммы описываются функциями, а если в
функцию или из нее не передаются параметры - то после имени
функции ставятся круглые скобки без параметров. Если функция
имеет несколько аргументов, они отделяются запятой. Нужно
также помнить, что в языке JS внутри одной функции не может
существовать другой функции. Фигурные скобки определяют тело
функции. Функция не может быть выполнена до тех пор, пока не
будет явного обращения к ней. Возврат значения функциями - оператор return Синтаксис: Оператор return завершает выполнение функции и
возвращает значение заданного выражения. Скобки в этом
операторе можно не использовать. Оператор return может
отсутствовать в функции, если функция не возвращает
значение. function
retarray() { Обращение к аргументам функции при помощи массива argunents[] (не поддерживается в старых версиях браузеров) В этом массиве хранится список аргументов, передаваемых текущей функции. Так, первый элемент массива argunents[0] содержит первый аргуменнт функции, argunents[1] - второй и т.д. Общее количество аргументов хранится в свойстве arguments.length. Небольшой пример, который выводит на экран все аргументы, передаваемые функции: function showargs() {
Приведем пример,
включающий функцию showargs(). <html> Условные операторы - if . . . else Синтаксис: Оператор if . . . else - это условный оператор, который обеспечивает выполнение одного или нескольких операторов, в зависимости от того, удовлетворяются ли условия. Часть condition оператора if является выражением, при истинности которого выполняются операторы языка в первом программном блоке. Программный блок должен быть заключен в фигурные скобки, однако если используется только один оператор, можно скобки не ставить. Необязательная часть else обеспечивает выполнение операторов второго блока, в случае, если условие condition оператора if является ложным. Операторы if можно вкладывать друг в друга. Приведем пример. Ну например будем менять цвет фона в зависимости от системного времени: первая половина часа пусть будет синим, вторая - черным: <html> Оператор ? Синтаксис: <html> Вложенные операторы ? Для проверки нескольких условий операторы ? можо вкладывать друг в друга. В качестве примера рассмотрим программу, в которой проверять будем больше значений. Например составим программу, которая будет проверять значение секунд, если в интервале от 0 до 30, - цвет фона делаем голубым. Когда значение больше 30-ти, программа проверяет, в каком интервале находится значение секунд - от 31 до 50 или нет. Если результат будет истинным, цвет фона изменится на черный, в противном случае фон становится бежевым: <html> Переменные создаются либо при помощи оператора var, либо при непосредственном присвоении значений с помощью оператора присваивания (=). Оператор var Синтаксис:
Оператор var создает новую переменную с именем variablename. Область действия этой переменной будет либо локальной, либо глобальной в зависимости от того, где создана переменная. Фактически при создании переменной оператор var можно опустить, однако в этом случае в правой части оператора присваивания должно быть указанно значение. Переменная, созданная внутри функции будет недоступна за пределами функции, то есть переменная будет локальной. Обращение к текущему объекту - оператор this Синтаксис: Оператор this является
не столько оператором, сколько внутренним свойством языка
JavaScript. Значение this представляет собой текущий
объект, имеющий стандартные свойства, такие как name, length и
value. Оператор this нельзя использовать вне области
действия функции или вызова функции. Когда аргумент property
опущен, с помощью оператора this передается текущий
объект. Однако при обращении к объекту, как правило, нужно
указать его определенное свойство.
<html> Когда пользователь изменяет содержимое поля ввода с именем persname, вызывается функция sendData() с аргументом this. Значением this в данном случае является поле ввода, определенное в теге <input>. Для того чтобы извлечь в программе какое-либо зачение, связанное с этим объектом, необходимо указать соответствующее свойство. В приведенном примере указано свойство name. Конечно, можно было бы сразу передать в функцию аргумент this.name. Чтобы увидеть содержимое текстового поля, следует использовать свойство this.value. Если же не использовать оператор this, функцию sendData() необходимо изменить следующим образом: function sendData (arg) { Теперь функция
обращается к текущему докуменнту, ссылаясь на поле ввода с
именем persname. В этом случае она выглядит несколько сложнее,
поскольку для обращения к полю ввода приходится указывать
полную иерархию объектов. Если же необходимо обратиться не к
текущему документу, а к определенному окну, запись иерархии
объектов станет еще сложнее. <html> Приведенная программа организует цикл, в котором просматриваются все элементы массива elements. В этом цикле каждый элемент формы добавляется к результирующей строке, которая затем форматируется и выводится на экран при помощи окна alert(). Обратите внимание, что в функцию seeAlert() передается целый объект form. Задание текущего объекта - оператор with Синтаксис: with (Math)
{ Такая запись позволяет избежать использования префикса Math при обращении к константам данного объекта. Рассмотрим пример, как можно использовать оператор with применительно к объекту document: with (parent.frames [1].document)
{ В этом случае оператор with избавляет нас от необходимости указывать перед методами writeln() и write() документ, к которому относятся вызовы этих методов. В приведенном примере используется фреймосодержащий документ. Вот на этом, пожалуй, закончим рассмотрение базовых операторов, выражений и, наконец, первое знакомство с языком JavaScript. В Данной статье были использованы объекты, методы, свойства и обработчики событий, которые могут вам пока непонятны. Дело в том, что если вы имели дело с объектно-ориентированной моделью программирования, то вас не должны смущать эти понятия. Но вот если вам не приходилось иметь дело с ООП (объектно-ориентированное программирование. Не следует путать с Организацией освобождения Палестины) некоторые моменты могут ввести вас в заблуждение. В следующих главах будут более подробно описаны практически все, существующие в языке JavaScript объекты, методы, свойства объектов и обработка событий. А также затрону тему объектной модели языка. Рекомендуем: статьи по продвижению сайта |
|||||||||||||||||||||||||||||||||||||||
| Copyright © dmsdesign.ru Электронная почта: send@dmsdesign.ru |
|||||||||||||||||||||||||||||||||||||||