2015-03-05 2 views
2

Я создал этот временный конвертер в JavaScript, он работает и вычисляет надлежащим образом, но я получаю некоторое «неожиданное поведение», и я боюсь понять, почему это происходит.Temp Converter с использованием JavaScript

Поведение, которое происходит, заключается в том, что если я нажму в текстовом поле Цельсия или Фаренгейта, он автоматически выдает значения: -32 в текстовом поле Цельсия и 32 в текстовом поле по Фаренгейту. Как только я удалю одно из автоматически полученных значений из текстового поля, оно будет соответствующим образом преобразовываться:

100C преобразуется в 212F, и если вы введете 32F, он преобразуется в 0C.

Эта часть больше бонуса, чтобы увидеть, смогла ли я конвертировать из всех трех измерений температуры по Фаренгейту, Цельсию и Кельвину. Он не конвертируется, если вы вводите значение в текстовом поле Fahrenheit или Celsius, но если вы вводите номер непосредственно в текстовое поле Kelvin, он будет преобразовываться в другие 2 измерения coorectly.

Нужна ли мне петля или инструкция управления, чтобы добавить Kelvin соответствующим образом в эту программу?

имя теги формы является "конвертер" Вот код:

function toCelsius() { 
    document.converter.fahrenheit.value =(document.converter.celsius.value * 9/5) + 32; 
} 

function toFahrenheit() { 
    document.converter.celsius.value = (document.converter.fahrenheit.value *5/9) -32; 
} 

function toKelvin(){ 
    document.converter.celsius.value = document.converter.kelvin.value - 273.15; 
    document.converter.fahrenheit.value=((document.converter.kelvin.value - 273.15)*9/5)+32; 
} 
+3

Не могли бы вы опубликовать полный код, который делает это? либо здесь, либо с помощью jsfiddle.net –

+1

Ваш алгоритм для Фаренгейта по Цельсию неверен, он должен быть «(Фаренгейт - 32) * 5/9'. Аналогично для * к Кельвину *. ;-) – RobG

ответ

1

Формулы:

°F = °C x 9/5 + 32 
°C = (°F - 32) x 5/9 

так:

function toFahrenheit() { 
    document.converter.celsius.value = (document.converter.fahrenheit.value - 32) * 5/9; 
} 

Что касается бонусной вопроса, я подумайте, что вам нужно прикрепить функцию обработчика к каждому из элементов 3 input (при условии, что вы используете их) nd синхронизировать другие значения соответственно. Нет необходимости в цикле. Что-то вроде этого:

<input id='c' type="number" onchange="converter_function('c', this.value)" />°C 

http://jsfiddle.net/teyw4tah/2/

Для пуристов:

http://jsfiddle.net/teyw4tah/3/

+0

Я бы рекомендовал не преподавать атрибуты «onchange», поскольку они требуют создания глобальных значений, и ваша веб-страница очень быстро станет незаменимым беспорядком. Вместо этого используйте 'addEventListener' для присоединения функций с ограниченным охватом. –

+1

Я согласен, но я хотел сохранить его как можно более простым. – sebnukem

+0

Спасибо за ваши ответы и ясность. Спасибо, что поддержали его просто. Я только начинаю с Javascript, поэтому пока не знаю, как обрабатывать события. У меня есть опыт работы с C#. Я полагаю, что обработка объектов в Javascript отличается? –

Смежные вопросы