Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Веб программирование.Начало пути.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
7.81 Mб
Скачать

Объект Date (Дата)

Объект Date предоставляет набор методов для работы с датой и временем. Текущее время в объекте Date берется из операционной сис­темы. Дата и время хранятся в виде числа, показывающее количество миллисекунд с 1 января 1970 года. Нумерация дней недели начинается с нуля, нулю соответствует воскресенье.

Экземпляр объекта Date объявляется следующим образом:

имяОбъекта = new Date([год, месяц, число, часы, минуты, секунды, миллисекунды])

Методы объекта Date

getFullYear(), getYear() – год (с 1970-..)

getMonth() – месяц(0-11), getDate() – число(1-31), getDay() – день недели (0-6)

getHours() – часы (0-23), getMinutes() – минуты (0-59), getSeconds() – секунды (0-59), getTime(), getMilliseconds() - миллисекунды

getUTCFullYear() – год UTC (1970- …), getUTCMonth() – месяц UTC

getUTCDate() – число UTC, getUTCDay() – день недели UTC

getUTCHours() – часы UTC, getUTCMinutes() – минуты UTC

getUTCSeconds() – секунды UTC, getUTCMilliseconds() – миллисекунды UTC

setYear(год), setFullYear(год) – установка года

setMonth(месяц) - установка месяца, setDate(число) - установка числа, setDay(день) - установка дня недели (от 0-6)

setHours(часы) - установка часов, setMinutes(число) - установка минут, setSeconds(число) - установка секунд

setMilliseconds(число), setTime(число) - установка миллисекунд

setUTCFullYear(число) – установка года UTC

setUTCMonth(число), setUTCDate(число), setUTCDay(число), se­tUTCHours(число),

setUTCMinutes(число), setUTCSeconds(число), setUTCMillise­conds(число)

getTimezoneOffset () – разница в минутах по отношению к UTC

toDateString() - Строка с датой (без времени) в формате браузера

toGMTString() - Строка с датой и временем в глобальном формате

toLocaleDateString() - Строка с датой без времени в локализованном формате

toString() - Строка с датой и временем в формате браузера

<!--пример pr19:часы.Использование методов объекта Date-->

<html> <head>

<title>Clock</title>

<script type="text/JavaScript">

function clockform()

{d=new Date();

time=d.getHours()+":"+d.getMinutes()+":"+d.getSeconds();

document.formcl.fclock.value=time;

setTimeout("clockform()",100); }

</script>

</head>

<body onLoad="clockform()">

<center>

<form name=formcl metod="get">

<input name=fclock maxlength=8 size=8>

</form> </center>

</body></html>

Объект Function

Функция в JavaScript также является объектом и создается следующим образом: name= new Function (arguments )

{тело функции}

Свойства:

arguments — массив значений параметров, переданных функции. Индексация элементов массива производится с 0. length — количество параметров, указанных в определении функции

caller — содержит ссылку на функцию, из которой была вызвана данная функция; если функция не вызывалась из другой функции, то значение свойства равно null

Методы :

toString() — возвращает определение функции в виде строки.

Объект RegExp и регулярные выражения

В JavaScript регулярные выражения представлены объектом RegExp. Свойства RegExp принимают значения литералов регулярных выраже­ний, заключенных в скобки /…/. Регулярные выражения из нескольких символов в стиле Perl записываются в косых скобках. Рассмотрим про­стой пример: /stud/. Регулярное выражение ищет все строки, содержащие подстроку stud. Выражение /^stud/ означает, что stud должно находиться в начале слова (student), а /stud$/ - в конце (restud).

Символы могут объединяться в группы путем помещения в квад­ратные скобки. Квадратные скобки /[абв]/ означают “любой символ а,б,в из перечисленных в скобках”. Символ ^ в группе соответствует отрица­нию, то есть указывает символы, не соответствующие шаблону. /[^абв]/ означает “любой символ отличный от а,б,в ” .

Для создания регулярных выражений могут быть использованы ин­тервалы:

/[0-9]/ - совпадает с любой десятичной цифрой от 0 до 9;

/[a-z]/ - совпадает с любым символом нижнего регистра от а до z;

/[a-zA-Z0-9]/ - совпадает с любым символом или цифрой из набора Latin.

Конструкция [^a-zA-Z] совпадает с любым символом, не входящим в указанные интервалы (a-z и A-Z).

Специальные символы записываются с обратным слешем \ - призна­ком особой интерпретации следующего за ним символа:

\d - обозначает любую десятичную цифру;

\D - обозначает любой символ кроме десятичной цифры;

\w - алфавитно-цифровой символ /[a-zA-Z0-9_]/

\W - символ, не являющийся алфавитно-цифровым /[^a-zA-Z0-9_]/

\s - пробельный символ

\S - символ не являющийся пробельным

\n – Символ перехода на следующую строку. Строка\nЕще строка

\r – Символ возврата на начало строки. Текст\r

\t – Символ табуляции из нескольких пробелов. \tКрасная строка

\\ – Обратный слеш

\b забой, совпадает с границами слов: /sa\b/. Противоположный сим­вол, \b, совпадает с чем угодно, кроме границы слова: /sa\b/.

