ОБЪЕКТНАЯ МОДЕЛЬ ЯЗЫКА JAVASCRIPT
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

ОБЪЕКТНАЯ МОДЕЛЬ ЯЗЫКА JAVASCRIPT.

ОБЪЕКТЫ БРАУЗЕРА.

ОБЪЕКТЫ, СООТВЕТСТВУЮЩИЕ ТЕГАМ HTML
ОБЪЕКТНАЯ МОДЕЛЬ ЯЗЫКА. ОБЪЕКТЫ БРАУЗЕРА

 


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

При создании HTML-документов и JavaScript-программ необходимо учитывать структуру объектов. Все объекты можно разделить на три группы:

1. Объекты браузера

2. Внутренние, или встроенные, объекты языка JavaScript

3. Объекты, связанные с тегами языка HTML

Объектами браузера являются зависимые от браузера объекты: window (окно), location (местоположение) и history (история). Внутренние объекты включают простые типы данных, такие как строки (string), математические константы (math), дата (date) и другие.

Объекты, связанные с тегами HTML, соответствуют тегам, которые формируют текущий документ. Они включают такие элементы как гиперсвязи и формы.

Методы объектов

С объектами связаны методы, которые позволяют управлять этими объектами, а также в некоторых случаях менять их содержимое. Кроме того в языке JavaScript имеется возможность создавать свои методы объектов. При использовании метода объекта, нужно перед именем метода указать имя объекта к которому он принадлежит. Например, правильным обращением к методу document является выражение document.write(), а просто выражение write() приведет к ошибке.

Свойства объектов языка JavaScript

В объектно-ориентированном программировании используется также термин свойство. Свойство - это именованное значение, которое принадлежит объекту. Все стандартные объекты языка JS имеют свойства. Например, в прошлой главе мы использовали в одном из примеров свойство bgColor объекта document. данное свойство соответствует атрибуту bgColor тега <body> - цвет фона документа. Для обращения к свойству необходимо указать имена объекта и свойства, разделив их точкой. Каждый объект имеет собственный набор свойств. Набор свойств нового объекта можно задать при определении объекта. Однако, некоторые свойства объектов существуют только для чтения, и вы не можете их менять. В таких случаях можно получить только значения этих свойств. Как показывает практика, такие свойства изменять обычно без надобности и проблем в связи с этим не возникает.

Объекты браузеров

Браузеры поддерживают объекты различных типов. HTML-объектами являются объекты, которые соответствуют тегам языка HTML. К ним относятся метки, гиперсвязи и элементы формы - текстовые поля, кнопки, списки и др. Объекты верхнего уровня, или объекты браузера, - это объекты, поддерживаемые в среде браузера: window, location, history, document, navigator. Объекты, перечисленные в таблице, создаются автоматически при загрузке документа в браузер.

Имя объекта Описание
window Объект верхнего уровня в иерархии объектов языка JavaScript. Фреймосодержащий документ также имеет объект window.
document Содержит свойства, которые относятся к текущему HTML-документу, например имя каждой формы, цвета, используемые для отображения документа, и др. В языке JS большинству HTML-тегов соответствуют свойства объекта document.
location Содержит свойства, описывающие местонахождение текущего документа, например адрес URL.
navigator Содержит информацию о версии браузера. Свойства данного объекта обычно только для чтения. Например свойство: navigator.appname содержит строковое значение имени браузера.
history Содержит информацию обо всех ресурсах, к которым пользователь обращался во время текущего сеанса работы с браузером.

Рассмотрим более подробно каждый объект.

Объект window

Объект window обычно соответствует главному окну браузера и является объектом верхнего уровня в языке JavaScript, поскольку документы, собственно, и открываются в окне. В фреймосодержащих документах, объект window может не всегда соответствовать главному окну программы. Поэтому для обращения к конкретному окну следует использовать свойство frames объекта parent. Фреймы - это те же окна. Чтобы обратиться к ним в языке JavaScript, можно использовать массив frames. Например, выражение parent.frames[0] обращается к первому фрейму окна браузера. Предполагается, что такое окно существует, но при помощи метода window.open() можно открывать и другие окна и обращаться к ним посредством свойств объекта window.

Для обращения к методам и свойствам объекта window используют следующие варианты записи:

o window.propertyName

o window.methodName (parameters)

o self.propertyName

o self.methodName (parameters)

o top.propertyName

o top.methodName (parameters)

o parent.propertyName

o parent.methodName (parameters)

o windowVar.propertyName

o windowVar.methodName (parameters)

o propertyName

o methodName (parameters)

Здесь windowVar - экземпляр объекта window. Имя self - синоним, используемый для обращения к текущему окну во фреймосодержащем документе, тогда как имя top применяется для обращения к главному окну браузера. Для этой цели можно применить и объект parent. Однако следует иметь в виду, что значением parent является ссылка на родительское окно, когда top - ссылка на окно верхнего уровня, которое содержит либо данный фрейм, либо фрейм содержащий вложенный фрейм. Обращение напрямую к методам и свойствам возможно при использовании оператора with.

Свойства

Объект window имеет свойства:

o defaultStatus - текстовое сообщение, которое по умолчанию выводится в строке состояния (status bar) окна браузера.

o frames - массив фреймов во фреймосодержащем документе.

o length - количество фреймов во фреймосодержащем документе.

o name - заголовок окна, который задается с помощью аргумента windowName метода open().

o parent - синоним, используемый для обращения к родительскому окну.

o self - синоним, используемый для обращения к текущему окну.

o status - текст временного сообщения в строке состояния окна браузера.

o top - синоним, используемый для обращения к главному окну браузера.

o window - синоним, используемый для обращения к текущему окну.

Методы

Метод alert() применяется для того, чтобы вывести на экран текстовое сообщение. Для открытия окна используется метод open(), а для закрытия - метод close(). С помощью метода confirm() происходит вывод на экран окна сообщения с кнопками Yes и No, и возвращает булевое значение true или false, в зависимости от нажатой кнопки. Посредством метода prompt() на экран выводится диалоговое окно с полем ввода. Метод setTimeout() устанавливает в текущем окне обработку событий, связанных с таймером, а метод clearTimeout() отменяет обработку таких событий.

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

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

