Главная :: Веб разработка :: Сценарии JavaScript с описаниями :: Скрипт "конвертер температуры"
Хмурое утро, жена выгоняет интернетчика погулять с собакой. Он долго бродит с ней, потом поднимает палку, кидает ее и командует: - Э-э-э, Яндекс! То есть, Рамблер!! Тьфу, апорт!!!

Скрипт "конвертер температуры"

Данный сценарий позволяет переводить температуру из одной системы измерений в другую с заданной точностью. Обрабатывается три типа температур: градусы Цельсия, градусы Кельвина и градусы Фаренгейта.

Описание скрипта

Наша цель - написать скрипт для перевода температуры из одной системы измерений в другую. Скрипт будет конвертировать между тремя основными системами измерения температуры: градусы Цельсия, градусы Кельвина и градусы Фаренгейта. Все расчеты мы будем проводить с заданной нами точностью. Описываем поля формы input (по умолчанию это текстовые поля) c именами precision, celsius, kelvin, fahrengeit. Для поля precision (точность расчета) зададим начальное значение 8 (число значащих цифр). Выравнивание полей формы достигается с помощью элемента pre (конечно, можно использовать и другие методы, например, поместить поля формы в ячейки таблицы).

При вводе значений все поля формы обновляются автоматически, т.к. обработка осуществляется через событие onKeyUp (нажатие клавиши клавиатуры). При возникновении этого события вызывается функция UpdateF с параметром. Этот параметр определяет какие действия следует предпринять для обработки полей формы.

В функции UpdateF определяется значение для точности p и определяются переменные для доступа к полям формы, отвечающим за температуру (переменные c, k, f). Действие определяется значением переданного в функцию параметра n. Для n=0 происходит перезапись данных для заданной точности с помощью метода toPrecision. Значения n от 1 до 3 определяют текущий тип температуры и расчет производится для двух остальных типов.

Код скрипта

Скрипт обрабатывает следующую форму:

<form name="converter">
<pre>
 Число значащих цифр:  <input name="precision" value="8" maxlength="12" onKeyUp="UpdateF(0)">
 Цельсии:              <input name="celsius" maxlength="12" onKeyUp="UpdateF(1)">
 Кельвин:              <input name="kelvin" maxlength="12" onKeyUp="UpdateF(2)">
 Фаренгейт:            <input name="fahrengeit" maxlength="12" onKeyUp="UpdateF(3)">
</pre>
</form>

И сам скрипт:

<script language="javascript">
<!--
function UpdateF(n)
{
var p = eval(window.document.converter.precision.value);
var c = window.document.converter.celsius;
var k = window.document.converter.kelvin;
var f = window.document.converter.fahrengeit;

if ( n == 0) {
	if (c.value) c.value = eval(c.value).toPrecision(p);
	if (k.value) k.value = eval(k.value).toPrecision(p);
	if (f.value) f.value = eval(f.value).toPrecision(p);
};
if ( n == 1 ) {
	k.value = (eval(c.value) + 273.15).toPrecision(p);
	f.value = (1.8 * eval(c.value) + 32).toPrecision(p);

};
if ( n == 2 ) {
	c.value = (eval(k.value) - 273.15).toPrecision(p);
	f.value = (1.8 * (eval(k.value)) - 459.67).toPrecision(p);

};
if ( n == 3 ) {
	c.value = ( (eval(f.value) - 32) / 1.8 ).toPrecision(p);
	k.value = ( (eval(f.value) + 459.67) / 1.8).toPrecision(p);

};
}
-->
<script>

Пример выполнения скрипта

 Число значащих цифр:  
 Цельсии:              
 Кельвин:              
 Фаренгейт: