Руководство по JavaScript

         

Арифметические Операторы



Арифметические Операторы

Арифметические операторы принимают численные значения (литералы или переменные) как их операнды и возвращают числовое значение.

Стандартные Арифметические Операторы

Стандарт Арифметические операторы - сложение (+), вычитание (-), умножение (*), и деление (/). Эти операторы работают стандартным способом.

Модуль (%)

Оператор модуля используется следующим образом:
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.



Атрибут SRC


...

Любые утверждения JavaScript в теге SCRIPT с атрибутом SRC игнорируются. Обратите внимание, однако, что требуется заключительный тег </SCRIPT>.

Атрибут SRC со значением может быть любой URL, относительный или абсолютный. Например:

Внешние JavaScript файлы особенно полезно использовать совместно с функциями во многих различных страниц. JavaScript - файлы не содержащие любые теги HTML: они должны содержать только утверждения JavaScript и функциональные определения.

JavaScript - файлы должны иметь имя файла с расширением .js, и сервер должен отображать .js в MIME, напечатает "application/x-javascript", который сервер посылает обратно в HTTP заголовк. Если сервер не отображает .js имени файла в application/x-javascript типа MIME, Navigator не будет загружать JavaScript файл, определенный атрибутом SRC правильно.

Обратите внимание: Это требование не применяется, если вы используете локальные файлы.





Целые числа (Integers)



Целые числа (Integers)

Целыми называют числа вида 1, 164, 102390. Они могут быть выражены в десятичном (по основанию 10), шестнадцатеричном (по основанию 16), или восьмеричном (по основанию 8) представлении. Десятичный литерал целого числа состоит из последовательности цифр без ввода 0 (ноля).

Целое число может быть выражено в восьмеричном или шестнадцатеричном скорее чем в десятиричное. Шестнацетеричные числа включают цифры 0-9 и буквы a-f и A-F, в JavaScript они записываются с комбинацией символов 0x или 0X (ноль-x) перед числом. Восмиричные числа включают только цифры 0-7 и в JavaScript записываются с ведущего нуля.

Например, десятичное число 23 представляется в шестнадцатеричном виде как 0x17 и в восмеричном как 027



Цвет


Следующие красные, зеленые, и синие значения находится в шестнадцатеричном триплете RGB.

Реальный цвет на клиентском компьютере зависит от возможностей монитора - монитор VGA с 16 цветами явно не даст такой картинки, как с 16 SVGA миллионами цветов.

ЦВЕТ КРАСНЫЙ ЗЕЛЕНЫЙ СИНИЙ



Данные tainting


Navigator (версия 2.02 и позже) автоматически прекращает скрипты на одном сервере из доступных свойств документов на различных серверах. Это ограничение прекращает скрипты от выборки частной информации типа структур каталога или хронологии сеанса пользователя. Однако, это ограничение также воздействует на некоторые законные приложения, типа сценарии "navigation helper", которые используют фреймы и должны видеть содержание других фреймов, независимо от их происхождения.

JavaScript теперь имеет возможность, называемую данными tainting, которая сохраняет ограничение защиты, но обеспечивает механизм работы для законных приложений. Когда данные tainting активны, то JavaScript в одном окне будет способен видеть свойства другого окна, независимо с какого сервера документ другого окна был загружен. Однако, если JavaScript в первом окне пытается посылать данные, полученные от свойства другого окна, то отображается диалоговое окно подтверждения, так что пользователь может отменить или подтвердить операцию. По умолчанию, все свойства в втором окне заражаются так, что они не могут быть посланы серверу другого документа в исходном окне.

Возможность данных tainting:

На Unix, используйте команду setenv. На Windows, используйте множества. На Macintosh, установите переменную среды NS_ENABLE_TAINT. Редактируйте ресурс с типом 'Envi' и номером 128 в приложении Netscape, удаляя два ascii наклонные черты вправо "//" перед NS_ENABLE_TAINT текстом в конце ресурса.

Вы можете управлять tainting свойств двумя функциями: taint добавляет tainting к свойству, и untaint удаляет tainting из свойства. Эти функции каждая принимает свойство, как параметр.

Например, чтобы удалить taint из формы ввода элемента так, чтобы сценарий мог посылать это другому серверу, используйте: untainted = untaint(document.form1.input3) // now untainted can be sent in a URL or form post by other scripts

Ни taint и ни untaint не изменяют ее параметр; скорее, обе функции возвращают отмеченную или немаркированную ссылку к объекту параметра, или копии примитивного значения типа (номер или булево значение). Вы используете untaint, чтобы очистить "код taint" который отмечает данные как принадлежность к серверу, и следовательно не может быть послан другими сценариями различным серверам. Вы используете taint, чтобы отметить данные, который иначе не taint вашим сценарием "код инфекции". Сценарий может untaint только данные, которые имеет его свойство "код taint ", или имеет тождество (null) кода taint. Данные с любым другим сценарием "кода taint" скопированы и возвращены untaint без изменения или ошибки.

wwwwwwwwwwwwwwwwwwwwwЧтобы обрабатывать случаи, где поток управления скорее чем поток данных несет tainting taint, каждое окно, связывают сумматор инфекции с этим. Сумматор taint задерживает инфекцию, проверенную в части условия того, если, поскольку, и в то время как утверждения, и смеси различные коды инфекции, чтобы создать, новые коды который идентифицируют комбинацию происхождения данных (serverA, serverB, serverC, и т.д.).