Служебный символ . (точка) означает любой символ поэтому для поиска точки ее надо экранировать символом обратный слеш \. Шаблону соответствует знак точки в строке.

Символы +, *, ? и {...}, обозначающие количество повторений от­дельного символа или конструкции, заключенной в квадратные скобки, называют квантификаторами. Принцип их действия проще всего пояс­нить на примерах:

[р]+ означает один или несколько символов р, стоящих подряд;

[р]* означает ноль и более символов р, стоящих подряд;

[р]? означает ноль или один символ р;

[р]{2} означает ровно два символа р, стоящих подряд;

[р]{2,3} означает от двух до трех символов р, стоящих подряд;

[р]{2,} означает два и более символов р, стоящих подряд.

Например, шаблон /stu+/ совпадает с последовательностью stu, за которой могут следовать один или несколько дополнительных символов u. Шаблон /st{2,4}/ совпадает с символом s, за которым следуют от 2 до 4 экземпляров символа t. /\w{3}\d?/ - три буквы и необязательная цифра. /\s+Java\s+/ - несколько пробелов до слова или после него. Выражение /[\d]+/ используется для поиска цифровой подстроки, выражение /([\d]+)000/ может использоваться при поиске денежных сумм.

Шаблон /<([\w]+)>/ совпадает с конструкциями, заключенными в угловые скобки, - например, тегами HTML.

Подстроки в регулярных выражениях можно группировать при по­мощи круглых скобок: /домен – (by|ru|uk|com)/ соответствует строке до­мен – by или другой.

Оператор | (или) проверяет совпадение одной из нескольких альтер­натив. ( ) – Логическая группировка выражений, которая (может)+ по­вторяться.

В регулярных выражениях могут использоваться флаги. Флаг i ука­зывает , что поиск по шаблону должен быть нечувствительным к регистру символов, а флаг g- поиск должен быть глобальным. Пример:

/\bJava\b/gi

Методы класса String, поддерживающие регулярные выражения:

search(рег_выраж ); возвращает позицию символа в первой найден­ной подстроке. Например “JavaScript”.search(/script/i) возвращает 4.

replace(рег_выраж, строка замены); - строка замены заменяет все строки с регулярным выражением если указан флаг g, иначе заменяется только первое найденное вхождение. Text.replace(/Javascript/gi,”JavaScript”). Метод match(рег_выраж) возвра­щает массив найденных по шаблону подстрок. Метод split(рег_выраж) – разбивает строку на массив строк.

Конструкция

/MSIE (5\.5|6).+Win/.test(navigator.userAgent)

читается так: "проверить, соответствует ли строка, содержащаяся в свойстве navigator.userAgent, следующиему шаблону: Строка MSIE, после которой стоит пробел, затем наборы символов "5.5" или "6", после которых один или более символов, за которыми следует набор символов "Win"".

Регулярные выражения - очень мощное средство, но не лишенное недостатков. И главный из них - производительность. Разбор, компиляция и поиск в тексте по шаблону значительно более затратная операция, нежели простой поиск на точное соответствие. Поэтому не стоит впадать в крайности и использовать регулярные выражения для точного поиска.

Document Object Model (DOM)

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

Принятые в 2000-2001 годах стандарты объектной модели документа называются DOM Level 1 DOM Level 2, и DOM Level 3. Модель DOM основана на использовании объектов браузера document, а также navigator, window, images, forms и JavaScript.

Объект браузера window.document содержит отображение загруженного HTML-документа в виде дерева узлов (node). Тег<html> становится «корнем» дерева. Дочерними узлами <html> являются узлы <head> и <body>, у которых, в свою очередь, есть собственные дочерние узлы. Рассмотрим фрагмент документа:

<!-- пример pr27: -->

<HTML>

<HEAD>

<TITLE> Overview of the DOM </TITLE>

</HEAD>

<BODY>

<H1> Иерархия узлов </H1>

<P>

На вершине иерархии находится узел document, который представляет в DOM сам документ и узел HTML.

</P>

</BODY>

</HTML>

На следующей диаграмме показаны узлы этого документа.

Элемент <html>доступен как свойство объекта document. documentElement и имеет тип Element. Кроме типа Element имеются также типы для атрибутов и текста.

Свойство nodeName возвращает имя HTML тэга, которому соответствует данный узел. Для атрибутов nodeName возвращает название атрибута, а для тестовых узлов возвращает #text.

Свойство nodeType возвращает 1, 2 или 3 для узлов, соответствующих тегу, атрибуту или тексту, соответственно.

Свойство: nodeValue хранит содержание текстового узла. Для элементов оно возвращает null, а для атрибутов - значение атрибута.

<!DOCTYPE HTML SYSTEM>

<html><head>

<title>Dom</title>

<script>window.onload = function() { alert(document.body.childNodes.length) }//5

</script>

</head>

<body>

<script>

function go() {

alert(document.documentElement.nodeName+""+document.documentElement.

nodeType+""+ document.documentElement.nodeValueType)//1

alert(document.body.lastChild.nodeName+""+document.body.lastChild.nodeType+""+document.body.lastChild.nodeValue) //3

alert(document.documentElement);//[object HTMLHTMLElement]

alert(document.body);//[object HTMLBodyElement]

}

</script>

<input type="button" onclick="go()" value="Go"/>

</body> </html>