Данный сценарий позволяет переводить температуру из одной системы измерений в другую с заданной точностью. Обрабатывается три типа температур: градусы Цельсия, градусы Кельвина и градусы Фаренгейта.
Наша цель - написать скрипт для перевода температуры из одной системы измерений в другую. Скрипт будет конвертировать между тремя основными системами измерения температуры: градусы Цельсия, градусы Кельвина и градусы Фаренгейта. Все расчеты мы будем проводить с заданной нами точностью. Описываем поля формы 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>