Сумматор инфекции сброшен к тождеству только, если это содержит точно код происхождения текущего(актуального) документа. Иначе это накапливается, пока документ не разгружен. Все окна, загружающие документы из того же самого происхождения совместно используют одиночный сумматор инфекции.

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

Если сумматор окна задерживает(проводит) инфекцию, заданные сценарием действия, инициализированные из контекста того окна (представление формы; установка расположения, даже расположения другого окна) проверена. Только, если накопленная инфекция сценария, код инфекции целенаправленного сервера, и кода инфекции данных, посылаемых совместима, будет операция продолжаться(переходить). Совместимый здесь означает двоичное отношение: или это, два кода инфекции являются равными, или что по крайней мере каждый является кодом инфекции тождества. Код тождества - подобно нулю для добавления, следовательно его имя.

Если сценарий, сервер, и инфекции данных несовместимы, диалог подтверждения зарегистрирован к подробности(подробному) находящееся в противоречии происхождение URL префиксы, и позволять пользователю отменять или ХОРОШО загрузку URL или пост формы.

Накопленная taint распространяется поперек setTimeout и в оценку первого параметра к setTimeout. Это распространяется через document.write в сгенерированные отметки, так, чтобы злонамеренный сценарий не мог сообщать о частной информации типа хронологии сеанса, генерируя отметку HTML с неявно-загруженным параметром URL SRC: Document.write (" < img src=fake-img - + Кодируйте (хронологию) + ">")



Функции и Методы



Функции и Методы

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

Определение функции состоит из ключевого слова function , сопровождаемого Именем функции Списком аргументов функции, приложенной в круглых скобках, и отделяемые запятыми JavaScript утверждениями, которые определяют функцию, приложенные в фигурных скобках, {...}

Вы можете использовать любые функции, определенные в текущей странице. Лучше всего определять все ваши функции в HEAD страницы. Когда пользователь загружает страницу, сначала загружаются функции.

Утверждения в функциях могут включать другие обращения к функции.

Например, есть функция с именем pretty_print: function pretty_print(string) { document.write(" " + string) }

Эта функция принимает строку как аргумент, прибавляет некоторые теге HTML, используя оператор суммы (+), затем показывает результат в текущем документу.

Определение функции не выполняет ее. Для этого вы должны вызвать функцию, чтобы выполнить ее. Например, вы можете вызывать функцию pretty_print следующим образом: pretty_print("This is some text to display")

Аргументы функции не ограничены только строками и числами.

Аргументы функции сохраняются в таблице. Внутри функции, вы можете адресовать параметры следующим образом: functionName.arguments [i] Где functionName - имя функции, и i - порядковое число аргумента, начинающегося с нуля. Так, первый аргумент в функции, с именем myfunc, будет myfunc.arguments [0]. Общее число аргументов обозначено переменным arguments.length.

Функция может даже быть рекурсивной, то есть она может вызывать себя. Например, существует функция, которая вычисляет факториалы: function factorial(n) { if ((n == 0) || (n == 1)) return 1 else { result = (n * factorial(n-1) ) return result } }

Вы можете показывать факториалы от одного до пять следующим образом: for (x = 0; x < 5; x++) { document.write(x, " factorial is ", factorial(x)) document.write(" ") }

Результаты будут бы следующие:
факториал нуля - 1
факториал единицы- 1
факториал двойки - 2
факториал тройки - 6
факториал четверки - 24
факториала пятерки - 120



Функции parseInt и parseFloat



Функции parseInt и parseFloat

Эти две встроенные функции возвращают числовое значение когда дана строка как аргумент.

Функция parseFloat анализирует его строковый аргумент, и возвращает число с плавающей точкой. если первый символ переданной строки - знак "плюс", знак "минус", десятичная точк число "е" (основание натурального логарифма) или цифра. Если parseFloat сталкивается с недопустимым символа то метод возвращает значение, основанное на подстроке, следующей до этого символа, игнорируя все последующие. Ее первый же символ недопустим, parseFloat возвращает одно из двух значений, в зависимости от платформы:

0 на платформах Windows.

"NaN" на любой другой платформе, указывая, что значение - не номер.

Для арифметических целей, значение "NaN" - не число в любом основании системы счисления. Вы можете вызывать функцию isNaN, чтобы определить,является ли результат parseFloat "NaN".

Функция parseInt анализирует ее первый строковый аргумент, и возвращать целое число, основанное на указанном основании системы счисления. Например, При параметре radix, равном 10, string преобразовыва-ется в десятичное число, при 8 преобразовывается в восьме-ричное и при 16 - в шестнадцатеричное. Значения, большие 10, для оснований, превышающих 10, представляются символами отАдо F вместо чисел. Использование radix, равного 2, служит для преобразований в двоичные числа. Числа с плавающей запятой будут преобразованы в целые числа. Правила обработки строки идентичны правилам для parseFloat.

Если parseInt сталкивается с сиволом, который - не символ в указанном основании системы счисления, то игнорирует его и возвращает значение целого числа, анализируемую до того пункта. Если первый символ не может быть преобразован к символу в указанном основании системы счисления, то возвращает NaN. ParseInt усекает числа до значения целого числа.



Функции с Переменными Числовыми Аргументами



Функции с Переменными Числовыми Аргументами

Вы можете вызывать, функция с большим количеством аргументов чем она формально объявлена, используя массив arguments . Это часто полезно тогда, когда вы не знаете заранее, сколько аргументов будут в функции. Вы можете использовать arguments.length, чтобы определить число аргументов в функции, и затем обращаться к каждому аргументу, используя массив arguments .

Например, рассмотрим функцию, определенную, чтобы создать списки HTML. Единственый формальный аргумент функции - строка, которая является "U", если список неупорядочен или "O", если список упорядочен (пронумерован). Функция определена следующим образом: function list(type) { document.write("

Вы можете проходить любое число аргументов этой функции, и затем показывать каждый аргумент как каждый отдельный пункт в обозначенном типе списка. Например, следующий запрос на функцию: list("o", "one", 1967, "three", "etc, et one 1967 three etc, etc ...



Функция eval



Функция eval

Аргумент встроенной функции eval - строка. Строка может быть - любая строка, представляющая выражение JavaScript утверждение, или последовательность утверждений. Выражение может включать переменные и свойства существующих объектов.

Если аргумент представляет выражение, eval вычисляет выражение. Если аргумент представляет один или большее количество JavaScript утверждений, eval вычисляет утверждения.

Эта функция полезна для оценки строки, представляющая арифметическое выражение.

Следующий пример присваивает ввод в текстовой области, применяет eval функцию и показывает результат в другой текстовой области. Если вы напечатаете численное выражение в первой области, и нажимаете на кнопку, выражение будет вычисленно. Например, введите "(666 * 777)/3", и нажмите на кнопку, чтобы увидеть результат. function compute(obj) { obj.result.value = eval(obj.expr.value) } Enter an expression:
Result:

function compute(obj) { obj.result.value = eval(obj.expr.value) } Enter an expression:
Result:

Функция eval не ограничена оценкой численных выражений. Его аргумент может включать ссылки объекта или даже JavaScript утверждения. Например, вы могли определить функцию setValue, который принимает два аргумента: и объект и значение, выглядят следующим образом: function setValue (myobj, myvalue) { eval ("document.forms[0]." + myobj + ".value") = myvalue; }

Затем, например, вы могли вызывать эту функцию, чтобы установить значение элемента формы "text1" следующим образом: setValue (text1, 42)



Иерархия объектов



Иерархия объектов

Среди объектов существуют определенные взаимоотношения. Например, объекты Navigator имеют структуру, отражающую структуру страницы HTML. Такие отношения называются иерархией экземпляров, так как эта иерархия работает только с конкретными экземлярами объектов, а не с абстрактными классими.

Объект window является родительским по отношению ко всем остальным объектам Navigator. Прямыми потомками объекта window являются объекты location, history и document. Объекты forms, links и anchors являются дочернеми для объекта document.

Каждый объект является потомком объекта более высокого уровня. Форма с названием orderForm является объектом и в то же время свойстом обекта document. Таким образом для вызова такой формы используется выражение: document.orderForm

Иерархию объектов языка JavaScript можно сопоставить с иерархией объектов в реальном мире. Колеса, руль и педали - это все объекты, принадлежащие велосипеду. Велосипед представляет собой объект, принадлежащий к средствам наземного транспорта, которые, в свою очередь, принадлежат к более общей категории средств передвижения.

В терминах объектов JavaScript эти взаимоотношения могли бы быть выражены следующим образом: travelMode.groundTransport.bicycle.handleBars

Наиболее общий объек высшего уровня находится слева в выражении, и слева направо происходит переход к более частным объектам, являющимся при этом наследниками высших в иерархии объектов. Таким образом чтобы обратиться к определенному свойству этих объектов, вы должны определить имя объекта и всех его предков.

Теперь проиллюстрируем иерархию объектов: navigator window | +--parent, frames, self, top | +--location | +--history | +--document | +--forms | | | elements (text fields, textarea, checkbox, password | radio, select, button, submit, reset) +--links | +--anchors



Использование фреймов



Использование фреймов

Один из способов выдать сразу несколько файлов HTML на экране пользователя - это открыть несколько окон броузера. Другой путь состоит в том, чтобы разбить окно на несколько разделов. Эти разделы называются фреймами. В каждом фрейме показывается свой документ HTML. Каждый фрейм может иметь свои полосы прокрутки, ссылки, графические изображения и т.д. Фреймы могут функционировать независимо или влиять друг на друга, используя ссылки, указывающие на другие фреймы.
Для использования фреймов необходимо как минимум три файла: установачный файл и два исходных файла HTML. Установачный файл назначает исходные файлы HTML для каждого из окон, но не содержит собственного текста или графики. Исходные файлы HTML выдаются во фреймы и, как и любые другие файлы могут содержать ссылки, изображения, скрипты и пр.
Для создания установочного фрейма необходимо два тэга: <frameset> и <fram> . HTML-страница, создающая фреймы, в общем случае может выглядеть следующим образом: <html> <frameset cols="50%,50%"> <frameset rows="50%,50%"> <frame src="cell.htm"> <frame src="cell.htm"> </frameset> <frameset rows="33%,33%,33%"> <frame src="cell.htm"> <frame src="cell.htm"> <frame src="cell.htm"> </frameset> </frameset> </html>

Внутри тега <frameset> мы использовали свойства rows и cols. Это означает, что фреймы будут расположены друг над другом или друг под друго соответсвенно. Фрагмент "33%,33%,33%" задает размеры открываемых окон. Этот фрагмент эквивалентен следующей записи "33%,33%,*" или задать размер фрейма в пиксилах, для чего достаточно после числа не ставить символ %. Любому фрейму можно присвоить уникальное имя, воспользовавшись в тэге <frame> атрибутом name. Такая возможность пригодится нам в языке JavaScript для доступа к фреймам.
Тег <frame> содержит отрибуты, которые управляют различными свойствами фреймов.
BORDER=определяет ширину разделительной полосы между фреймами.
BORDERCOLOR=устанавливает цвет разделительной полосы между фреймами.
NORESIZE атрибут, запрещающий пользователю изменять размеры фреймов.
SCROLLING=задает, появляются ли в окне полосы прокрутки.
MARGINHEIGHT=добавляет пустое поле между верхней границей фрейма и началом текста или графики.
MARGINWIDTH=добавляет пустое поле между боковыми границами фрейма и текстом или графикой.

Следующий график показывает окно, содержащее три фреймов: This frame is This frame is named listFrame named contentFrame | | | | -------------v------------------------------v---------- | Music Club | Toshiko Akiyoshi | | Artists | Interlude | | | | | Jazz | The Beatles | | - T. Akiyoshi | Please Please Me | | - J. Coltrane | | | - M. Davis | Betty Carter | | - D. Gordon | Ray Charles and Betty Carter | | | | | Soul | Jimmy Cliff | | - B. Carter | The Harder They Come | | - R. Charles | | | ... | ... | ------------------------------------------------------- | Alphabetical By category Musician Descriptions | ----------------^-------------------------------------- | | This frame is named navigateFrame Пример 1. Следующе утверждение создает frameset, показанный в предыдущем графике.

Следующий график показывает иерархию фреймов. Все три фрейма имеют того же самого родителя, даже при том, что два из фреймов определены внутри отдельного frameset. Это, потому что родитель фреймов есть родитель окно, и фрейм, расположенный не в frameset, определяет окно. top | +--listFrame (category.html) | +--contentFrame (titles.html) | +--navigateFrame (navigate.html)

Вы можете обращаться к предыдущим фреймам, используя массив frames следующим образом. (Для информации относительно массива frames, смотрите объект frame.) listFrame - top.frames [0] contentFrame - [1] top.frames navigateFrame - top.frames [2]

Пример 2.Вы можете создавать окно подобно предыдущему, но в котором вершина двух фреймов имеют отдельного родителя из navigateFrame. Верхний уровень frameset будет определен следующим образом:

Файл muskel3.html содержит следующие утверждения для верхних фреймов и определяют frameset:

Следующий график показывает иерархию фреймов. UpperFrame и navigateFrame родитель: верхнее окно. ListFrame и contentFrame родитель: upperFrame. top | | +--listFrame | | (category.html) +---upperFrame------| | (muskel3.html) | | +--contentFrame | (titles.html) | +---navigateFrame (navigate.html)

Вы можете обращаться к предыдущим фреймам, использующим массив frames следующим образом. (Для информации относительно массивов frames, смотрите объект frame.) upperFrame - top.frames [0] navigateFrame - [1] top.frames listFrame - upperFrame.frames [0] или top.frames [0] .frames [0] contentFrame - upperFrame.frames [1] или top.frames [0] .frames [1]



Использование ковычек



Использование ковычек

Убедитесь, что бы чередовали двойные котировки с одиночными ковычками. Так как обработчики событий в HTML должны быть расположены в кавычках, вы должны использовать одиночные ковычки, чтобы разграничить аргументы. Например

В качестве альтернативы, вы можете выйте из ковычек, предшествуя им наклонной чертой влево (\).



Использование Объекта Date



Использование Объекта Date

JavaScript не имеет данных типа date. Однако, объект date и его методы позволяют вам работать с датами и временами в ваших приложениях. Объект date имеет большое количество методов для установления, получения, и управления датами. Он не имеет никаких свойств.

JavaScript обрабатывает date очень похоже на обоабатывание в Java. Два языка имеют многие из тех же самых методов date, и оба языка сохраняютdate как число миллисекунд начиная с 1 января, 1970 00:00:00.

ЗАМЕЧАНИЕ: Вы не можете в настоящее время работать с датами до 1/1/70.

Создание объект date: varName = new Date(parameters) Где varName - имя переменной JavaScript для создаваемого объекта date; это может быть новый объект или свойства существующего объекта.

Параметры Date могут быть следования: Ничего: создает сегодняшнюю дату и время. Например, today = new Date() Строка, представляющая дату в следующей форме: " Month day, year hours:minutes:seconds". Например, Xmas95= new Date("December 25, 1995 13:30:00"). Если вы опускаете значение часов, минут, или секунд, то будет установлено значение нуль. Множество целых числ для year, month, и day. Например, Xmas95 = new Date(95,11,25) Множество значений для for year, month, day, hour, minute, и seconds. Например, Xmas95 = new Date(95,11,25,9,30,0)

Объект Date имеет большое количество методов для обработки дат и времен. Методы относятся к этим широким категориям: "set" методы, для установки даты и времени оценивается в объектах date "get" методы, для получения значений даты и времени из объектов date "to" методы, для возвращающегося ряда оценивает из объектов date. Синтаксический анализ и UTC методы, для синтаксического анализа строковых date.

Методы "get" и "set" позволяют вам получать и управлять секундами, минутами, часами, днем месяца, днем недели, месяцами, и гадами отдельно. Имеется метод getDay, который возвращает день недели, но не соответствующий методу setDay, потому что день недели устанавливается автоматически. Эти методы используют целые числа, чтобы представить значения следующим образом: Секунды и минуты: от 0 до 59 Часы: от 0 до 23 День: от 0 до 6 (день недели) Дата: от 1 до 31 (день месяца) Месяцы: от 0 (январь) до 11 (декабрь) Год: годы начиная с 1900

Например, пусть вы определяете date следующим образом: Xmas95 = new Date("December 25, 1995") Затем Xmas95.getMonth () возвращает 11, и Xmas95.getYear () возвращает 95.

Методы getTime и setTime полезны для сравнения дат. Метод getTime возвращает число миллисекунд начиная с периода для объекта даты.

Например, следующий код показывает число рабочих дней прошедших до Рождества: today = new Date()nextXmas = new Date("December 25, 1990") nextXmas.setYear(today.getYear()) msPerDay = 24 * 60 * 60 * 1000 ; // Number of milliseconds per day daysLeft = (nextXmas.getTime() - today.getTime()) / msPerDay; daysLeft = Math.round(daysLeft); document.write("Number of Shopping Days until Christmas: " + daysLeft);

Этот пример создает объект date today, который содержит сегодняшнюю дату. Затем создается объект date nextXmas, устанавливающий год, текущего года. Затем, используя число миллисекунд в день, вычисляется число дней между today и nextXmas, используя getTime, и округляя до целого числа дней.

Метод синтаксического анализа полезен для назначения значений от строк date до существующих объектов date. Например, следующий код использует синтаксический анализ и setTime, чтобы присвоить дату к объекту IPODATE. IPOdate = new Date() IPOdate.setTime(Date.parse("Aug 9, 1995"))



Использование объекта документ



Использование объекта документ

Один из наиболее используемых в Навигаторе объект - это объект документа, потому что методы write и writeln могут вызвать HTML. Эти методы - это способ, которым Вы показываете утверждения JavaScript пользователю. Единственая разность между write и writeln - это то, что write записывает строку или несколько строк в окно документа, а writeln записывает строку или несколько строк в окно документа и добавляет символ новой строки в конец вывода. Но так как HTML игнорирует добавления символа новой строки, то это будет создавать эффект предварительно отформатированного текста, типа тега PRE.

Объект документа также имеет обработчики событий onLoad и onUnload, они вызываются соответственно для выполнения функции, когда пользователь впервые загрузил страницу и когда пользователь выходит из страницы.

Имеется только один объект документа в странице, это - предок для всей формы, связь и объекты якоря в странице. <



Использование Объекта формы



Использование Объекта формы

Навигатор создает объект формы для каждой формы в документе. Вы можете называть форму в атрибуте NAME, как показано в примере: ...

Если был бы объект JavaScript, с именем myform основанный на этой форме. Форма имела бы свойства, соответствующие текстовому объекту, к которому Вы обратитесь как Document.myform.quantity Вы обратились бы к свойству значения этого объекта как Document.myform.quantity.value

Формы в документе сохранены в массиве, названный form. Первая (самая верхняя в странице) форма, как form[0], вторая, как form[1], и так далее. Так что вышеупомянутые ссылки могли выглядеть так: Document.forms [0] .quantity document.forms [0] .quantity.value .

Аналогично, элементы в форме, типа текстовых полей, кнопок, и так далее, сохранены в массиве elements.



Использование Объекта Math



Использование Объекта Math

Встроенный объект Math имеет свойства и методы для математических констант и функций. Например, PI свойство объекта Math имеет значение pi, который вы примененили бы как Math. PI

Точно так же стандартные математические функции - методы Math. Они включают тригонометрические, логарифмические, экспоненциальные, и другие функции. Например, использование функции тригонометрического синуса, выглядет так Math.sin (1.56)

Замечание, что все аргументы тригонометрических методов Math в радианах.

Часто удобно использовать утверждение with, когда раздел кода использует несколько математических констант и методов, поэтому вы можете не писать несколько раз "Math". Например, with (Math) { a = PI * r*r; y = r*sin(theta) x = r*cos(theta) }



Использование объекта окна



Использование объекта окна

Объект окна - это "родительский" объект для всех других объектов в Навигаторе. Вы можете всегда упустить имя объекта по отношению к свойствам окна и методов.

Окно имеет несколько очень полезных методов, которые создают новые окна и всплывающие диалоговые окна: open и close: Открывает и закрывает окно браузера alert: Выдает аварийное диалоговое окно confirm: Выдает диалоговое окно подтверждения

Объект окна имеет свойства во всех фреймах в FRAMESET. Фреймы сохранены в массиве фреймов. Массив фреймов содержит вход для каждого дочернего фрейма в окне. Например, если окно содержит три дочерних фрейма, то эти фреймы отражены как window.frames [0], window.frames [1], и window.frames [2].

Свойства состояния открыты для вас, чтобы вы могли установить сообщение в строке состояния внизу клиенского окна.



Использование Объекта String



Использование Объекта String

Всякий раз, когда вы приписываете значение строки переменной или свойству, вы создаете объект string. Литералы строки - также объекты string. Например, утверждение mystring = "Hello, World!"

Создает строковый объект mystring. Литерал "blah" - также строковый объект.

Объект string имеет методы, которые возвращают: Изменение строки непосредственно, типа substring и toUpperCase. HTML форматирование строки, типа bold и link.

Например, данный вышеупомянутый объект, mystring.toUpperCase() возвращает "Hello, World!", и то же делает "Hello, World!".toUpperCase ().



Использование this для Ссылок Объекта



Использование this для Ссылок Объекта

JavaScript имеет специальное ключевое слово, this, которое вы можете использовать, чтобы обращаться к текущему объекту. Например, пусть у вас есть функция с именем validate , которая проверяет правильность свойства значения объекта, данного объект, и high и low значения: function validate(obj, lowval, hival) { if ((obj.value < lowval) || (obj.value > hival)) alert("Invalid Value!") }

Вы можете вызывать validate в каждом элементе формы обработчика событий onChange, используя this, как показано в следующем примере:

Вообще, метод this обращается к вызывающему объекту.



Использование Встроенных функций



Использование Встроенных функций

JavaScript имеет несколько функций "верхнего уровня", встроенные в язык. Это следующие функции: eval parseInt parseFloat



Использование Встроенных Объектов и Функций


JavaScript Язык содержит следующие встроенные объекты(цели) и функции: Объект String Объект Math Объект Date Встроенные функции

Эти объекты и их свойства и методы сформированы в язык. Вы можете использовать эти объекты, и в приложениях клиента с Netscape navigator и с приложениями - серверами с LiveWire.



JavaScript и HTML Планировка



JavaScript и HTML Планировка

Чтобы использовать JavaScript корректно в Навигаторе, нужно понимать как Навигатор выполняет планировку. Планировка относится к преобразованию директив открытого HTML текста в графическое представление на вашем компьютере. Вообще говоря, планировка идет последовательно в Навигаторе. То есть Навигатор начинает с вершины HTML файла и продолжает идти вниз, выясняя, как выводить на экрану, как это делать. Это начинается с HEAD HTML документа, затем c вершины BODY и так далее.

Из-за этого "нисходящего" поведения, JavaScript выдает только тот HTML, с которым она столкнулась. Например вы определили форму с парой текстового вклада elements:

Затем эти элементы формы будут отражены, так как объекты JavaScript document.statform.username и document.statform.userage, которые вы можете использовать где-нибудь после того, как форма определена. Однако, вы могли бы не использовать эти объекты прежде, чем форма определена. Так, например, вы могли показывать значение этих объектов в скрипте после определения формы: document.write(document.statform.username.value) document.write(document.statform.userage.value)

Однако, если Вы пробовали делать это перед определением формы (то есть выше этого в HTML - странице),то вы можете получить ошибку, так как объекты еще не существуют в Навигаторе.

Аналогично, если только произошла планировка, установившая значение свойства, не воздействует на ее значение или ее вид. Например, вы определили заголовок документа следующим образом: Моя JavaScript Страница

Это отражается в JavaScript как значение document.title. Если только Навигатор выделил это в планировке (в этом случае, в названии окна Навигатора), Вы не можете изменять значение в JavaScript. Так, если ниже в странице, у вас есть следующий скрипт: Document.title = " Новая улучшенная JavaScript страница "

Это не будет изменять значение document.title, не будет воздействовать на вид страницы, и не образуется ошибка.



JavaScript Выражения и Операторы


Выражения

Операторы

Арифметические Операторы Побитовые Операторы Логические операторы Операторы Сравнения Операторы Строки Старшинство Оператора



Ключевые объекты Навигатора



Ключевые объекты Навигатора

Часть из наиболее используемых в Навигаторе обектов, включает документ, форму, и окно.



Литералы



Литералы

Литералы - способ, которым вы представляете значения в JavaScript. Установленные значения, которые вы буквально (literally) представляете в вашем источнике, и - не переменные. Примеры литералов включают: 42 3.14159 "Быть или не быть"



Литералы с плавающей точкой



Литералы с плавающей точкой

Литералы с плавающей точкой представляют собой дробные части целых чисел и должны включать в себя по крайней мере одну цифру и десятичную точку либо символ экспоненты ("е" или "Е"). В следующих примерах приведены различные варианты представления одного и того же числа: 3.1415927 31415927е-7 .31415927Е1



Логические Литералы



Логические Литералы

Логические значения имеют только два значения, истинна (true) или ложь (false). В некоторых реализациях языка JavaScript 0 (false) и 1 (true) не могут быть использованы в качестве логических значений.



Логические операторы



Логические операторы

Логические операторы принимают логические (Булевы) значения как операнды. Они возвращают логическое значение. Логические значения 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.

Логическое правило гарантирует, что эти вычисления будут всегда правильными.



Модифицикация фреймов



Модифицикация фреймов

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

Например, пусть вы используете frameset, описанный в Примере 2 в предыдущем примере. Если вы хотите, чтобы пользователь был способен закрывать фрейм, содержащий список artists (в фрейме listframe) и просматр только music titles, сортируемые musician (в настоящее время в фрейме contentFrame), вы можете добавить следующую кнопку к navigateFrame.

Если Вы хотите, чтобы пользователь мог закрыть фрейм, содержащий список artists (в фрейме listframe) и просматривая только music titles, сортируемые musician (в настоящее время в фрейме contentFrame), вы можете добавить следующую кнопку к navigateFrame.

Когда пользователь нажимает на эту кнопку, файл artists.html загружается в фрейм upperFrame; фреймы listFrame и contentFrame закрываются и больше не существуют.



Модифицирование Страниц



Модифицирование Страниц

Результаты JavaScript в Navigator вызываются из вершины загруженной страницы. Если вы хотите что - нибудь форматировать,то вы не можете изменить это без перезагрузки страницы. В настоящее время, Вы не можете модернизировать частную часть страницы без модифицирования всей страницы. Хотя, вы можете модернизировать "sub-window" (незначительную часть окна) в фрейме отдельно.

Объектная модель JavaScript


JavaScript основан на простом объектно-ориентированном примере. Объект - это конструкция со свойствоми, которые являются переменными JavaScript. Свойства могут быть другими объектами. Функции, связанные с объектом известны как методы объекта.

В дополнение к объектам, которые сформированы в Navigator client и LiveWire server, вы можете определять ваши собственные объекты. Объекты и Свойства Функции и Методы Создание Новых Объектов



Объекты и Свойства



Объекты и Свойства

Объект JavaScript имеет свойства ассоциированные с ним. Вы обращаетесь к свойствам объекта следующей простой системой обозначений: objectName.propertyName

И имя объекта и имя свойства чувствительны к регистру. Вы определяете свойства, приписывая значение. Например, пусть существует объект, с именем myCar (мы обсудим, как создавать объекты позже - теперь, только принимаем, что объект уже существует). Вы можете дать свойства, именованные make , model , и year следующим образом: myCar.make = "Ford" myCar.model = "Mustang" myCar.year = 69;

Вы можете также обратиться к этим свойствам, используя систему обозначений таблицы следующим образом: mycar["make"] = "Ford myCar["model"] = "Mustang" myCar["year"] = 69;

Этот тип таблицы известен как ассоциативная таблица, потому что каждый элемент индекса также связан со значением строки. Чтобы пояснять, как это делается, следующая функция показывает свойство объекта, когда вы проходите объект и имя объекта как аргументы функции:

Так, обращение к функции show_props(myCar, "myCar") возвращает следующее: myCar.make = Ford myCar.model = Mustang myCar.year = 67

Вы можете также определять свойства, используя порядковые числа, например: temp[0] = 34 temp[1] = 42 temp[2] = 56 Эти утверждения создают три свойства объекта temp, и вы должны обращаться к этим свойствам как temp[i], где i - целое число между 0 и 2.



Область действия переменных



Область действия переменных

Область действия переменных - то, где вы можете использовать их в скрипте. В JavaScript, существует две области действия, которые переменные могут иметь: Глобальная: Вы можете использовать переменную где-нибудь в приложении. Локальная: Вы можете использовать переменную внутри текущей функции.

Чтобы объявить локальную переменную внутри функция, используйте ключевое слово var, например: var total = 0

Чтобы объявить глобальную переменную, объявите переменную назначения, которая просто присваивает значение переменной (или в функции или вне функции), например: total = 0

Лучше всего объявлять глобальные переменные в начале вашего скрипта, так, чтобы функции наследовали переменную и ее значение.



Обращение и управляние среди фреймов



Обращение и управляние среди фреймов

Поскольку фреймы - это тип окна, то вы обращаетесь к фреймам и перемещаетесь среди фреймов также как с окном. Смотрите также: обращение к окнам и фреймам и Управление окнами



Обращение к окнам и фреймам



Обращение к окнам и фреймам

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

Так как объект окна - верхнего уровня объект в JavaScript иерархии пользователя, окно необходимо для определения объектов в любом окне.



Обращение к окну подчиненной формы или гиперсвязи



Обращение к окну подчиненной формы или гиперсвязи

Используйте имя окна, когда обращаетесь к окну, как к строке, указывающей имя окна подчиненной формы или гиперсвязи (атрибут TARGET тегов <FORM> или <A>).

Пример 1: второе окно. Следующий пример создает гиперссылку ко второму окну. В примере есть кнопка, которая открывает, окно с именем window2, и связь, которая загружает файл doc2.html в открытое окно, и еще одна кнопка, которая закрывает окно.

Load a file into window2

Пример 2:anchor во втором окне. Следующий пример создает гиперссылку к anchor во втором окне. Связь отображает anchor с именем numbers в файле doc2.html в окне window2. Если window2 не существует, его создает. numbers

Пример 3: имя фрейма. Следующий пример создает гиперссылку к anchor в фрейме. Связь отображает anchor с именем abs_method в файле sesame.html фрейма с именем "contentFrame". Фрейм должн быть внутри текущего frameset, и имя фрейма должно быть определено в атрибуте NAME тега <FRAME>. abs

Пример 4: литеральное имя фрейма. Следующий пример создает гиперссылку к файле. Сслка отображает файл с именем artists.html в родительском окне текущего frameset. Этот объект ссылки появляется в фрейме внутри frameset, и когда пользователь нажимает ссылку, все фреймы в frameset исчезают, и загружается файл artists.html в родительское окно. Musician Descriptions



Обращение к свойствам, методам, и обработчикам собития окна



Обращение к свойствам, методам, и обработчикам собития окна

Вы можете обращаться к свойствам, методам, и обработчикам собития текущего окна или другого окна следующими из способов: self или window. Self или window - синонимы для текущего окна, и вам необязательно использовать их, чтобы обратиться к текущему окну. Например, Вы можете закрыть текущее окно, используя или window.close () или self.close (). top или parent. Top или parent - также синонимы, которые могут использоваться вместо имени окна. Top обращается к самому верхнему окну Navigator, и parent обращается к окну, содержащий frameset. Например, выражение parent.frame2.document.bgColor="teal" изменяет цвет фона фрейма с именем frame2 в teal; frame2 - фрейм в текущем frameset. The name of a window variable. Variable окна - переменная, которая определена, когда окно открыто. Например, msgWindow.close () закрывает окно с именем msgWindow. Однако, когда Вы открываете или закрываете окно внутри обработчика события, то вы должны точно определить window.open () или window.close () вместо использования open() или close(). Из-за обзора статических объектов в JavaScript, обращение к close() без определения точного имени окна эквивалентно выражению document.close(). Omit the window name. Поскольку существование текущего окна принято, то вы не должны обращаться к имени окна, чтобы вызывать его метод и присвоить его свойству. Например, close() закрывает текущее окно.

Для получения дополнительной информации этих методах обращения к окну, смотрите объект window.

Пример 1: обращение к текущему окну. Следующая выражение обращается к форме с именем musicForm в текущем окне. Выражение выдает предупреждение, если переключатель выбран. if (self.document.musicForm.checkbox1.checked) { alert('The checkbox on the musicForm is checked!')}

Пример 2: обращение к другому окну. Следующие выражения обращаются к форме с именем musicForm в окне checkboxWin. Выражения определяют, если выбран переключатель, отмечает переключатель, определят, если выбрана вторая опция объекта selected, выбирает вторую опция объекта selected. Даже при том, что значения объекта изменены в checkboxWin, текущее окно остается активным: проверка переключателя и выбора опции отбора не дает фокус окну. // Определят выбран ли переключатель if (checkboxWin.document.musicForm.checkbox2.checked) { alert('The checkbox on the musicForm in checkboxWin is checked!')} // Отмечает переключатель checkboxWin.document.musicForm.checkbox2.checked=true // Определяет, выбрана ли опция в объекте select if (checkboxWin.document.musicForm.musicTypes.options[1].selected) {alert('Option 1 is selected!')} // Выбирает опцию в объекте select checkboxWin.document.musicForm.musicTypes.selectedIndex=1

Пример 3: обращение к фрейму в другом окне. Следующее выражение обращается к фрейму с именем frame2, который находится в окне с именем window2. Выражение изменяет цвет фона frame2 в фиолетовый. Имя фрейма frame2, должно быть определено в теге <FRAMESET>, который создает frameset. Window2.frame2.document.bgColor = "violet"



Оператор break



Оператор break

Оператор Прерывает текущий цикл for и while, передавая управление первому оператору после цикла.



Оператор comment



Оператор comment

Комментарии - это специальные замечания программиста, чтобы объяснить, что делает данный скрипт, и они игнорируются интерпретатором. JavaScript поддерживает следующий стиль комментарий: Однострочные комментарии начинаются с символа (//). Многострочные комментарии начинаются /* и заканчиваются */.



Оператор continue



Оператор continue

Передает управление оператору проверки истенности условия в цикле while и оператору обнавления значения счетчика в цикле for. Важное отличее от оператора break заключается в том, что оператор continue не прерывает цикл, а делает следующее. В цикле while, это переходит назад к условию. В цикле for, это переходит к модернизированному выражению.



Оператор for



Оператор for

Создает цикл с тремя необязательными выражениями, заключенными в круглых скобках и разделенными точкой с запятой, сопровождаемыми блоками утверждений, выполненных внутри цикле: for (initialExpression;condition;updateExpression) { ...строки кода... } где Выражение initialExpression используеться для инициализации переменной счетчика, которую можно создоть с помощью оператора var. Это выражение необязательно. Выражение condition, которое вычисляется на каждом проходе через цикл. Если это условие истинно, то выполняются условия внутри цикла. Это условие необязательно. Если оно опущено, то условие всегда считается равным истинному, тогда цикл продолжается до ошибки или до оператора break. Выражение updateExpression, вообще используется для изменения значения переменной счетчика. Оно тоже является необязательным. В этом случае можно обновлять значение переменной счетчика внутри цикла.



Оператор for...in



Оператор for...in

Присваевает переменной поочередно все свойства объекта. Для каждого свойства цикл for...in выполняет операторы, содержащиеся в теле цикла: for (var in obj) { ...statements... }



Оператор function



Оператор function

Объявляет функции языка JavaScript, требует указания имени name и списка параметров param. Для того чтобы возвращать значение, функция должна иметь в себе оператор return, который указывает возвращаемое функцией значение. Оператор функция вы не можете вложить в другую функцию. Принято следующее написание этого оператора: function name([param] [, param] [..., param]) { ...statements... }