SCRIPT-вставки в HTML-документе
Для встраивания программы на JavaScript в HTML — файл используются теги <script> и </script>. При этом результат работы можно увидеть сразу и при необходимости внести изменения. <html> <head> <script language="JavaScript"> document.write("Hello,world!<p>") </script> </head> <body> It was dynamically created text. </body> </html> Будет сформирован текст: Hello, world! It was dynamically crested text. Заметим, что внутри тегов <script> и </script> может содержаться любое число конструкций языка JavaScript. Некоторые старые браузеры не поддерживают язык JavaScript и поэтому, чтобы скрыть от них вставки JavaScript, в программу добавляют следующий комментарий: <!-- скрываемый текст --> Пример: <html> <head> <script language="JavaScript"> <!-- hidden text document.write("Hello from JavaScript") //end of hidden text --> </script> </head> <body> The end </body> </html> Вставки могут быть и внутри <body>.
Операторы, выражения, функции 1. Операторы: арифметических действий, присваивания, инкрементные, декрементные. Условные выражения Операторы арифметических действий в JavaScript те же, что и в С и Java: Сложение "+", вычитание "-", умножение "*", деление "/", остаток от целочисленного деления "%". Эти операторы могут встречаться в любом численном выражении. (Внимание! Они также могут встречаться в строковых выражениях в случаях, когда используется автоматическое приведения чисел в строки). Операторы присваивания в JavaScript те же, что и в С и Java: "=", "+=", "-=", "*=", "/=", "%=" x=y, как и в большинстве других языков, значит присвоить переменной "х" значение переменной "y". Следующие операторы имеют синтаксис, сходный с синтаксисом соответствующих операторов языка С:
y+=x эквивалентно y=y+x y-=x эквивалентно y=y-x y*=x эквивалентно y=y*x y/=x эквивалентно y=y/x y%=x эквивалентно y=y%x – остаток от деления нацело y на x. Условное выражение имеет вид (условие)?значение1:значение2 Если значение условия true, значением условного выражения будет значение1, иначе — значение2. Условное выражение можно применять везде, где можно применять обычные выражения. Пример: a=(b<1)?0:(x-1)+c Инкрементные и декрементные операторы также имеют синтаксис, заимствованный из языка С: "х++", "++х", "х--", "--х". Выражения: y=x++ эквивалентно двум присваиваниям: y=x; y=y+1, y=++x эквивалентно двум присваиваниям: x=x+1; y=x, y=x-- эквивалентно двум присваиваниям: y=x; x=x-1, y=--x эквивалентно двум присваиваниям: x=x-1; y=x.
2. Строковые операции Существуют ряд операторов работы со строками: "+" - сложение (конкатенация) строк s1+s2 дает строку, состоящую из последовательности символов строки s1, за которыми следуют символы строки s2. eval(s) - встроенная функция JavaScript. Она выполняет код, заданный аргументом— строкой s, который может содержать один или более операторов JavaScript (через точки с запятой). Данную функцию можно использовать не только для выполнения оператора, но и для вычисления выражения. Она возвращает значение последнего вычисленного выражения в заданном коде. Функция eval(s) обеспечивает возможность вычислять значения, введенные пользователем в пункты ввода, а также динамически модифицировать выполняемый код в JavaScript-программе. Более общая, чем функции parseInt и parseFloat. parseFloat(s) – встроенная функция JavaScript. Находит содержащееся в строке s вещественное число (типа Float) от начала строки до первого символа, не входящего в число. Если число не найдено, возвращает значение NaN (“Not a Number”) parseInt(s) – то же для целых чисел (Integer). При этом автоматически находится основание. parseInt(s,n) – то же для целых чисел по основанию n (от 2 до 36). При n=0 – то же, что parseInt(s). При этом автоматически находится основание
3. Побитовые операции присваивания Существуют ряд операторов побитового присваивания: х<<=n эквивалентно x=(x<<n) — сдвиг на n битов влево двоичного представления целого числа x; x>>=n эквивалентно x=(x>>n)— сдвиг на n битов вправо двоичного представления целого числа x с сохранением знакового бита (отрицательные числа в дополнительном коде имеют первым битом единицу. После сдвига на место первого бита записывается 1, и число остается отрицательным); x>>>=n эквивалентно x=x>>>n — сдвиг на n битов вправо двоичного представления целого числа x с ведущим нулем 0 (После сдвига на место первого бита записывается 0, и число становится положительным);. Всё выражение (у нас — "x") в левой части преобразуется в 32-битное целое число, после чего производится необходимый сдвиг, а затем получившиеся число приводится к типу выражения – результата (у нас это опять"x"), и производится присваивание.
Примеры: 1) 9<<2 дает 36, т.к. сдвиг 1001 (число 9 в двоичном представлении) на 2 бита влево дает 100100, т.е. 36. Недостающие биты заполняются 0. 9>>2 дает 2, т.к. сдвиг 1001 (число 9 в двоичном представлении) на 2 бита вправо дает 10, т.е. 2. Недостающие биты заполняются 0. "&" — побитовая AND — "И"; "|" — побитовое OR — "ИЛИ"; "^" — побитовое XOR — "ИСКЛЮЧАЮЩЕЕ ИЛИ". Все операции совершаются с двоичным представлением чисел, однако, результат возвращается в обычном десятичном представлении. Примеры: 15&9 возвращает 9, т.к. (1111) AND (1001) равно 1001; 15|9 возвращает 15, т.к. (1111) OR (1001) равно 1111; 15^9 возвращает 6, т.к. (1111) XOR (1001) равно 0110. 2.3 Логические выражения. "&&" — логическое AND — "И"; "||" — логическое OR — "ИЛИ"; "!" — логическое NOT — "НЕ". Пример: (a>b)&&(b<=10)||(a>10) В JavaScript всегда применяется так называемая сокращенная проверка логических выражений: в операнде B1&&B2 при B1=false оценки B2 не производится и возвращается значение false. Аналогично B1||B2 при B1=true оценивается как true. При этом анализ логического выражения идет слева направо, и как только всё выражение может быть оценено, возвращается результат. Поэтому, если в качестве B2 выступает функция, она не будет вызываться, и если она должна давать побочные эффекты, то это может привести к ошибке.
4. Операторы сравнения "= =" -"равно"; ">" -"больше"; "<" -"меньше"; ">=" -"больше или равно"; "<=" -"меньше или равно"; "!=" -"не равно". Операторы сравнения применимы не только к численным, но и к строковым выражениям. При этом строки считаются равными, если все их символы совпадают и идут в одном и том же порядке (пробел учитывается как символ). Если строки разной длины, то большей будет строка имеющая большую длину. Если их длины совпадают, больше считается та, у которой при просмотре слева направо встретится символ с большим номером (a < b < c <.... < z < A <... < Z). Строки можно складывать, если S1="это ", S2="моя строка", то S1+S2 даст "это моя строка". Приоритет операторов (начиная с младших; в одной строке старшинство одинаково): "+=", "-=", "*=", "/=", "%=", "<<=", ">>=", ">>>=", "&=", "^=", "|=".
5. Старшинство операций условное выражение: "?:"; логическое "ИЛИ": "||"; логическое "И": "&&"; побитовое "ИЛИ": "|"; побитовое "XOR": "^"; побитовое "И": "&"; сравнение на равенство "= =", "!="; сравнение: "<", "<=", ">", ">="; побитовый сдвиг: "<<", ">>", ">>>"; сложение, вычитание: "+", "-"; умножение, деление: "*", "/"; отрицание, инкремент, декремент: "!", "~", "++", "--"; скобки: "()", "[ ]".
6. Функции В JavaScript, как и в С или Java, процедуры и процедуры — функции называются функциями. Декларация функции состоит из: зарезервированного слова function; имени функции; списка аргументов, разделенных запятыми, в круглых скобках; тела функции в фигурных скобках. function myFunction(arg1, arg2,...) { ... последовательность операторов ... } где myFunction — имя функции, arg1, arg2 — список формальных параметров Пример:
function Factorial(n) { if((n<0)||(round(n)!=n)) { alert("функция Factorial не определена при аргументе "+n); return NaN; } else { result=(n*Factorial(n-1)); return result; } } Функция может не возвращать значения с помощью зарезервированного слова return. Пример: function Greeting(s) {document.write("Hello,"+s+"!"); } Вызов функции производится с фактическими параметрами. Пример: Factorial(2+1); — внутри некого выражения возвратит 6, а Greeting("world"); —приведет к выводу на экран строки "Hello, world!". Каждая функция, например myFunction, является объектом с именем myFunction, аргументы которого хранятся как массив, имеющий имя arguments, при этом доступ к аргументам может осуществляться так: myFunction.arguments[i], где i — номер аргумента (нумерация начинается с 0). Число фактических параметров должно быть равно либо больше числа формальных параметров в описании функции. При этом, при вызове функции действительное число переданных аргументов хранится в поле myFunction.arguments.length и может динамически изменяться переприсваиванием значения этого поля. Пример: Вывод в документе списка в формате HTML. Первый аргумент здесь (ListType) может иметь значение "о" или "О" для упорядоченного списка и "u" или "U" для неупорядоченного. Далее идут элементы списка. function myList(ListType) { document.write("<"+ListType+"L"); for(var i=1; i < myList.arguments.length; i=i+1) {document.write("<LI>"+myList.arguments[i]); } document.write("</"+ListType+"L>"); } Вызов в тексте HTML документа этой функции: <script> myList("0", "один", 2, "3") </script> приведет к выводу текста: один
7. Условный оператор if первый вариант синтаксиса оператора if: if(условие) { утверждение } (Утверждением называется оператор или последовательность операторов.) b) второй вариант синтаксиса оператора if: if(условие) { утверждение1 } else { утверждение2 } Пример использования условного оператора: function checkData() { if (document.form1.threeChar.value.length==3) {return true; } else {alert('Введите ровно 3 символа'); return false; } } 8. Цикл for for(секция инициализации; секция условия; секция изменения счетчиков) { утверждение } Каждая из секций может быть пустой. В секциях инициализации и изменения счетчиков можно писать последовательности выражений, разделяя их запятыми. Выполнение цикла происходит следующим образом. Первой выполняется секция инициализации. Затем проверяется условие. Если условие равно true, то выполняется тело цикла, а затем секция изменения счетчиков. Если условие равно false, то выполнение цикла прекращается. Пример: function HowMany(SelectObject) { var numberSelected=0 for (i=0; i< SelectObject.options.leght; i++) { if (SelectObject.options[i].selected==true) numberSelected++; } return numberSelected; } Оператор for может использоваться для перебора всех полей объекта (см. далее раздел про объектную модель)
Синтаксис: for(переменная in объект) { выражение } При этом производится перебор всех возможных значений указанной переменной в объекте, и для каждого из них выполняется утверждение. Пример: function student(name, age, group) { this.name=name; this.age=age; this.group=group; } function for_test(myObject) { for(var i in myObject) { document.write("i="+i+" => "+myObject[i]+"/n"); } }; Helen=new student("Helen K.", 21, 409); for_test(Helen); Вывод на экран: i=0 => Helen K. i=1 => 21 i=2 => 409 9. Цикл while while(условие) { выражение } Выполнение цикла while начинается с проверки условия. Если оно равно true, то выполняется тело цикла, иначе управление передается оператору, следующему за циклом. Пример использования оператора while: n1=10 n=0 x=0 while(n<n1) { n=n+1; x=x+n; } 2.8 Операторы прерывания выполнения циклов. Для прекращения выполнения текущего цикла операторов for или while служит оператор break. Пример использования оператора break: function test(x) { var j=0; var sum=0; while(n<n1) { if(n==x) { sum=x; break; } sum=sum=n; n=n+1; } return sum; } Оператор continue прерывает выполнение текущей итерации внутри for или while и вызывает переход к началу следующей итерации. Пример использования оператора continue: function test1(x) { var j=0; while(n<n1) { if(n==x) { sum=x; continue; } sum=sum=n; n=n+1; } return sum; }
2. Объектная модель 1. Классы, объекты, поля данных, методы Подробная теоретическая информация по этому разделу содержится в курсе “Объектно - Ориентированное Программирование”. Отметим только, что класс – это тип данных, в котором описывается, как должны быть устроены переменные данного типа – объекты. JavaScript существует большое число предопределенных классов. Также можно определять собственные классы. Однако возможность создания в JavaScript собственных классов носит итсключительно рекламно-декоративный характер: трудно представить ситуацию, когда она реально может понадобиться. До сих пор ни на одной WWW-странице нам такая ситуация не встретилась.
2. Работа с полями данных и методами уже существующих объектов В JavaScript доступ к полям данных и методам может быть осуществлен обычным путем через квалификацию имени: если Data1 — поле данных, а method1 — метод объекта obj1, то obj1.Data1 означает доступ к полю Data1 этого объекта, а obj1. method1 — вызов его метода method1 (напомним, что Data1 и data1 — разные идентификаторы, как и method1 и Method1, и т.п.). Для определенных в программе объектов доступ может быть как по чтению, так и по записи. Ряд полей предопределенных объектов доступны только по чтению (например, Math.PI- значение числа "пи"). Если до присваивания поля данных с используемым именем его в объекте не было, оно динамически создается в момент присваивания. Пример: student.name="Алексей Иванов"; student.age=26; student.group=409; a=student.name Возможен второй путь доступа к полям данных — ассоциативный, через массив индексов: student["name"]="Алексей Иванов"; student["age"]=26; student["group"]=409; b=student["group"] Возможно определить поле данных объекта только через индекс, без имени. В этом случае доступ к полю будет возможен только по номеру: A[0]=1; A[1]=2; A[2]=4; B[0]="a"; B[1]="b"; и т.д. Подобного рода поля — это массив, но в отличие от массивов в других языках программирования его элементы могут иметь произвольный тип. Задание метода myMethod объекта myObject может быть произведено либо "изнутри"(в определенный класс- смотри далее), либо "снаружи"-простым присваиванием: myObject.myMethod=myFunction; где myFunction — имя уже определенной функции. Допустим, это myGreeting. Тогда myObject.myMethod=myGreeting; Вызов методов осуществляется аналогично вызову обычной функции JS. Метод может использоваться как процедура: myObject.myMethod("method"); даст "Hello, method!" Либо же можно использовать метод как собственно функцию, возвращающую значение. Для создания нового класса объектов (например, student) надо определить функцию с таким именем. Вместо имени объекта для доступа к полям внутри этой функции надо использовать зарезервированное слово "this".
3. Задание нового класса объектов. Квалификатор this Процедура определения класса student: function student(name, age, group) { this.name=name; this.age=age; this.group=group; } В соответствии с правилами JavaScript мы фактически ввели глобальные переменные student.name, student.age, student.group. Теперь можно определить объекты типа student с помощью предопределенного слова new: Paul=new student("Павел", 23, 509); Alex=new student("Алексей", 26, 609); Объекты- это экземпляры класса. Может быть сколько угодно экземпляров данного класса и При необходимости можно менять параметры существующих экземпляров и создавать новые. Следует отметить, что в зависимости от фактического списка параметров поля объектов "student" могут иметь разные типы. Более того, даже число полей, как мы знаем, может быть разным при соответствующем определении функции.
4. Операторы for и with для работы с объектами вставить for..in… Для получения доступа к полям объекта очень удобен оператор with. Его синтаксис таков: with(объект) { утверждение } Внутри тела оператора with (т.е. в утверждении) методы и переменные, по умолчанию квалифицируются именем объекта (без явного указания в качестве префикса имени объекта С последующуй точкой), если нет локальных методов или переменных с использованными именами. Если имеются локальные методы или переменные объекта с тем же именем, доступ к полям, как мы уже знаем, должен осуществляться "извне" через полное имя (с явной квалификацией), а "изнутри" объекта - с помощью квалификатора this. Пример: var x,y; with(Math) { y=PI/2; x=sin(y/7)+pow(y,2); } Здесь вместо PI, sin и pow используются поле и методы объекта Math: Math.PI Math.sin Math.pow
5. Правила работы с объектами Объекты можно передавать в функции в качестве параметров. Например, если мы имеем следующее определение функции IndividualPlan: function IndividualPlan(student, yearCount) { this.person=student; this.year=yearCount; } То PaulPlan=new IndividualPlan(Paul,5); создаст объект с именем PaulPlan, поле PaulPlan.person которого является объектом типа student. При этом доступ к имени студента будет производиться следующим образом: PaulPlan.person.name. Отдельному объекту можно динамически добавлять поля: Paul.award="Грант Шведского института" При этом у остальных объектов типа student этого поля не будет. Аналогично добавляются методы, так так можно динамически переприсваивать методы объекта. Например, если функцию IndividualPlan определить сначала как function IndividualPlan(student, yearCount) { this.person=student; this.year=yearCount; this.hello=myGreeting; } то вызов PaulPlan.hello("University"); приведет к выводу на экран следующей строки: "Hello, University!" В любой момент в программе можно переопределить функцию IndividualPlan.hello. Например, введем функцию ShowPerson, не имеющую параметров: function showPerson() { document.write("Владелец индивидуального плана "+this.person.name); } после чего проведем присваивание IndividualPlan.hello=showPerson; Оно изменит не только тело функции, но и число ее аргументов. Теперь вызов PaulPlan.hello(); приведет к выводу на экран Владелец индивидуального плана: Павел. В JS все элементы кроме операндов и операторов являются объектами. Поэтому для них можно вызывать соответствующие методы. Имена предопределенных объектов начинаются с большой буквы. Так при вызове методов для строковой переменной или строкового выражения вызываются методы встроенного объекта Stung.
6. Динамическое формирование документа 1)Пример программы: <html> <body> <script language = "JavaScript"> document.write("<h2>Table of Factorials</h2>") for (i=1,factorial=1; i<10; i++, factorial*=i) {document.write(i+"!="+factorial) document.write("<br>") } </Script> </body> </html>
3. Классы и объекты языка JavaScript 1. Класс Global (задан неявно) Класс Global является частью спецификации ECMAScript, и его задача – объединение в один объект ряда глобальных методов и свойств. При обращении к методам сам объект не указывается, так как он не имеет конструктора. К свойствам и методам данного объекта относятся:
Свойство Описание Nan Содержит значение NaN (Not A Number). Infinity Содержит значение Number.POSITIVE_INFINITY. Метод Описание escape Преобразует строку таким образом, что она может читаться на всех платформах. eval Выполняет переданную ей строку так, как если бы это было обычное выражение JavaScript. isFinite Позволяет определить, является ли аргумент конечным числом. isNan Позволяет определить, является ли аргумент числом или нет. parseFloat Преобразует строку в число с плавающей точкой. parseInt Преобразует строку в целое число. unescape Преобразует результат функции escape.
Функции taint() и untaint() – при включенном защитном искажении данных возвращает искаженную копию значения объекта или ссылки либо, наоборот, неискаженную. Функции escape и unescape – возвращают копии строки s в закодированном и, соответственно, раскодированном виде. Кодировка – замена всех пробелов, знаков препинания и так далее в форму %xx, где xx – две 16-ричные цифры, соответствующие коду символа в ISO-8859-1(Latin-1) Функция eval(s) – интерпретирует строку s как последовательность операторов JavaScript. (См. Также объект Object) Функция getClass(Jobj) – возвращает объекты JavaClass для аргумента типа JavaObject Пример: var myJavaRClass=new java.awtRectangle() Var myJavaRClass=getClass(myJavaRect) Не путать с Java-методом getClass(): Var myJavaRCObject=myJavaRect.getClass() Это - Java-представление класса java.awt.Rectangle Функция isNaN(x) – проверка, является ли x “Not a Number”, то есть не числом. Функции parseFloat(s) – находит s число типа Float(от начала строки до первого символа, Не входящего в число). Если число не найдено, возвращает Значение NaN (“Not a Number”). parseInt(s) – то же для Integer parseInt(s,n) – то же для целых чисел по основанию n (от 2 до 36). При n=0 – то же, что parseInt(s). при этом автоматически находится основание
Функция eval(s) Функция eval(s) — встроенная функция JavaScript. Она выполняет код, заданный аргументом— строкой s, который может содержать один или более операторов JavaScript (через точки с запятой). Данную функцию можно использовать не только для выполнения оператора, но и для вычисления выражения. Она возвращает значение последнего вычисленного выражения в заданном коде. Функция eval(s) обеспечивает возможность динамически модифицировать выполняемый код в JavaScript-программе. Функция isNaN(x) Эта функция проверяет, является ли аргумент x "не-числом". Определяет, не является ли он зарезервированным значением NaN, которое представляет недопустимое число (например, результат деления нуля на нуль). Эта функция обязательна, потому что в JavaScript задать значение NaN как литерал невозможно. Она используется для проверки результатов выполнения parseFloat(s) и parseInt(s) (являются ли они допустимыми числами) и для проверки на предмет наличия арифметических ошибок, например, деления на нуль. Функция parseFloat (s) Выполняет синтаксический анализ и возвращает первое число, обнаруженное в строке s (т.е. преобразует строку в число). Анализ прекращается и значение возвращается, когда parseFloat(s) встречает в s символ, не являющийся допустимым элементом числа (т.е. знаком, цифрой, десятичной запятой, показателем степени и т.д.). Если с не начинается с числа, которое может распознать parseFloat(s), эта функция возвращает NaN. parseFloat(s) (s — строка, подлежащая синтаксическому анализу и преобразованию в число) Функция parseInt (s) parseInt(s) parseInt(s, основание) (s — строка, подлежащая синтаксическому анализу основание — целое основание подлежащего анализу числа). Данная функция преобразует строку в целое число. Синтаксический анализ прекращается и возвращается значение, когда parseInt(s) встречает в строковом выражении c символ, не являющийся допустимой цифрой для указанного основания системы счисления. Аналогично parseFloat, функция parseInt возвращает значение NaN, когда s не начинается с числа, которое она может распознать. Если основание задано как 10, то parseInt(s) анализирует строку на наличие десятичного числа. Значение 8 соответствует анализу на наличие восьмеричного числа (в этой системе используются цифры от 0 до 7). Значение 16 соответствует анализу на наличие шестнадцатеричного числа (используются цифры от 0 до 9 и буквы от A до F). Основание может быть любым числом от 2 до 36. Если основание равно нулю или опущено, то parseInt(s)пытается определить основание числа по содержимому самой строки. Если строка начинается с 0x, то функция анализирует остальную часть строки как шестнадцатеричное число. Если строка начинается с 0, то функция анализирует строку как восьмеричное число. 2. Класс Math Math — класс, содержащий константы (поля, доступные толькопо чтению) и методы. Они вызываются обычным для объектов образом: Math.константа Math.функция(i..) Константы класса Math E — число e (основание натуральных логарифмов) LN10 — натуральный логарифм 10 (число ln10) LN2 — натуральный логарифм 2 (число ln2) LOG10E — логарифм e по основанию 10 (число log10e) LOG2E — логарифм e по основанию 2 (число log2e) PI — константа p (число "пи") SQRT1_2 — число, обратное корню квадратному из 2 (число 1/Ö2) SQRT2 — корень квадратный из 2 (Ö2) Методы (функции) класса Math abs(x)(x — любое число или выражение) — вычисляет абсолютную величину acos(x) (x — число или выражение в интервале от -1.0 до 1.0 рад) — вычисляет аркко синус. Возвращаемое значение находится в интервале от 0 до p радиан asin(x) (x — число или выражение в интервале от -1.0 до 1.0 рад) — вычисляет арксинус, возвращает значение, находящееся в интервале от -p/2 до p/2 радиан atan(x) (x — число или выражение) — вычисляет арктангенс в радианах, возвращает значение, находящееся в интервале от -p/2 до p/2 радиан atan2(x,y)(x,y — координаты точки в прямоугольной системе координат) —вычисляет угол точки (x,y) в полярных координатах. Возвращаемое значение лежит в интервале от 0 до 2p радиан ceil(x) (x — любое число или числовое выражение) — округляет число в большую сторону до ближайшего целого (т.е. вычисляет наименьшее целое число ³x); отрицательные числа округляются в большую сторону (в направлении к нулю) cos(x) (x — угол в радианах) — вычисляет косинус; возвращаемое значение находится в интервале от -1.0 до 1.0 рад. Exp(x) (x — число или числовое выражение) — вычисляет экспоненту e Floor(x) (x —число или числовое выражение) — округляет число в меньшую сторону до ближайшего целого (т.е. вычисляет наибольшее целое число £x); например,floor(-1,1)равно (-2);floor(1,1)равно 1. Log(x) (x — положительное число или выражение) — вычисляет натуральный логарифм max (a,b) (a,b —числа или выражения)— возвращает большее из двух значений min(a,b) (a,b —числа или выражения) — возвращает меньшее из двух значений pow(x,y) — вычисляет x (возводит первый аргумент в степень) random — вычисляет псевдослучайное число в интервале от 0 до 1 round — округляет до ближайшего целого (round(15.5) дает 16, round(-15.5) дает -15) Math.round(x) (x — любое число или выражение) sin — вычисляет синус Math.sin(x) (x — угол в радианах) sqrt — вычисляет квадратный корень Math.sqrt(x) (x — любое число или выражение, которое больше или равно 0) tan — вычисляется тангенс Math.tan(x) (x — угол в радианах) Класс Date При отсутствии аргументов метод Date() создает объект Date, значением которого являются текущая дата и время. Аргументами метода Date() задается дата и (при необходимости) время для нового объекта. Объект Date встроен в JavaScritp и в HTML аналога не имеет. Большинство методов объекта Date вызываются через экземпляр этого объекта. Например: d=new Date() //получить сегодняшнюю дату и время system.write("Today is: "+d.toLocalString()); //и отобразить эту информацию Приведенный выше синтаксис создания объектов Date предполагает, что значения даты и времени задаются по местному времени. Если программа должна работать независимо от часового пояса, в котором находится пользователь, необходимо указать все даты по Гринвичу (GMT) или универсальному скоординированному времени (UTC). Чаще всего объект Date используется для вычитания значения текущего времени в миллисекундном формате из другого значения времени с целью определения разницы. Для того чтобы создать объект Date, можно воспользоваться одним из следующих пяти вариантов синтаксиса. В вариантах с третьего по пятый указанное время интерпретируется как местное (а не гринвичское). new Date(); new Date(миллисекунды) (число миллисекунд между датой и полуднем 1.01.1970 г.) new Date(строка_даты) (строка_даты = имя_месяца дд, гг [чч:мм[:сс]]) new Date(год, месяц, число) (год минус 1900; месяц 0-11; число 1-31) new Date(год, месяц, день, часы, минуты, секунды) (по 24-часовой системе) Методы класса Date. getDate() (возвращает число объекта Date в диапазоне от 1 до 31) getDay() (возвращает день недели объекта Date в диапазоне от 0 [воскресенье] до 6 [суббота]) getHours() (возвращает значение поля часов объекта Date в диапазоне от 0 [полночь] до 23) getMinutes() (возвращает значение поля минут объекта Date в диапазоне от 0 до 59) getMonth() (возвращает значение поля месяца объекта Date в диапазоне от 0 [январь] до 11 [декабрь]) getSeconds() (возвращает значение поля секунд объекта Date в диапазоне от 0 до 59) getTime() (возвращает внутреннее (в миллисекундах) представление объекта Date) getYear() (возвращает значение поля года объекта Date. Возвращаемое значение равно году минус 1900 (например, 1997-й выдается как 97) parse() (выполняет синтаксический анализ строкового представления даты и возвращает ее значение в миллисекундном формате) setDate() (устанавливает значение поля числа объекта Date) дата. setDate(число_месяца) //число_месяца равно 1-31 и т.д. toLocalString() (преобразует Date в строку, используя местный часовой пояс) UTC() (преобразует числовую спецификацию даты и времени в миллисекундный формат)
3. Класс Window Этот объект представляет окно или кадр Web-браузера. Так как код JavaScript интерпретируется в контексте объекта Window, в котором он выполняется, этот объект должен содержать ссылки на все прочие необходимые объекты JavaScript (т.е. он является корнем иерархии объектов JavaScript). Многие свойства объекта Window являются ссылками на другие важные объекты. В большинстве своем эти свойства относятся к объекту, соответствующему данному окну. Например, свойство location относится к объекту Location данного окна. Другие свойства Window (например, navigator — ссылка на объект Netscape, который относится к этому и всем остальным окнам) относятся к глобальным объектам, а два-три — только к самому окну. В пользовательском варианте JavaScript для обращения к объекту Window, никакой специальный синтаксис не нужен, и к свойствам этого объекта можно обращаться как к переменным (т.е. можно указать не окно. document, а просто document). Аналогичным образом методы объекта Window, который соответствует текущему окну, можно использовать как функции (например, alert() вместо окно. alert()). self текущее окно window текущее окно Обратиться к кадру в окне можно следующим образом: frame[ i ] (или self.frame[ i ]) окно. frame[ i ] Для обращения к родительскому окну данного кадра используются следующие варианты: parent (или self.parent, window.parent) окно. parent (родительское окно данного кадра) Если же мы хотим обратиться к окну браузера верхнего уровня из любого содержащегося в нем кадра, то используется: top (или self.top, window.top) Новые окна верхнего уровня создаются методом Window.open(). Когда пользователь вызывает этот метод, необходимо сохранить результат вызова open()в переменной и использовать эту переменную для обращения к новому окну. Открытие окна и динамическое формирование текста. Метод open отображает существующее окно или открывает новое. окно. open([URL, [ имя, [ характеристики ]]]) Если аргументом имя задается имя существующего окна, то возвращается ссылка на это окно. В окне, на которое указывает возвращенная ссылка, отображается документ, полученный по указанному URL, но характеристики игнорируются. Если URL — пустая строка, то открывается пустое окно. Если имя не относится к существующему окну, то этот аргумент задает имя нового окна. Используя имя в качестве значения атрибута target тега <a> или <form>, можно вывести документы в это окно. Характеристики — это список характеристик (через запятые), которые должны отображаться в окне. Если этот аргумент пуст или не задан, то в окне будут отображаться все характеристики. Эта строка не должна содержать пробелов. myWindow=window.open("myFile.html") Перечень характеристик: open("URL","windowName","toolbar=no,scrollbars=yes,resizable=yes") Логические параметры могут быть просто упомянуты, что эквивалентно установке yes или 1, либо установлены в no: toolbar=yes или no (либо1, либо0) - панель инструментов браузера, клавиши: "Back", "Forward" и т.д. location — поле ввода URL; directories — линейка клавиш "What's New", "What's Cool" и т.д. status — строка состояния снизу menubar — линейка меню сверху scrollbars — полоса прокрутки документа resizable — может ли меняться размер окна
Другие параметры: width= ширина окна в пикселях height= высота окна в пикселях Пример: function windowOpener() { MyWindow=window.open("","MyWindow","menubar=yes,location, status"); MyWindow.document.bgColor="aqua"; MyWindow.document.write("<head><title>MyWindow</title></head>"); MyWidow.document.write("<center><big><b>Hello,world!</b></big> </center>"); } Закрытие окна. window.close() или self.close() — закрытие текущего окна. Если это фрейм, то закрывается все родительское окно. Можно закрывать окно и по имени: MyWindow.close()
4. Коллекция фреймов (window.frames) Хотя на объект Frame иногда ссылаются, такого объекта, строго говоря нет. Все кадры в окне являются экземплярами объекта Window, содержат те же свойства и поддерживают те же методы и обработчики событий, что и объект Window. Однако, на практике между объектами Window, которые представляют кадры в окне верхнего уровня, и объектами Window, которые представляют кадры в окне браузера, есть несколько различий: Если для кадра установлено defaultStatus, то указанное сообщение о состоянии появляется только тогда, когда курсор мыши находится в этом кадре. Свойства top и parent окна браузера верхнего уровня относятся к самому окну верхнего уровня. Эти свойства по-настоящему полезны только для кадров. Метод close() для объектов Window, которые являются кадрами, ценности не представляют. окно. frames[ i ] окно. frames.length frames[ i ] frames.length Пример: <frameset rows=" высота1,высота2,..." cols=" ширина1,ширина2,..." > <frame src=" адрес_файла_для_фрейма " name=" имя_фрейма "> <frame src=" адрес_файла_для_фрейма2 " name=" имя_фрейма2 "> ........ </frameset> src — это строка с возможностью чтения и записи, в которой задается URL изображения, подлежащего выводу на экран. Размер фреймов по умолчанию в пикселях. Если в конце стоит % — то в % от общей высоты или ширины главного окна. URL фрейма не может содержать метки (#). Документ, загружаемый в окно фрейма, сам может содержать фреймы.
5. Класс Document (window.document) Экземпляр класса Document в поле document объекта window. Вызов: имя окна.document либо просто document (для текущего окна) Поля: alinkColor - см. соответствующий параметр HTML vlinkColor - то же; anchors[i] - массив объектов класса Anchor, по одному на контейнер <a…>…</a> anchors.length - длина этого массива (RO) applets[i] - массив апплетов (объектов Java) (по одному на контейнер <applet>…<1>) applets.length - длина этого массива (RO) bgColor - строка с заданием цвета фона fgColor - строка с заданием цвета текста документа domain - строка с именем домена, откуда поступил документ embeds[i] - массив Plug-In приложений (соответствующих контейнерам) <embed>…</embed>, по одному на контейнер) plugins[i] - то же (синоним) embeds.length - длина этого массива (RO) plugins.length - то же forms[i] - массив объектов Form(по одному на контейне<
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|