JavaScript » JavaScript выводит случайную фразу


9 июля 2008 от admin
Частенько хочется "оживить" статический сайт - допустим создать блок, выводящий случайную фразу (например случайный анекдот для развлекательного сайта или случайный совет для познавательного). Любой серверный язык позволяет создать мощный и гибкий рандомайзер, но если сайт может находиться на бесплатном хостинге без поддержки Perl или PHP...
Знакомая ситуация? Для таких хостингов выбор по сути, один - только JavaScript.

Итак, нам нужен небольшой JavaScript, который должен:
- Хранить список текстовых строк массиве;
- Методом Math.random получить случайное число;
- Конвертировать полученное число в целое, поскольку Math.random выдает число в диапазоне от 0,0 до 1,0;
- Получить элемент массива, соответствующий конвентируемому числу;
- Вывести полученный текст с помощью document.write () или JavaScript alert ();

Создаем массив
var r_text = new Array ();
r_text[0] = "Нравственность крепнет, когда дряхлеет плоть.";
r_text[1] = "Целомудренна та, которую никто не пожелал.";
r_text[2] = "Лучше когда тебя потом простят, чем не заметят.";
r_text[3] = "Хороший поцелуй стоит еще одного.";
r_text[4] = "Один хороший поворот приносит большую часть одеяла.";
r_text[5] = "Любовь, деньги и заботы скрыть невозможно. ";
r_text[6] = "Из близких отношений происходят дети.";
Цитаты из законов Мэрфи об отношениях мужчин и женщин я использую только для примера, вы можете заменить их на любые другие фразы. Не забываем, что массив индексируются нуля. Поскольку наш массив r_text состоит из семи элементов, нам нужно целое число от 0 до 6.

Получаем случайное число
var i = Math.random();

Переменная i в настоящее время содержит дробное число от 0 до 1. Мы должны превратить его в целое от 0 до 6, чтобы его можно было использовать в качестве индекса для получения строки из массива r_text.
i = 7 * i;
i = Math.floor(i);

Выводим текст

Отображать текст с помощью метода document.write ():
document.write(r_text[i]);

Вроде бы все работает - вы сами можете убедиться в этом, разместив вышеприведенный код между тегами
<script></script>

Но программисты считают, что не существует ни одной программы, которую нельзя уменьшить хотя бы на один оператор. И действительно, содержащую случайное число переменную i, которую мы получаем аж тремя строками можно запросто описать одной строкой:
var i = Math.floor(7*Math.random())

Оценить работающий скрипт можно здесь, а скачать готовый исходник можно отсюда.