пример:

Мы хотим загрузить, например, страницу http://webwood.chat.ru в окно размером в 640х480 пикселов:

myWin = open ("http://webwood.chat.ru",

"myWin",

"height=480");

Закрыть это окно можно из любого другого окна используя:

myWin.close();

Объект document

Объект document соответствует всему гипертекстовому документ, вернее, той его части, которая заключена в контейнер <body> . . . </body>. Документы отображаются в окнах браузера, поэтому каждый из них связан с определенным окном. Все HTML-объекты являются свойствами объекта document, поэтому они находятся в самом документе. Например, в языке JS к первой форме документа можно обратиться, используя выражение:

document.forms[0]

в то время как к первой форме во втором фрейме следует обращаться выражением:

parent.frames[1].document.forms[0]

Объект document удобно использовать для динамического создания HTML-документов. Для этого применяется HTML-контейнер <body> . . . </body>. Хотя в этом контейнере можно установить множество различных свойств документа, все же имеются такие свойства, значения которых нельзя установить с помощью этих тегов

Для обращения к свойствам и методам объекта document применяется следующий синтаксис:

document.propertyName

document.methodName (parameters)

Свойства

Объект document имеет достаточно много свойств, каждое из которых соответствует определенному HTML-тегу в текущем документе:

o alinkColor- соответствует атрибуту alink тега <body>

o anchors- массив, который соответствует всем меткам в документе;

o bgColor- соответствует атрибуту bgColor (цвет фона) тега <body>

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

o fgColor- соответствует атрибуту fgColor (цвет текста) тега <body>

o forms- массив, содержащий все теги <form> в текущем документе;

o images- массив изображений, ссылки на которые заданы в текущем документе;

o lastModified- дата последнего изменения текущего документа;

o linkColor- соответствует атрибуту linkColor (цвет гиперсвязи по умолчанию);

o links- масив, содержащий все гипервязи в текущем документе;

o location- соответствует адресу URL текущего документа;

o referrer- соответсствует адреу URL документа, из которого пользователь перешел к текущему документу;

o title- соответствует содержимому контейнера <title> . . . </title>

o vlinkColor- соответствует атрибуту vlinkColor (цвет посещенной связи) тега <body>.

Методы

Метод clear() предназначен для очистки текущего документа. Лучше использовать для очистки методы open() и close(). Для записи информации в браузер применяют методы write() и writeln(). Поскольку эти методы записывают текст в браузер в HTML-формате, вы можете создавать любой HTML-документ динамически, включая готовые приложения на языке JavaScript. Если в окно загружен документ, то запись данных поверх него может привести к сбою. Поэтому в окно следует записывать поток данных, для чего с помощью метода document.open() нужно открыть документ, а затем, вызвав необходимое количество раз метод document.wtite(), записать данные в документ. В заключение, чтобы послать данные в браузер, следует вызвать метод document.close().

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

В тегах <body> и <frame> можно использовать обработчики событий, вязанных загрузкой и выгрузкой документа, onLoad и onUnload.

Приведем несколько примеров использования объекта document.

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

document.open();

document.writeln("<img sr='myimage.gif'>");

document.close();

С помощью JavaScript программ, а в частности при помощи объекта document, можно создавать законченные HTML-документы и другие JavaScript программы. Например:

document.open();

document.writeln("<script language='JavaSript'>"+

"alert('Hello World!')"+

"</script>");

document.close();

Объект location

Данный объект сохраняет местоположение текущего документа в виде адреса URL этого документа. При управлении объектом location существует возможность изменять адрес URL документа. Объект location связан с текущим объектом window - окном, в которое загружен документ. Документы не содержат информации об адресах URL. Эти адреса являются свойством объектов window.

Синтаксис:

[windowVar.]location.prepertyName

где windowVar - необязательная переменная, задающая конкретное окно, к которому хотите обратиться. Эта переменная также позволяет обращаться к фрейму во фреймосодержащем документе при помощи свойства parent - синонима, используемого при обращении к объекту window верхнего уровня, если окон несколько. Объект location является свойством объекта window. Если вы обращаетесь к объекту location без указания имени окна, то подразумевается свойство текущего окна.

Свойство location объекта window легко перепутать со свойством location объекта document. Значение свойства document.location изменить нельзя, а значение свойства location окна - можно, например при помощи выражения window.location.property. Значение document.location присваивается объекту window.location при первоначальной загрузке документа, потому, что документы всегда загружаются в окна.

Свойства

Объект location имеет следующие свойства:

o hash - имя метки в адресе URL (если задано);

o host - часть hostname:port адреса URL текущего документа;

o hostname - имя хоста и домена (или цифровой IP-адрес) в адресе URL текущего документа;

o href - полный адрес URL текущего документа;

o pathname - часть адреса URL, описывающая каталог, в котором находится документ;

o port - номер порта, который использует сервер;

o protocol - префикс адреса URL, описывающий протокол обмена, (например, http:);

o target - соответствует атрибуту target в теге <href>.

Примеры

Чтобы присвоить свойству location текущего окна в качестве значения новый адрес URL, используйте такой вид:

self.location="http://webwood.chat.ru";

который в данном случае загружает в текущее окно Web-страницу. Вы можете опустить объект self, поскольку он является ссылкой на текущее окно.

Чтобы загрузить ресурс в фреймосодержащий документ, можно записать так:

parent.frames[0].location = "http://webwood.chat.ru";

где parent.frames[0] соответствует первому фрейму в текущем документе.

Объект history

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

Синтаксис:

history.propertyName

history.methodName (parameters)

Свойства

Значением свойства length является количество элементов в списке объекта history.

Методы

Метод back() позволяет загружать в браузер предыдущий ресурс, в то время как метод forward() обеспечивает обращение к следующему ресурсу в списке. С помощью метода go() можно обратиться к ресурсу с определенным номером в списке объекта history.

Объект navigator

Объект navigator содержит информацию об используемой в настоящее время версии браузера. Этот объект применяется для получения информации о версиях.

Синтаксис:

 

navigator.propertyName

 

Свойства

o appCodeName - кодовое имя браузера;

