Для того чтобы программа на этом языке была правильно воспринята, необходимо указать, что это JavaScript. Делается это двумя способами. Либо указанием внешнего файла
<script type="text/javascript" src="term_opred.js"></script>
либо внутри страницы HTML:
<script language="javascript">a = 5;</script>
Переменные в данном языке задаются простым указанием. Например, таким:
var orange = "Апельсин"; - текстовая переменная. Эта переменная объявлена элементом var.
one = "1"; - тоже текстовая переменная но не объявлена, при этом сохраняет работоспособность.
one = 1; - числовое значение, не объявленное заранее
Существуют глобальные и локальные типы переменных. Локальные объявляются элементом var В этом случае переменная «видна» только в коде отдельной программы, если файл является внешним, или внутри функции или другого оператора, который содержит в себе некий алгоритм действий с ней связанный. Глобальная же переменная видна из всех частей программы, в том числе и функций. Она объявляется простым указанием имени переменной и его значения, т.е. one = "1"; - это и есть глобальная переменная.
|
|
Следует заметить, что все переменные, выражения, значения массивов и функций заканчиваются точкой с запятой «;». Если её нет хотя бы в одном месте, то вся программа не выполнится. А с учетом того, что отладчика для такого языка не предусмотрено, то искать ощибку весьма проблематично.
Как можно заметить, переменные необязательно объявлять и явно указывать их тип. Данный язык может интерпритировать сам тип переменной.
В языке можно вести действия как с текстовыми там и числовыми значениями. При этом дробные числа записываются не через запятую, а точку, т.е. 5.3 и т.п.
Если приложение представляет собой огромный набор операторов, необходимы комментарии (пояснение к отдельной части программы). В JavaScript комментарии могут записываться следующими способами: // "пояснения" (этот способ позволяет создать комментарий только на одной строке) и /* "пояснения" */ (этот способ предпочтительнее предыдущего тем, что позволяет писать несколько строк комментария).
Над переменными можно совершать некие действия. Начиная от сложения, вычитания, умножения, деления, до замены символов в строке при помощи специальных операторов.
Действия можно условно разделить на три категории: действия над текстовыми переменными, числовыми и массивами.
Текстовые переменные можно «складывать» между собой и изменять операторами, о которых будет сказано чуть позже. Так будет выглядеть сложение строки:
a = "Привет";
b = "мир!";
с = a + b + "!";
В этом случае результатом действий будет таким: Приветмир!! Обратите внимание, что между словами нет пробела. Это можно исправить двумя путями:
|
|
с = a + " " + b + "!";
или
a = "Привет";
b = " мир!";
с = a + b + "!";
Над числами можно совершать различные арифметические действия:
сложение - + вычитание - -, умножение - *, деление - /.
В случае, если необходимо округлить число существует оператор округления. Его синтаксис таков:
0.1234.toFixed(2) = 0.12
Обратите внимание на точку между числом и toFixed(). Это означает, что над переменной или числом выполняется некое действие, в данном случае округление до 2-го знака после запятой.
Массивы рассмотрим немного позже, так как они имеют ряд больших отличий от простых переменных.
Вывод на экран в языке JavaScript осуществляется при помощи операторов
document.writeln(); - вывыод на экран виде обычного текста
и
alert(); - вывод значения в дополнительном окне программы браузера
Если необходимо вывести на экран текст, графику или что-то другое напрямую, без обработки, то код можно будет применить такой:
document.writeln("Привет мир!"); и alert("Привет мир!");
Но возмоден вариант и когда, вывод происходит значения переменной, в этом случае кавычки не устанавливаются, а просто указывается имя переменной. Однако. стоит заметить, что переменная должна быть объявлена до вывода на экран, а не после, иначе программа не будет выполняться.
а = "Привет мир!";
document.writeln(a); и alert(a);
Переменные можно сравнивать, для этой цели существуют различные операторы сравнения. Их общий синтаксис таков:
if (условие)
{
действия в случае выполнения условия
}
else
{
действия в случае не выполнения условия
}
Условия выполняются как с текстовыми так и с числовыми значениями. Для этих действий предусмотрены операторы сравнений, а также логические операторы.
Операторы сравнения выполняют непосредственное сравнение одного значения с другим. Они бывают следующих видов:
== | если операнды равны. |
!= | если операнды не равны. |
=== | если операнды равны и одного типа. |
!== | если операнды не равны и/или не одного типа. |
> | если левый операнд больше правого. |
>= | если левый операнд больше правого или равен ему. |
< | если левый операнд меньше. |
<= | если левый операнд меньше правого или равен ему. |
Для того, что бы получить результат сравнения не нужно указывать, что именно возвратит данная операция, просто в зависимости от сравнения, выполнится тот или иной блок кода. Однако, если по результатам проверки, нужно точно, что именно возвращает данное сравнение. то следует помнить следующее: если условие выполняется, то операция возвращает true, в противном случае – false.
Очень часто при сравнениях необходимо выполнение не одного, а много числа условий. Для этой цели применяются логические операторы. Они имеют следующий вид:
&& | Логическое И |
|| | Логическое ИЛИ |
! | Логическое НЕ |
Пример 1:
a = "Деньги есть";
b = "Денег нет";
if ("Деньги есть" == a)
{ alert("Идем в магазин"); }
else { alert("Не идем в магазин"); }
В этом примере выведится на экран «Идем в магазин», так как переменная точно совпадает со значением текста условия. Однако, в следующем примере
Пример 2:
a = "Деньги есть";
b = "Денег нет";
if ("Деньги есть" == b)
{ alert("Идем в магазин"); }
else { alert("Не идем в магазин"); }
на экране появится «Не идем в магазин», так как переменная не содержит искомого значения.
Следует отметить также, то что большое значение имеет регистр букв в текстовых переменных, так если он не совпадает с регистром букв в условии сравнения, то сравнение так же выведит «Не идем в магазин»
Пример 3:
a = "Деньги есть";
b = "Денег нет";
|
|
c = "Магазин закрыт";
if ("Деньги есть" == a && c!= "Магазин закрыт")
{ alert("Идем в магазин"); }
else { alert("Не идем в магазин"); }
Здесь выполнится первое условие, так как оба условия совпадают, однако, если в условии будет указано: "Деньги есть" == a && c == "Магазин закрыт", то выполнится второе условие, так как второй элемент сравнения вернёт сообщение о ложности утверждения.
Сравнение можно делать не раз с одной и той же переменной, при этом вполне допустима такая запись:
Пример 4:
a = "10";
b = -1;
if (a == "")
{ c = "А не является пустым значением"; }
else { с = "Является числом, однако записано, как текстовая переменная"; }
if (a!= "" && b == 1)
{ c = a*b; }
if (b!= "" && a == 1)
{ c = a*b; }
document.writeln(c);
В этом примере значение перемсенной С будет равно -10, так как удовлетворилось одно из условий, в частности предпоследнее. Здесь стоит отметить, что элемент else фигурирует только раз, после первого сравнения. Такая запись допустима. Однако не допустимо, отсутствие else, или его наличие в самом конце всех сравнений. В первом случае программа не будет выполняться, так как нет обязательного тега при работе с оператором сравнения (if else), а во втором – потому что всегда будет выполняться условие else. Связано последнее с тем, что else хоть раз, но по синтаксису сравнений должен выпониться, в итоге он выполняется, и присваевает переменной свое неверное значение, и так как был последним, то и его результат будет окончательным в этой операции.
В случае же, если else стоит именно за первым сравнением, то, если после этого сравнения были другие, содержащие условия, которые не выполняются, то верным будет, то, что выполнилось (было подтверждено) последним. А если и среди них не было совпадений условий, то значение выполняется else.
Функции
Функция – это набор алгоритмических действий, содержащийся в одном, замкнутом объекте.
Синтаксис ее такой:
function имя(переменная1,переменная2)
{ алгоритм }
Следует отметить, что переменные могут как явно указыватьсмя при создании функции так и не указываться вовсе. Функция сама по себе не начнет функционировать, её нужно запустить, причем делать этот много раз из различных мест документа.
|
|
Кроме того, если в функции есть несколько переменных и действий над ними, то следует указать, какую переменную должна вернуть функция. Делается это при помощи оператора returt. Он употребляется только при работе с функциями. Для того чтобы вывести на экран результат, необходимо указать имя функции в операторе вывода. Имя это не только название, но и «()», поэтому в общем виде код будет выглядеть следующим образом:
Пример:
function umnojenie()
{
a = 5;
b = 2;
c = a*b;
return c;
}
document.writeln(umnojenie());
Результатом данного примера станет число 10. Однако, универсальностью данная функция не отличается. Так в случае умножения других двух чисел, необходимо писать новую функцию. Поэтому, существуют различные методы, позволяющие передавать значения переменных в функцию. При этом синтаксис выражения изменится на следующий:
Пример:
function umnojenie(a, b)
{
c = a*b;
return c;
}
document.writeln(umnojenie(10, 2) + "" + umnojenie(20, 2));
Здесь в имени функции идет точное указание имен переменных, которые передаются в функцию. А в моменты вывода функции на экран указываются их значения. В результате, будут выведены числа 20 и 40.
Вывод или запуск функции, может быть, осуществим через ссылку, однако здесь будет задействован обработчик событий. Выглядеть строка станет следующим образом:
<a href='#' onclick=" umnojenie(10, 2)">
<a href='javascript:void(0)' onclick=" umnojenie(10, 2)">
<a href='javascript: umnojenie(10, 2)' onclick="return false">
<a href='javascript: umnojenie(10, 2)'>
Все 4 варианта вызова функции через ссылку будут верными.
Обработчиков событий огромное количество. Поэтому рассматривать их всех не имеет смысла. Среди самых часто использующихся выделяют следующие:
onClick - Выполняет код JavaScript, когда возникает событие click; то есть, когда сделан щелчок по объекту или форме. (Событие click является комбинацией событий MouseDown и MouseUp).
onLoad - Выполняет код JavaScript при возникновении события load; то есть, когда браузер закончил загрузку окна или всех фрэймов тэга FRAMESET. Используйте обработчик onLoad в тэге BODY или FRAMESET, например, < BODY onLoad="...">.
Для тэгов FRAMESET и FRAME: событие обработчика onLoad во фрэйме (помещённого в тэг BODY) возникает до onLoad тэга FRAMESET (помещённого в тэг FRAMESET).
Для изображений обработчик onLoad указывает скрипт, исполняемый при выводе изображения. Не путайте вывод изображения с загрузкой изображения. Вы можете загрузить несколько изображений, затем вывести их поочерёдно в одном и том же объекте Image путём установки свойства src объекта. Если Вы изменяете изображение, выводимое таким образом, onLoad выполняется каждый раз при выводе изображения, а не только при загрузке изображений в память.
Если Вы специфицируете обработчик onLoad для объекта Image, который выводит циклическую GIF-анимацию (multi-image GIF), каждый цикл анимации включает обработчик onLoad, и обработчик выполняется однократно для каждого цикла.
Можно использовать обработчик onLoad для создания анимации JavaScript путём повторяющейся установки свойства src объекта Image.
Пример:
<BODY onLoad="window.alert("Welcome to the Brave New World home page!")>
onMouseOut - Выполняет код JavaScript, когда возникает событие MouseOut; то есть каждый раз выходе указателя мыши за пределы области (в клиентской карте изображений) или гиперссылки.
В IE5.5 существует дублирующее события onMouseLeave, которое запускается непосредственно после даннго.
Следует заметить, что событие иногда не запускается.
onMouseOver - Выполняет код JavaScript, когда возникает событие MouseOver; то есть всякий раз при проведении указателя мыши над объектом или областью. Если мышь проводится из одной области клиентской карты изображений в другую, Вы получите onMouseOut для первой области, а затем onMouseOver - для второй области.
Функция может запускать другие функции, в том числе, не содержащиеся в ее теле. Это очень помагает при решении проблем, связанных с запуском двух действий одновременно по нажатию на одну ссылку.
Очень важным во всем JavaScript является то, что он способен влиять на свойства объектов и обращаться к элементам по индентификатору ID, а так же напрямую считывать показатели пользовательской системы, в том числе разрешения, времени, версии браузера и другого.
Для этого в нем предусморена объектная модель. Например, для того чтобы функция могла поместить любое значение в элемент WEB-страницы, имеющей определенный ID нужно применить следующую строку:
document.getElementById(' ID ').innerHTML = 'Я новый текст в строке.';
Модель состоит из обращения к некоему первому элементу страницы, это почти всегда document, затем оператор, означающий сложение элементов в единую модель, т.е. «.». Затем вызов специального оператора отправки информации методом get. В нем же указывается, в какой элемент происходит запись ElementById, в данном случае id, а в скобках указывается имя индентификатора, затем идет команда перезаписать содержимое у этого элемента и вставить значение, идущее следом, после знака равно.
Массивы
Как и большинство языков программирования, JavaScript предоставляет средство для работы с формализованными данными большого объема - массивы. Массив - это список переменных, к каждой из которых можно получить доступ по её номеру. Массив создаётся следующим образом:
// создание пустого массива
// задание значений первых двух элементов
var myArray = new Array()
myArray[0] = 'Москва'
myArray[1] = 'Хабаровск'
// создание нового массива
// и резервирование места для
// 100 переменных
var myArray = new Array(100)
// создание нового массива
// и явная инициализация первого элемента
var myArray = new Array('Элемент');
// косвенное создание массива
// из двух элменетов
var myArray = ['первый элемент', 'второй элемент']
Все массивы, независимо от способа создания, представляют собой экземпляры класса (объекта) Array. Добавление элементов производится простой инициализацией соответствующего элемента.
var myArray = new Array()
myArray[0] = 'Питер'
Массивы в JavaScript не обязательно должны быть "сплошными", т.е. содержать все элементы. При необходимости можно создавать так называемые "разреженные" массивы:
var myArray = new Array();
myArray[0] = 'Питер'
// пропустим myArray[1]
myArray[2] = 'Гомель'
// пропустим myArray[3]
myArray[4] = 'Рязань'
myArray[5] = 'Псков'
for(i = 0; i < 6; i++)
alert(myArray[i])
Этот код создаёт массив и заполняет только необходимые элементы. Теперь если мы попробуем получить значение не инициализированного элемента (в примере это первый и третий), то получим "undefined". Использование разреженных массивов иногда очень удобно, но требует опыта и внимательности, поэтому на начальном этапе лучше от них отказаться. Кроме того, разреженные массивы не дают выгоды по использованию памяти, т.к. место резервируется для всех элементов, в том числе не инициализированных.
Элементами массива могут быть переменные любого типа. Интересная особенность JavaScript - массив может одновременно содержать элементы различных типов, в том числе массивы:
//
// массив с элементами разных типов
//
var myArrayS = new Array();
myArrayS[0] = 'Ярославль';
myArrayS[1] = 10000;
myArrayS[2] = 'Ямал';
myArrayS[3] = 5000;
for(i = 0; i < myArrayS.length; i += 2)
alert('Город: ' + myArrayS[i] + '\n' +
'Население: ' + myArrayS[i + 1] + '\n')
//
// массив с элементами-массивами
//
var myArrayA = new Array()
myArrayA[0] = new Array('Ярославль', 10000);
myArrayA[1] = new Array('Ставрополь', 5000);
for(i = 0; i < myArrayA.length; i++)
alert('Город: ' + myArrayA[i][0] + '\n' +
'Население: ' + myArrayA[i][1] + '\n')
Класс Array содержит единственное свойство - length, позволяющее узнать текущую длину массива:
var myArray = new Array();
// узнать колиекчтво элементов