Представляю Вашему вниманию двадцать седьмой выпуск информационной рассылки сайта
"Свободное и бесплатное ПО".
В этом выпуске мы продолжим серию уроков, посвященных JavaScript.
Новости наших проектов. Мы начали объединение с сайтом Свободное и бесплатное ПО. Целью объединения является полная переработка материалов сайта Веб дизайн в примерах на современном и профессиональном уровне и добавление новых материалов. Если у вас есть вопросы, задавайте их на нашем форуме.
Новости ПО. Тестировать работу веб-страниц и скриптов на корректность работы необходимо в различных браузерах. Вы можете бесплатно загрузить новые версии браузеров: Mozilla Firefox (версии 3.0.7 и 3.1 beta-3) и Opera (версия 9.64).
Напишем сценарий JavaScript для решения квадратного уравнения.
Для начала подготовим форму.
<divalign="center">
<b>Решение квадратного уравнения a·x² + b·x + c = 0.</b>
<formname="square" action="javascript:square_equation()">
a <inputname="square_a" type="text" value="1" size="4">
b <inputname="square_b" type="text" value="2" size="4">
c <inputname="square_c" type="text" value="1" size="4">
<inputtype="submit" value="посчитать">
</form>
Решение: <spanid="square_sol">Введите коэффициенты и нажмите "посчитать"</span>
</div>
Мы задаем имя формы name="square" и обработчик формы (сценарий JavaScript) action="javascript:square_equation()". Далее идут три поля вода текста input...type="text" и кнопка, запускающая обработчик формы inputtype="submit". Результат будет записываться в
контейнер span, идущий сразу же за формой. Обратите внимание на то, что для элементов формы мы задаем имя (и в скрипте будем обращаться к ним через их имена), а контейнер вне формы задан через ID (и обращаться к нему будем через getElementById).
Описание скрипта
<scriptlanguage="javascript">
<!--
function square_equation() {
var a = document.square.square_a.value;
var b = document.square.square_b.value;
var c = document.square.square_c.value;
var sol = document.getElementById("square_sol");
var d = b * b - 4 * a * c;
if ( d < 0 ) {
string = "пара комплексно-сопряженных корней<br>x<sub>1</sub> = (";
string += - b / ( 2 * a );
string += ", ";
string += Math.sqrt( -d ) / ( 2 * a );
string += "), x<sub>2</sub> = (";
string += - b / ( 2 * a);
string += ", ";
string += - Math.sqrt( -d ) / ( 2 * a );
string += ").";
} else {
if ( d == 0 ) {
string = "два одинаковых вещественных корня:<br>x<sub>1</sub> = x<sub>2</sub> = ";
string += -b / ( 2 * a );
string += ".";
} else {
string = "два различных вещественных корня:<br>x<sub>1</sub> = ";
string += -b / ( 2 * a ) - Math.sqrt( d ) / ( 2 * a );
string += ", x<sub>2</sub> = ";
string += -b / ( 2 * a ) + Math.sqrt( d ) / ( 2 * a );
string += ".";
}
}
sol.innerHTML = string;
}
-->
</script>
Получение значения из полей ввода текста формы осуществляется конструкцией вида:
var переменная = document.имя_формы.имя_поля.value;
в примере:
var a = document.square.square_a.value;
Связывание элемента, заданного через ID:
var переменная = document.getElementById("ID_элемента");
в примере:
var sol = document.getElementById("square_sol");
А доступ к изменению содержимого:
переменная.innerHTML = значение;
в примере:
sol.innerHTML = string;
Отметим структуру использованной конструкции для вложенного условного оператора (серыми линиями отмечены структурные блоки):
Данный сценарий позволяет переводить температуру из одной системы измерений в другую с заданной точностью. Обрабатывается три типа температур: градусы Цельсия, градусы Кельвина и градусы Фаренгейта.
Описание скрипта
Наша цель - написать скрипт для перевода температуры из одной системы измерений в другую.
Скрипт будет конвертировать между тремя основными системами измерения температуры: градусы Цельсия,
градусы Кельвина и градусы Фаренгейта. Все расчеты мы будем проводить с заданной нами точностью.
Описываем поля формы input (по умолчанию это текстовые поля) c именами precision, celsius, kelvin, fahrengeit. Для поля
precision (точность расчета) зададим начальное значение 8 (число значащих цифр).
Выравнивание полей формы достигается с помощью элемента pre (конечно, можно использовать и другие методы, например,
поместить поля формы в ячейки таблицы).
При вводе значений все поля формы обновляются автоматически, т.к. обработка осуществляется через событие onKeyUp
(нажатие клавиши клавиатуры). При возникновении этого события вызывается функция UpdateF с параметром. Этот параметр
определяет какие действия следует предпринять для обработки полей формы.
В функции UpdateF определяется значение для точности p и определяются переменные для доступа к полям формы,
отвечающим за температуру (переменные c, k, f). Действие определяется значением переданного в функцию параметра n.
Для n=0 происходит перезапись данных для заданной точности с помощью метода toPrecision. Значения n от 1 до 3
определяют текущий тип температуры и расчет производится для двух остальных типов.