o appName - название браузера;

o appVersion - информация о версии браузера;

o userAgent - кодовое имя и версия браузера;

o plugins - массив подключаемых модулей (похоже только для Netscape);

o mimeTypes - поддерживаемый массив типов MIME.

 



Массив anchors

Посредством массива anchors программа на языке JavaScript может обращаться к метке текущего гипертекстового документа. Каждому тегу <a name> текущего документа соответствует элемент массива anchors. Для того чтобы программа выполнялась правильно, в соответствующих атрибутах name должны быть заданы имена всех меток. Если документ содержит именованную метку, определенную HTML-тегом

< a name="s1">Selection1</a>

то этой метке в JS-программе соответствует объект document.anchors[0]. Чтобы перейти к этой метке посредством гиперсвязи, пользователь должен щелкнуть мышью на тексте, определенном в контейнере <a href="#s1"> . . . </a>. К массиву anchors можно обращаться при помощи следующих операторов:

document.anchors[i]

document.anchors.length

где i - индекс запрашиваемой метки. Свойство length позволяет определить количество меток в документе, хотя элементы, соответствующие отдельным меткам, будут содержать значение null. Это значит, что нельзя обращаться к именам отдельных меток через элементы массива.

Свойства

Массив anchors имеет только одно свойство length, которое возвращает значение, соответствующее количеству меток в документе. Массив anchors является структурой только для чтения.

Методов и обработчиков событий объекты anchors не имеют.

Объект button

 

Кнопка - это область окна, которая реагирует на щелчки мыши и может активизировать оператор или функцию языка JavaScript при помощи атрибута события onClick. Кнопки являются свойствами объекта form и должны быть заключены в теги <form> . . . </form> языка HTML.

Синтаксис:

<input type="button"

name="buttonName"

value="buttonText"

[onClick="handlerText"]>

Атрибут name задает имя кнопки и в языке JS ему соответствует свойство name нового объекта buttun. Атрибут value определяет надпись на кнопке, которой соответствует свойство value. К свойствам и методам объекта button можно обратиться одним из способов:

- buttonName.propertyName

- buttonName.methodName (parameters)

- formName.elements[i].propertyName

- formName.elements[i].methodName (parameters)

Здесь buttonName - значение атрибута name, а formName - либо значение атрибута name объекта form, либо элемент массива forms. Переменная i является индексом, используемым для обращения к отдельному элементу массива, в данном случае к элементу button.

Свойства

Свойства name и value объекта button соответствует атрибутам name и value HTML-тега <input>. Обратившись к значениям этих свойств, можно вывести полный список кнопок, имеющихся в текущем документе. Свойство type объекта button всегда имеет значение "button".

Пример

Приведем простой пример, например, выведем текущую дату и время посредством нажатия кнопки. Будем использовать событие onClick для вызова метода alert() и конструктора Date() Пример схематичный, объект должен быть определен

 

<form>

<input type="button"

value="Date and Time"

onClick='alert(Date())'>

</form>

Объект checkbox

Контрольный переключатель - это кнопка(флажок), которую можно установить в одно из двух состояний: включено или выключено. Объекты checkbox являются свойствами объекта form и должны быть помещены в теги <form> . . . </form>. Простой контрольный переключатель:

Checkbox1

Checkbox2

Checkbox3

Синтаксис:

<input name="checkboxName"

type="checkbox"

value="checkboxValue"

[checked]

[onClick="handlerText"]>textToDisplay

 

где атрибут name является именем объекта checkbox. Ему соответствует свойство name объекта языка JavaScript. Атрибут value определяет значение, которое передается серверу при пересылки значений элементов формы, если контрольный переключатель включен. Необязательный атрибут checked указывает, что контрольный переключатель должен быть включен по умолчанию. Если этот атрибут задан, свойство defaultChecked имеет значение true. При помощи свойства checked можно определить, включен ли контрольный переключатель. Текст, отображаемый рядом с контрольным переключателем, задается строкой textToDisplay.

К объекту checkbox можно обращаться одним из способов:

o checkboxName.propertyName

o checkboxName.methodName (parameters)

o formName.elements[i].propertyName

o formName.elements[i].methodName (parameters)

где checkboxName - значение атрибута name объекта checkbox, а formName - имя объекта form или формы, которой принадлежит данный контрольный переключатель. Другими словами, к форме можно обращаться как к элементу массива forms, например forms[0] - для обращения к первой форме документа, либо по имени объекта form, если оно определено в атрибуте name HTML-тега <form>.

К любому элементу формы можно обратиться так же, как к элементу массива elements, который является свойством объекта form. В этом случае для обращения к определенному контрольному переключателю следует использовать его порядковый номер (i) в массиве всех элементов формы.

Свойства

Если контрольный переключатель включен, свойство checked имеет значение true. Когда в теге <input> используется атрибут checked, например <input checked type=checkbox>, свойсту defaultChecked также присваивается значение true. Свойство name соответствует атрибуту name тега <input name= . . . type=checkbox>, а свойство value - атрибуту value тега <input>. (оно и правильно. ключевые слова и должны соответствовать чтобы путаницы небыло). Свойство type объекта checkbox всегда содержит значение "checkbox".

Массив elements

Массив elements содержит все элементы HTML-формы - контрольные переключатели (checkbox), селекторные кнопки (radio-button), текстовые объекты (text) и другие, - в том порядке, в котором они определены в форме. Этот массив можно использовать для доступа к элементам формы в JS-программе по их порядковому номеру, не используя свойства name этих элементов. Массив elements, в свою очередь, является свойством объекта forms, поэтому при обращении к нему следует указывать имя формы, к элементу которой вы хотите обратиться:

o formName.elements[i]

o formName.elements[i].length

Здесь formName может быть либо именем объекта form, определенным при помощи атрибута name в теге <form>, либо элементом массива forms, например forms[i], где i - переменная, которая индексирует элементы массива. Значением свойства length является количество элементов, содержащихся в форме. Массив elemments включает данные только для чтения, т.е. динамически записать в этот объект какие-либо значения невозможно.

Свойства

Объект elements имеет только одно свойство, length, значением которого является количество элементов объекта form.

