2016-01-31 2 views
0

Я хочу добавить номер ввода (в градусах по Фаренгейту) и преобразовать его в градусы Цельсия, но я не могу понять, как это сделать с помощью функции.Функция не работает в JS Fahrenheit to Celsius convertor

<!DOCTYPE html> 
 
<html> 
 
<body> 
 

 
<p>This example calls a function to convert from Fahrenheit to Celsius:</p> 
 

 
<input type="number" id="myInput" placeholder="Enter Fahrenheit degree" /> 
 

 
<button id="myButton" type="button">Convert to Celsius</button> 
 

 
<p id="demo"></p> 
 

 
<script> 
 

 
var fahr = document.getElementById("myInput").value; 
 

 
function toCelsius(fahr) { 
 
    return (5/9) * (fahr-32); 
 
} 
 

 
document.getElementById("myButton").onclick = function() { 
 

 
document.getElementById("demo").innerHTML = toCelsius(fahr); 
 
}; 
 

 
</script> 
 

 
</body> 
 
</html>

Я пытался сделать это с помощью одного вар, как это тоже:

var fahr = document.getElementById("myInput").value; 
 

 
var c = (5/9) * (fahr-32); 
 

 

 

 
document.getElementById("myButton").onclick = function() { 
 

 
document.getElementById("demo").innerHTML = c; 
 
};

но он продолжает показывать мне тот же результат каждый раз, когда в оба случая (Этот номер: -17.77777777777778)

Спасибо за вашу помощь

+1

Вы имеете присвоить значение 'fahr' в функции обработчика. В настоящее время он присваивается только один раз при загрузке страницы. – Teemu

ответ

2

Вы хотите прочитать значение fahr ввода внутри из OnClick обработчика. Он также имеет смысл округлить возвращаемое значение может быть один (или два) десятичных чисел:

function toCelsius(fahr) { 
 
    return ((5/9) * (fahr - 32)).toFixed(1); 
 
} 
 

 
document.getElementById("myButton").onclick = function() { 
 
    var fahr = document.getElementById("myInput").value; 
 
    document.getElementById("demo").innerHTML = toCelsius(fahr); 
 
};
<p>This example calls a function to convert from Fahrenheit to Celsius:</p> 
 
<input type="number" id="myInput" placeholder="Enter Fahrenheit degree" /> 
 
<button id="myButton" type="button">Convert to Celsius</button> 
 
<p id="demo"></p>

2

fahr возвращает строку. Прежде чем вы сможете выполнить арифметику, вы должны перенести переменную fahr в число.

var fahr = Integer.parseInt(...); 
var c = (5/9) * (fahr - 32); 
+0

Btw, '-' оператор автоматически выполняет кастинг. – dfsq

+0

@dfsq Oh. Это странно. Но, по соглашению о кодировании, я считаю, что это лучше, но тогда это не должно быть решением. – HyperNeutrino

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