Пусть строка «отскакивает» от границ, двигаясь то справа налево, то слева направо. Ну, типа бьётся: «бумс-бумс-бумс».
В ECMAScript можно легко обратиться к любому элементу Веб-страницы и узнать или изменить его характеристики. Любой элемент является частью DOM.
Элементу, к которому мы обращаемся, должен быть дан идентификатор — уникальное имя. Теперь мы сможем обращаться к элементу по идентификатору с помощью метода «document.getElementById()».
Например, мы можем обратиться к определённому абзацу с помощью кода, приведённого ниже:
<p id="paragraph-1">Lorem ipsum.</p>
<script type="text/javascript">
document.getElementById('paragraph-1');
</script>
Итак, код, приведённый выше, позволяет обратится к абзацу с текстом «Lorem ipsum» и каким-то образом проанализировать или изменить его. Например, мы можем сменить цвета и шрифты, выравнивание текста и расположение самого абзаца на странице. Как? Расскажу через несколько секунд.
Итак, дав элементу идентификатор, мы можем обращаться к нему из сценария.
Обратившись к любоу элементу, мы можем изменить свойства его объекта style. Тут проще сначала показать на примере, а лишь потом возводить теоритический базис. Итак, пример.
<p id="paragraph-1">Lorem ipsum.</p>
Вот как будет выглядеть приведённый код в обозревателе:
Lorem ipsum.
Определив
абзац, обратимся к нему.
document.getElementById('paragraph-1').style.color = 'red'; // Меняем цвет на красный.
document.getElementById('paragraph-1').style.fontWeight = 'bold'; // Увеличиваем насыщенность.
document.getElementById('paragraph-1').style.textDecoration = 'line-through'; // Перечёркиваем текст.
document.getElementById('paragraph-1').style.border = '3px double gray'; // Берём абзац в рамку.
Вы можете посмотреть, как же выполнится приведённый код.
document.getElementById('paragraph-1').style.backgroundColor = '#ffc068'; // Меняем цвет на красный.
document.getElementById('paragraph-1').style.borderColor = 'gray'; // Увеличиваем насыщенность.
document.getElementById('paragraph-1').style.textTransform = 'uppercase'; // Перечёркиваем текст.
document.getElementById('paragraph-1').style.letterSpacing = '0.25em'; // Берём абзац в рамку.
Вы можете посмотреть, как же выполнится приведённый код.
Не заметили изменений? Обновите страницу и вернитесь к абзацу paragraph-1, после чего выполните код ещё раз.
Мы можем изменить любое свойство CSS любого элемента в сценарии ECMAScript. Необходимо лишь дать элементу идентификатор.
Замечание. Свойства, которые записывались в CSS через дефис, в DOM пишутся слитно, причём каждое последующее слово записывается с прописной буквы. Например, свойство border-left-color в DOM записывается как «элемент.style.borderLeftColor». Все значения необходимо записывать в кавычках (как строковые литералы), например «элемент.style.borderWidth = '12px';».
Если мы будем периодически менять оформление элемента, он будет мигать.
<div id="paragraph-2" style="text-align: center;">Lorem ipsum.</div>
Вот как будет выглядеть приведённый код в обозревателе:
Lorem ipsum.
Обратимся к вновь созданному делению.
function blink() { // Меняем цвет на красный.
if (document.getElementById('paragraph-2').style.color == '#ffbb00') { // Текст — оранжевый?
document.getElementById('paragraph-2').style.color = 'black'; // Меняем цвет текста на чёрный.
document.getElementById('paragraph-2').style.backgroundColor = '#ffbb00'; // Меняем цвет фона на оранжевый.
Создать бегущую строку совсем не сложно. Ведь если мы будем дописывать слева от строки пробелы, то визуально строка начнёт сдвигаться вправо. Итак, создадим небольшую функцию и запустим её через небольшой интервал.
status = 'Текст строки состояния'; // Записываем текст в строку состояния.
function move2Left() { // Объявляем функцию.
status = ' ' + status; // Сдвигаем текст вправо.
}
setInterval(move2Left, 100); // Запускаем интервал.
Вы можете посмотреть, как же выполнится приведённый код.
Что, опять не видно строки состояния? Пожалуйста, открывайте уроки по ECMAScript в отдельном окне2.
Но что происходит? Наша строка «убегает» за пределы видимости! Не порядок!
Итак, нам нужно остановить перемещение строки когда её размер превосходит «допустимые нормы». Для этого сохраним наш интервал в переменной, и после отменим его методом «clearInteval(кодТаймера)».
А в функции будем проверять, не превышает ли длина строки (свойство «'строка'.length») 50 символов («if (status.length > 50)»). Если условие выполнится, прервём интервал. Да, перед тем, как смотреть на выполнение последующего кода, обновите страницу.
status = 'Текст строки состояния'; // Записываем текст в строку состояния.
function move2Left() { // Объявляем функцию.
status = ' ' + status; // Сдвигаем текст вправо.
if (status.length > 50) // Проверяем длину строки.
clearInterval(statusBarTimer); // Отменяем интервал.
}
var statusBarTimer = setInterval(move2Left, 100); // Сохраняем интервал в переменной.
Вы можете посмотреть, как же выполнится приведённый код.
Итак, у нас появилась «бегущая» строка. Правда, бегает она на «привязи» в 50 символов.
Ну что, для движения слева направо мы дописывали пробелы. Для движения в противоположную сторону, естественно, следует их убирать. Это не на много сложнее.
Давайте посмотрим на «сдвинутую» строку. Она начинается с пробелов. Если мы один из них уберём, строка сдвинется влево.
Метод «'строка'.indexOf('подстрока')» позволяет узнать, с какой позиции искомая подстрока встречается в указанной строке. Он возвращает номер символа, с которого начинается первое вхождение, если оно есть, или -1, если подстрока не встречается ни разу. Да, как всегда, считаем от нуля.
Метод «'строка'.substring(позиция)» возвращает подстроку, начинающуюся с указанной позиции, и до конца строки. Другими словами, этот метод позволяет откинуть первые символы строки.
Сведя воедино предыдущие абзацы (вернее, мысли, высказанные в них), получим вот такой код:
status = ' Текст строки состояния'; // Записываем текст в строку состояния.
function move2Right() { // Объявляем функцию.
if (status.indexOf(' ') == 0) // Нулевой символ — пробел?.
status = status.substring(1); // Откидываем нулевой символ.
else
clearInterval(statusBarTimer); // Отменяем интервал.
}
var statusBarTimer = setInterval(move2Right, 100); // Сохраняем интервал в переменной.
Вы можете посмотреть, как же выполнится приведённый код.
Вот и всё. Мы реализовали движение справа налево.
} else {
document.getElementById('paragraph-2').style.color = '#ffbb00'; // Меняем цвет текста на оранжевый.
document.getElementById('paragraph-2').style.backgroundColor = 'black'; // Меняем цвет фона на чёрный.
}
}
setInterval(blink, 750); // Запускаем функцию.
Вы можете посмотреть, как же выполнится приведённый код.
Теперь деление выше мигает.
В ECMAScript существует специальный объект «Math», в котором собраны основные математические функции и константы. В таблицах ниже приведён список всех его методов и свойств.
В свойствах объекта Math представлены наиболее распространённые математические константы.
Свойство |
Описание |
E |
Эйлерова константа (основание натурального логарифма); e≈2,718. |
LN2 |
Натуральный логарифм 2; ln 2≈0,693. |
LN10 |
Натуральный логарифм 10; ln 10≈2,302. |
LOG2E |
Логарифм e по основанию 2; lg2e≈1,442. |
LOG10E |
Логарифм e по основанию 10; lg10e≈0,434. |
PI |
Отношение диаметра к длине окружности; π≈3,142. |
SQRT1_2 |
Квадратный корень из ½; √½≈0,707 |
SQRT2 |
Квадратный корень из 2; √2≈1,414 |
Методы объекта Math позволяют выполнять простейшие (для высшей математики, разумеется) вычисления над числами.
Метод |
Описание |
abs(число) |
Возвращает модуль (абсолютную величину) числа. |
acos(число) |
Возвращает арккосинус числа. |
asin(число) |
Возвращает арксинус числа. |
atan(x, y) |
Возвращает арктангенс числа. |
atan2(x, y) |
Возвращает угол полярных координат в радианах от оси ординат до точки (x, y) декартовых координат. |
ceil(число) |
Производит округление в большую сторону, то есть возвращает наименьшее целое число, большее либо равное аргументу. |
cos(число) |
Возвращает косинус числа. |
exp(число) |
Возводит число e (основание натурального логарифма) в указанную степень. |
floor(число) |
Производит округление в меньшую сторону, то есть возвращает наибольшее целое число, меньшее либо равное аргументу. |
log(число) |
Возвращает натуральный логарифм числа. |
max(число1, число2) |
Возвращает большее из двух чисел. |
min(число1, число2) |
Возвращает меньшее из двух чисел. |
pow(основание, степень) |
Возвращает результат возведения основания в указанную степень. Например, Math.pow(5, 3) вернёт 53=125. |
random() |
Возвращает псевдослучайное число в диапазоне от 0 до 1. |
round(число) |
Округляет указанный аргумент до целочисленного значения. |
sin(число) |
Возвращает синус числа. |
sqrt(число) |
Возвращает квадратный корень из числа. Для вычисления корня из 2х и ½ используйте специальные свойства. |
tan(число) |
Возвращает тангенс числа. |
Например, код ниже выведет √π.
alert(Math.sqrt(Math.PI)); // Выводим √π.
Вы можете посмотреть, как же выполнится приведённый код.