document.forms[0].elements.length

возвратит значение, соответствующее количеству элементов в первой форме текущего документа.

Пример

Создадим пару элементов, например поля ввода для имени и адреса:

Имя: Адрес:

 

Теперь рассмотрим текст этой программы:

 

<html>

<head>

<script language="JavaScript">

<!--

function showElem(f) {

var formEl = " ";

for (var n=0; n < f.elements.length; n++) {

formEl += n + ":" + f.elements [n] +"\n";

}

alert("Элементы в форме '" + f.name + "' :\n\n" + formEl );

}

//-->

</script>

</head>

<body>

<form name="Форма для примера">

Имя:

<input type="text" size=10 name="fullname">

Адрес:

<textarea name="adr"></textarea>

<BR>

<input type="button" value="Смотрим элементы" onClick="showElem(this.form)">

</form>

</body>

</html>

 

Здесь функция перебирает все элементы массива elements заданной формы, в данном примере их три, формирует строку formEl, содержащую информацию об элементах данного массива. IE покажет здесь в виде "n:[object]" то есть этот браузер не содержит в массиве elements строки с информацией об объекте формы. Созданная строка (для удобства читаемости разделена "переводом строки \n" ) выводится в окне предупреждения с помощью метода alert(). Функция showEl() вызывается с аргументом this.form, который обращается к текущей форме. Если оператор this опустить, то из функции showEl() к форме придется обращаться с помощью выражения document.forms[n], - это не очень удобно, так как мы обращаемся из текущей формы.

Объект form и массив forms

Форма - это область гипертекстового документа, которая создается при помощи контейнера <form> . . . </form> и содержит элементы, позволяющие пользователю вводить информацию. Многие HTML-теги, например теги, определяющие поля ввода (text field), области текста (textarea), контрольные переключатели (checkbox), селекторные кнопки (radio button) и списки (selection list), располагаются только в контейнере <form> . . . </form>. Всем перечисленным элементам в языке JavaScript соответствуют отдельные объекты. Программы на языке JS могут обрабатывать формы непосредственно, получая значения, содержащиеся в необходимых элементах (например для проверки ввода обязательных данных). Кроме того, данные из формы обычно передаются для обработки на удаленный Web-сервер.

Синтаксис:

<form name="formName"

target="windowname"

action="serverURL"

method="get" | "post"

enctype="encodingType"

[onSubmit="handlerText"]>

</form>

Здесь атрибут name - строка, определяющая имя формы. Атрибут target задает имя окна, в котором должны обрабатываться события, связанные с изменением элементов формы. Для этого требуется наличие окна или фрейма с заданным именем. В качестве значений данного атрибута могут использоваться и зарезервированные имена _blank, _parent, _self и _top.

Атрибут action задает адрес URL сервера, который будет получать данные из формы и запускать соответствующий CGI-скрипт. Также можно послать данные из формы по электронной почте, указав при этом значения этого атрибута адрес URL типа mailto: . . .

Формы, передаваемые на сервер, требуют задания метода передачи (submission), который указывается при помощи атрибута method. Метод GET присоединяет данные формы к строке адреса URL, заданного в атрибуте action. При использовании метода POST информация из формы посылается как отдельный поток данных. В последнем случае CGI-скрипт на сервере считывает эти данные из стандартного входного потока (standard input stream). Кроме того, на сервере устанавливается переменная среды с именем QUERY_STRING, что обеспечивает еще один способ получения этих данных.

Атрибут enctype задает тип кодировки MIME (Multimedia Internet Mail Extensions) для посылаемых данных. Типом MIME по умолчанию является тип application/x-www-form-urlencoded.

К свойствам и методам формы в JavaScript-прграмме можно обратиться одним из способов:

o formName.propertyName

o formName.methodName (parameters)

o forms[i].propertyName

o forms[i].methodName (parameters)

Здесь formName соответствует атрибуту name объекта form, а i является целочисленной переменной, используемой для обращения к отдельному элементу массива forms, который соответствует определенному тегу <form> текущего документа.

Использование массива forms

К любой форме текущего гипертекстового документа можно обращаться как к элементу массива forms. Для этого необходимо указать индекс запрашиваемой формы. Например, forms[0] - первый тег <form> в текущем документе.

o document.forms[i]

o document.forms.length

o document.forms['name']

Переменная i - это индекс, соответствующий запрашиваемой форме.

Выражение вида

document.forms[i]

можно также присвоить переменной

var myForm = document.forms[i];

Теперь, если в форме имеется, к примеру, поле ввода, определенное в HTML-теге

<form>

<input type=text name=myField size=40>

. . .

</form>

то в JS-программе к этому полю позволяет обращаться переменная myForm. В частности, при помощи следующего оператора содержимое данного поля ввода присваивается новой переменной с именем result:

var result = myForm.myField.value;

Значение свойства length соответствует количеству форм в документе:

var numForms = document.forms.length

Массив forms содержит данные, которые используют только для чтения.

Свойства

Объект form имеет шесть свойств, большинство из них соответствуют атрибутам тега <form>:

o action - соответствует атрибуту action;

o elements - массив, содержащий все элементы формы;

o encoding - соответствует атрибуту enctype;

o length - количество элементов в форме;

o method - соответствует атрибуту method;

o target - соответствует атрибуту target

Массив forms имеет только одно свойство length - количество форм в документе.

Методы

Метод submit() применяется для передачи формы из JavaScript-программы. Его можно использовать вместо тега <input type=submit>, имеющегося в большинстве форм, информация которых должна передаваться на сервер.

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

Обработчик события onSubmit() позволяет перехватывать события, связанные с передачей данных формы. Такие события возникают либо после нажатия кнопки передачи данных, определенной тегом <input type=submit> в контейнере <form>, либо при передаче данных формы с помощью метода submit(), вызванного из JS-прграммы.

Пример

В следующем примере при нажатии кнопки передачи данных содержимое текстового поля посылается адресату по электронной почте:

 

 

Вот текст этой программы:

 

<form nethod="post"

action="mailto:webwood@chat.ru"

enctype="text/plain">

<input type="submit" value="Отправить почту">

<input type="reset" value="Очистить форму">

<textarea name="email" rows=5 cols=60>

</textarea>

</form>

Массив frames

К отдельным фреймам можно обращаться при помощи массива frames и свойства parent. Например, если имеется два фрейма, определенных в HTML-тегах:

<frameset rows="50%,50%">

<frame name="top" src="file1.htm">

<frame name="bot" src="file2.htm">

</frameset>

то для обращения к первому фрейму вы можете использовать выражение parent.frames[0], и соответственно ко второму - parent.frames[1]. Таким образом, для обращения к отдельным фреймам и к свойству length массива frames используются выражения вида:

o frameRef.frames[i]

o frameRef.frames.length

o windowRef.frames[i]

o windowRef.frames.length

Для определения количества фреймов во фреймосодержащем документе применяется свойство length. Все данные массива frames предназначены только для чтения.

Свойства

Объект frame имеет следующие свойства:

o frames - массив, содержащий все фреймы в окне;

o name - соответствует атрибуту name тега <frame>

o length - количество дочерних фреймов в родительском окне (фрейме).

Кроме того, можно использовать такие синонимы:

o parent - синоним для окна или фрейма с текущим фреймосодержащим документом;

o self - синоним для текущего фрейма;

o window - синоним для текущего фрейма.

Массив frames имеет всего одно свойство length, значением которого является количество дочерних фреймов в родительском фрейме.

Скрытый объект

Что это такое, и с чем его едят. Во первых, ничего такого особого в нем нет. Это поле, которое может передаваться из формы например на сервер, находиться в тегах <form> . . . </form>, при этом не отображаться на экране. Для чего оно нужно? Ну например, что-то формируется JS программой и это нужно передать, при этом выводить эту информацию нет смысла. Это текстовые поля позволяют сохранять определенные значения в структурах, отличных от переменных языка JS, хотя данные значения существуют до тех пор, пока загружен текущий документ. Скрытое поле, как уже говорилось является свойством объекта form и должно помещаться в тегах <form> . . . </form>.

HTML-тег имеет синтаксис:

<input type="hidden"

[name="hiddenName"]

[value="textValue"]>

Атрибут name задает имя поля и является необязательным. Значение текстового поля указывают при помощи атрибута value, который позволяет задавать и значение поля по умолчанию. К свойствам скрытых объектов можно обращаться посредством одного из следующих выражений:

o fieldName.propertyName

o formName.elements[i].propertyName

где fieldName - имя скрытого поля, заданное в атрибуте name тега <input>, а formName - имя формы, в которой определено скрытое поле.

Свойства

Скрытый объект имеет свойства:

o name - соответствует атрибуту name тега <input>

o value - соответствует атрибуту value тега <input>

o type - соответствует атрибуту type и содержит значение "hidden".

Скрытые объекты не имеют методов и обработчиков событий.

Пример

В следующей форме определено скрытое поле hfield шириной 20 символов, по умолчанию имеет значение "page 1":

<form name="hiddenField">

<input name="hfield" type="hidden" size=20 value="page 1">

</form>

Значение этого поля можно изменить с помощью оператора следующего вида:

 

document.hiddenField.hfield.value = "page 2";

Свойства

Все свойства объектов image соответствуют атрибутам тега <img>, за исключением свойства complete. Эти свойства, кроме свойств src и lowsrc, значения которых могут быть изменены динамически, имеют значения только для чтения:

o src - соответствует атрибуту src тега <img>

o lowsrc - соответствует атрибуту lowsrc тега <img>

o height - соответствует атрибуту height тега <img>

o width - соответствует атрибуту width тега <img>

o border - соответствует атрибуту border тега <img>

o vspace - соответствует атрибуту vspace тега <img>

o hspace - соответствует атрибуту hspace тега <img>

o complete - содержит булево значение, которое указывает, загружен рисунок в браузер или нет (true - загружен, false - нет);

o type - для объектов image содержит значение "image".

Перед загрузкой рисунка появляется его рамка, внутри которой отображается строка, заданная в атрибуте alt (в версии 5 и выше IE, пользователь при желании может отключить рамки с alt-текстом отображаемые в момент загрузки рисунка). Рисунок можно изменять динамически, присваивая атрибуту src или lowsrc в качестве значения новый адрес URL (Честно говоря такое не применял, локально проверить это не удается, так как lowsrc загрузится мгновенно. А так, как такой способ считаю устаревшим - не пытался применить. Ошибок по крайней мере при применении этого атрибута не выдает.)

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

o onAbort - обработка события, возникающего при прерывании загрузки рисунка, т.е. при нажатии клавиши [Esc] или активизации новой гиперсвязи, в то время, когда рисунок загружается;

o onError - обработка события, связанного с ошибкой загрузки рисунка, т.е. когда невозможно найти рисунок по указанному адресу URL ;

o onLoad - соответствующее событие, инициализируется в начале загрузки рисунка. При загрузке анимированного GIF-а это событие возникает несколько раз и зависит от числа кадров анимационной последовательности.

Примеры

Данный пример позволяет обновить рисунок, нажав на кнопку формы. Не работает IE ниже 4-й версии и NN ниже 3-й версии.

Вот текст этой программы:

<IMG SRC="_picture.gif" BORDER=0 ALT="">

<hr noshade>

<form>

<input type="button" value = "Обновить рисунок" onClick="document.images[0].src='ind_1.gif'">

</form>

Как вы уже и успели заметить, происходит замена одного рисунка на другой. Куда это можно применить? Да и на моем сайте применено подобное для навигации, только события использованы OnMouseOver и OnMouseOut. Представляете, если использовать слои, плюс визуальные фильтры и это свойство с применением хитрой задумки можно такое сотворить! - Такое сотворить. . . Flash не нужно! ;) Можно применить например, для показа рисунков - типа галереи, - зачем грузить полностью документ, когда можно только рисунок, если конечно вы не разместили баннер и вам не выгодно, когда не перегружается страница. Еще пример? Достаточно. Кучу подобных примеров можно найти и в других разделах.

Объект link и массив links

Объект link (гиперсвязь) отображается как участок текста или графического объекта, щелчок миши на котором позволяет перейти к другому Web-ресурсу. Тег языка HTML, а мы помним, что рассматриваем объекты соответствующие тегам HTML, имеет следующий вид:

 

<a href=locationOrURL

[name="anchorName"]

[target="windowOrFrameName"]

[onClick="handlerText"]

[onMouseOver="handlerText"]>

linkText

</a>

 

Атрибут href определяет имя файла, или адрес URL для объекта, который загружается при активизации гиперсвязи. Атрибут name задает имя гиперсвязи, превращая ее в объект anchor (метку). С помощью атрибута target в определенный фрейм текущего фреймосодержащего документа можно загрузить документ, URL которого указан в значении атрибута href. Атрибут linkText представляет собой текст, отображаемый в HTML-документе как гиперсвязь, которая активизируется щелчком мыши. Для обращения к свойству объекта link используются выражения типа:

document.links[i].propertyName

где i - индекс данной связи в массиве гиперсвязей links текущего документа.

Масив links

В программе на языке JavaScript к гиперсвязям можно обращаться как к элементам массива links. Например, если в документе определены два тега < a href>, то в JS-программе к этим гиперсвязям можно обращаться с помощью выражений document.links[0] и document.links[1]. Синтаксис выражений для обращений к массиву links следующий:

o document.links[i]

o document.links.length

где переменная i - индекс гиперсвязи. Значением свойства length является количество гиперсвязей в текущем документе. Объекты link представляют собой объекты только для чтения, поэтому динамически изменять гиперсвязи в документе нельзя.

Свойства

Для объекта link определены следующие свойства:

o hash - задает имя метки в адресе URL, если она существует ;

o host - задает часть hostname:port адреса URL, определенного в гиперсвязи;

o hostname - задает имя хоста и домена (или IP-адрес) в адресе URL, определенном в гиперсвязи;

o href - задает полный адрес URL, определенный в гиперсвязи;

o pathname - задает часть адреса URL, которая описывает путь к документу и находится после части hostname:port;

o port - задает коммуникационный порт, который использует сервер;

o protocol - задает начало адреса URL, включая двоеточие, например http:;

o target - соответствует атрибуту target тега <a href>.

Массив links имеет всего одно свойство, length, значением которого является количество гиперсвязей в текущем документе.

Пример

При подведении указателя мыши на гиперсвязь, в строке состояния браузера появится текст "Текст в строке состояния при подведении мыши на гиперсвязь".

Подведите сюда курсор мыши

Вот текст:

<a href="#" onMouseOver="window.status='Текст в строке состояния при подведении мыши на гиперсвязь';

return true">

Подведите сюда курсор мыши

</a>

В данном случае гиперсвязь указывает на пустой документ - "#". Это выбрано для примера в случае щелчка на гиперсвязи ничего не грузилось.

 

Объект password

Объект password представляет собой поле ввода, содержимое которого не подлежит просмотру. Вместо каждого символа, введенного в таком поле, отображается символ звездочки (*). В то же время содержимое данного поля сохраняется как обычный текст. Объекты password, в свою очередь являются свойствами объекта form и должны помещаться в контейнере <form> . . . </form>.

 

Тег, задающий поле ввода пароля имеет вид:

<input type="password" name="passwordName" size=integer [value="textValue"]>

синтаксис этого тега такой же как и у тега задающего поле ввода, однако атрибут type имеет значение "password". Значением данного атрибута для поля ввода всегда является строка "text".

Атрибут name задает имя поля пароля и соответствует свойству name этого элемента в языке JavaScript, атрибут size определяет размер поля в символах, а атрибут value используется для записи в поле значения по умолчанию. Если и используется этот атрибут, ему обычно присваивают значение взятое из Cookies - об использовании "ключиков" будем говорить позже. Для обращения к свойствам и методам поля пароля применяются выражения вида:

o passName.propertyName

o passName.methodName(parameters)

o formName.elements[i].propertyName

o formName.elements[i].methodName(parameters)

Здесь passName - значение атрибута name объекта заданного в теге <input>, а formName - либо значение свойства name объекта form, либо определенный элемент в массиве forms, например forms[0]. Переменная i применяется для указания положения требуемого элемента в массиве.

Свойства

Объект password имеет следующие свойства:

o defaultValue - значение по умолчанию, задаваемое с помощью атрибута value;

o name - соответствует атрибуту name тега <name>

o value - соответствует текущему значению объекта password;

o type - значением этого свойства для всех объектов password является строка "password".

Объект radio

Объект radio представляет собой селекторную кнопку (radio button), определяемую в HTML-форме. В отличие от контрольных переключателей (checkbox), селекторные кнопки позволяют выбрать только один из предлагаемых вариантов. Объект radio является свойством объекта form, и поэтому должен содержаться в контейнере <form> . . . </form>. В следующем примере показаны три объекта radio.

Пиво "Балтика 1"

Пиво "Очаковское"

Пиво "Бочкарев"

Синтаксис HTML-тега, определяющего селекторную кнопку, следующий:

<input type="radio" name="radioName" value="buttonValue" [checked] [on Click="handlerText"]> textToDisplay

В атрибуте name задается имя селекторной кнопки. Учтите, что для селекторных кнопок, принадлежащих к одной группе, необходимо указывать одинаковые имена, т.е. одинаковые значения атрибута name. Значение атрибута value возвращается серверу при передаче формы (по умолчанию значение "on"). С помощью атрибута checked можно выбрать селекторную кнопку, которая будет активизирована по умолчанию. Свойство defaultChecked объекта radio имеет значение true, если задан атрибут checked. В качестве значения атрибута onClick указывают обработчик события, связанного с выбором селекторной кнопки. В качестве обработчика события можно задать оператор или функцию языка JavaScript. Селекторная кнопка, как правило, имеет текст, описывающий данный вариант выбора. Этот текст задается в строке textToDisplay. Для обращения к методам и свойствам селекторной кнопки используют выражения:

o radioName[i].propertyName

o radioName[i].methodName(parameters)

o formName.elements[i].propertyName

o tformName.elements[i].methodName(parameters)

где radioName - значение атрибута name, заданное в соответствующем теге <input>, а formName - либо значение атрибута name объекта form, либо обращение к элементу массива forms. Поскольку селекторные кнопки являются элементами формы, для обращения к ним можно использовать массив элементов формы elements. Например, к первой селекторной кнопке с именем radio1, принадлежащей первой форме текущего документа, можно обратиться при помощи выражения:

document.forms[0].radioName[0]

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

Свойства

Объект radio имеет следующие свойства:

o checked - содержит булево значение true или false, в зависимсти от того, выбрана или нет данная селекторная кноопка;

o defaultChecked - сответствует атрибуту checked тега <input type="radio">, а также содержит булево значение;

o length - представляет кооличество селекторных кнопок в бъекте radio;

o name - соответствует атрибуту name тега <input>

o value - сооответствует атрибуту value тега <input>

o type - для объектов radio значением этого атрибута является строка "radio"

Объект reset

Объект reset отображается в HTML-форме как кнопка перезагрузки, которая возвращает каждый элемент формы к его исходному состоянию, а значения по умолчанию устанавливаются при помощи атрибута value. Тег имеет синтаксис:

<input type="reset"

name="resetName"

value="buttonText"

[onClick="handlerText"]>

Атрибут name задает имя объекта reset, а атрибут value - текст, отображаемый на кнопке. Для обращения к методам и свойствам объекта reset используется синтаксис:

o resetName.propertyName

o resetName.methodName(parameters)

o formName.elements[i].propertyName

o tformName.elements[i].methodName(parameters)

где resetName - имя объекта reset, заданное в атрибуте объекта name, а formName - имя формы, в которой определен объект reset, указанное в атрибуте name тега <form>, или элемент массива forms.

Свойства

Свойство name соответствует атрибуту name тега <input>, свойство value - атрибуту value, а свойство type - атрибуту type и для объектов reset всегда имеет значение "reset".

Массив options

Элементам списка, определенным в тегах <option>, в JavaScript соответствуют элементы массива options, массив является свойством объекта select. Если тег <select> с именем beer содержит два тега <option>, в JS им соответствуют элементы beer.options[0] и beer.options[1].

Массив options, в свою очередь, имеет свойство length. Значение этого свойства - количество тегов <option> в заданном объекте select. Например, выражение beer.options.length будет возвращать значение 2.

Свойства

Объект select имеет свойства:

o length - количество тегов <option>, заданных в теге <select>

o name - соответствует атрибуту name тега <select>

o options - массив значений тегов <option>

o selectIndex - содержит индекс выбранного элемента, а если выбрано несколько элементов, то индекс первого;

o type - для списков с возможностью выбора одного элемента содержит значение "select-one", а для списков с возможностью выбора нескольких элементов - значение "select-multiple"

Теперь рассмотрим свойства для массива options:

o defaultSelected - соответствует первому тегу <option>, определенному с атрибутом selected;

o index - номер даннго элемента в массиве;

o length - количество элементов в списке объекта select;

o selected - не равное нулю, если данный элемент списка выбран

o selectedIndex - содержит индекс выбранного элемента

o text - соответствует тексту, который указан в теге <option>

o value - соответствует атрибуту value тега <option>

Пример

Рассмотрим пример приведенный выше:

 

<script language "JavaScript">

<!--

function showSelected(a) {

var selNum = a.beer.selectedIndex;

var selText = a.beer.options[selNum].text;

alert("Выбрана ОПЦИЯ: "+ selNum + "\n" +

"Текст выбранной опции: "+ selText);

}

//-->

</script>

<form name ="Мой выбор">

Какое пиво лучше?

<select name = "beer">

<option>Жигулевское

<option selected>Очаковское

<option>Бочкарев

<option>Балтика

</select>

<P>

<input type = "button" value="Смотрим что выбрали" onClick="showSelected(this.form)">

</form>

Если вы во всем разобрались до этого примера, то комментарии и не понадобятся, но все же. Объект select, определенный в данном примере содержит четыре элемента. При щелчке мыши на кнопке "Смотрим что выбрали" активизируется функция showSelected(), которая выводит окно сообщения с информацией об выбранном элементе. Для этого используются свойства text и selectedIndex. Функция showSelected() принимает параметр - имя формы. Значение этого параметра возвращается выражением this.form и представляет собой ссылку на текущую форму. Можно было, конечно и не передавать параметр функции если эта функция существует специально для текущей формы, но если кнопка будет находиться в другой форме, то параметр будет необходим. В функции showSelected() переменной selNum присваивается значение свойства selectIndex объекта select, а затем это значение используется при вычислении значения переменной setText для индексации массива options.

Объект submit

Объект submit отображается как кнопка в фотме HTML. Ее нажатие вызывает передачу текущей формы на сервер, имя которго задано при помощи атрибута action тега <form>. Объект submit является свойством объекта form. Обычно он представляет собой последнее поле формы, хотя его можно указывать в любом месте контейнера <form> . . . </form>. При активации кнопки данные пересылаются на сервер. Мы уже пользовались этим объектом ранее, когда рассматривали объект form.

Синтаксис:

<input type="submit"

name="submitName"

value="buttonText"

[onClick="handlerText"]>

С помощью атрибута name задается имя объекта submit, которое является значением одноименного свойства объекта в языке JS. В качестве значения атрибута value используется строка текста, отображаемая на кнопке. Атрибуту value в языке JS соответствует свйство value объекта submit. Для обращения к методам и свойствам объекта submit применяются выражения:

o submitName.propertyName

o submitName.methodName(parameters)

o formName.elements[i].propertyName

o tformName.elements[i].methodName(parameters)

где submitName - значение атрибута name объекта submit, а formName - либо значение атрибута name объекта form, свойством которого является данный объект submit, либо элемент массива forms, например forms[0] для первой формы в текущем документе. Не правда ли все похоже на объект reset, рассматриваемый ранее, только назначение их разное. Они и применяются зачастую вместе. Свойства, методы и обработчики событий тоже похожи.

Объект text

Объект text - это поле ввода, определяемое в теге <input type="text"> и предоставляющее пользователю возможность вводить текстовые данные. Объект text является свойством объекта form и должен размещаться в контейнере <form> . . . </form>. Объекты text содержат данные, которые можно и читать, и динамически изменять в JS-программах.

Пример:

Синтаксис тега:

 

<input [type="text"]

name="textName"

value="textValue"

size=integer

[onBlur="handlerText"]

[onChange="handlerText"]

[onFocus="handlerText"]

[onSelect="handlerText"]>

С помощью атрибута name задается имя объекта text, которое можно использовать в JS-прграммах. Этому атрибуту в языке JS соответствует свойство name объекта text. Значение атрибута value определяет содержимое поля по умолчанию. Атрибуту value тега <input> соответствует свойство value объекта text, а также свойство defaultValue, значение которого сохраняет содержимое текстового поля, заданное по умолчанию. Присвоив нужное значение атрибуту size, можно установить размер поля в символах. По умолчанию значением атрибута type для объектов text является строка "text", т.е. если атрибут type в определении тега <input> опустить, то создаваемый элемент формы будет полем ввода. Для обращения к методам и свойствам объекта text используют выражения вида:

o textName.propertyName

o textName.methodName(parameters)

o formName.elements[i].propertyName

o tformName.elements[i].methodName(parameters)

типичные для всех элементов формы. Строка textName - имя объекта text, заданное с помощью атрибута name в теге <input>, а строка formName - соответственно имя формы, в которой и определен данный объект.

Свойства

Свойство defaultValue соответствует атрибуту value. Значением свойства value является текущее значение объекта text. Свойство name соответствует атрибуту name объекта text, а свойство type - атрибуту type и содержит в данном случае значение "text".

Пример

Рассмотрим пример приведенный выше:

 

<form>

<B>Пример:</B>

<input type="text"

name="exeName"

value="Это поле ввода"

size=20

onFocus="this.select()">

</form>

 

В данном примере обработчик события, связанного с получением фокуса ввода, onFocus применяется для выделения текста в поле ввода. Для самого выделения используется метод select(), а обращение к полю ввода осуществляется при помощи оператора this.

Объект textarea

Объект textarea соответствует области текста, определенной в форме. Объекты textarea являются свойствами объекта form и должны быть помещены в контейнер <form> . . . </form>. Элементы этого типа используются для ввода нескольких строк текста в свободном формате. Также его часто используют для вывода примеров текста например JS-программы, сформированного текста предлагаемого для размещения например баннера и др.

Измените этот текст и перейдите в другое поле формы:

Это объект textarea Пример текста по умолчанию

 

Тег, задающий область текста, имеет синтаксис:

 

< textarea name="textareaName"

rows="integer"

cols="integer"

[onBlur="handlerText"]

[onChange="handlerText"]

[onFocus="handlerText"]

[onSelect="handlerText"]>

[textToDisplay]

[wrap="hand | soft"]

</textarea>

Атрибут name определяет имя области текста, и ему соответствует свойство name объекта textarea. Атрибуты rows и cols задают размеры пля области в символах. Строка textToDisplay представляет собой необязательный текст, помещенный в область текста при первом отображении на экране. Эта строка является значением свойства defaultValue объекта textarea в языке JavaScript. Форматирование в этой строке и происходит обычным способом, то есть без тегов <br> и других, а также теги отображаются здесь как они написаны, то есть теги в этой строке не работают. Значение атрибута wrap определяет, каким образом введенный в поле текст разбивается на строки. Так, значение soft задает отображение строк в области текста полностью. В противном случае текст между двумя символами конца строки (Enter) размещается в одной строке.

Для обращения к методам и свойствам объекта textarea применяются типичные для элементов формы выражения:

o textareaName.propertyName

o textareaName.methodName(parameters)

o formName.elements[i].propertyName

o formName.elements[i].methodName(parameters)

где textareaName - это значение атрибута name тега <textarea>, а formName - имя формы, в которой определен объект textarea.

Содержимое объектов textarea в JS-программах может динамически изменяться путем присваивания нового значения их свойству value. Например:

document.forms[0].myArea.value = "Новый текст"

Свойства

Объекты textarea имеют свойства:

o defaultValue - значение содержит текст, помещенный в контейнер <textarea> . . . </textarea>

o name - соответствует атрибуту name тега <textarea>

o value - соответствует текущему значению объекта textarea т.е. текущему содержимому области текста;

o type - для объекта textarea всегда содержит значение "textarea".

Методы

Метод focus() используется для помещения фокуса ввода в область текста, а метод blur() - для его удаления из области текста. Метод select() применяется для выделения информации в области текста. Очень удобный метод, когда нужно выделить большой по объему текст.

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

В теге <textarea> можно определить четыре атрибута, задающие обработку событий, связанных с объектом textarea. С помощью атрибута onBlur определяется реакция объекта на удаление фокуса ввода из области текста, а с помощью атрибута onChange - реакция объекта на изменение содержимого области текста. Атрибуты onFocus и onSelect активизируют обработку событий, связанных соответственно с получением фокуса ввода и с выделением данных в области текста.

Пример

Разберем пример. Выше приведена его действующая модель:

<script language "JavaScript">

<!--

function sCange() {

alert ("Содержимое текстовой области изменено");

}

//-->

</script>

<form>

Измените этот текст и перейдите в другое поле формы:<BR>

<textarea name="tarea" rews=5 cols=40 onChange="sCange()">

Это объект textarea

Пример текста по умолчанию

</textarea>

<P>

<input type="text" size=35 name="stxt">

</form>

Здесь содержится два поля. Первое поле является областью текста (textarea). При изменении содержимого текстовой области активизируется функция sCange(), которая выводит окно сообщения, информирующее о том, что текст изменялся. Второе поле является обычным полем ввода, я его разместил для того, чтобы было куда переместить фокус.

 

ОБЪЕКТНАЯ МОДЕЛЬ ЯЗЫКА JAVASCRIPT.

ОБЪЕКТЫ БРАУЗЕРА.

ОБЪЕКТЫ, СООТВЕТСТВУЮЩИЕ ТЕГАМ HTML
ОБЪЕКТНАЯ МОДЕЛЬ ЯЗЫКА. ОБЪЕКТЫ БРАУЗЕРА

 


Дата: 2019-02-25, просмотров: 207.