2015-06-02 120 views
0

我工作的一个摄氏华氏功能在JavaScript和JavaScript错误输出我写了这个代码:在浏览器

<!DOCTYPE html> 
<html> 
<head> 
<title>Celius to Fahrenheit Converter</title> 
</head> 
<body> 

<script type="text/javascript"> 

alert("Welcome"); 

function tempConverter() { 
var degCent = prompt("Enter the degrees in Farenheit", 50) 
var degFahren; 

degFahren = 9/5 * (degCent + 32); 

alert(degFahren); 

} 

tempConverter(); 

</script> 

</body> 
</html> 

我试着用50作为默认值,当我将它转换显示9057.6代替122.任何想法?

+4

['提示() '](https://developer.mozilla.org/en-US/docs/Web/API/Window/prompt)返回一个字符串和['+'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Addition)也会执行连接('“50”+ 32 ===“5032”')。 [在JavaScript中将字符串转换为数字的最快方法是什么?](http://stackoverflow.com/questions/12862624/whats-the-fastest-way-to-convert-string-to-number-in-javascript) –

回答

2

您需要输入转换为整数 -

var degCent = parseInt(prompt("enter", 50) , 10);

1

degCent值被视为字符串。 JavaScript的计算表达式时确实有益字符串连接

(degCent + 32) = "5032" 

开始做乘法和除法它然后将上述结果转换为数字做算术只有当。这是Javascript的一个意想不到的(但记录在案的)行为。

为了解决这个问题,迫使degCent值通过执行类似是一个数:

(+degCent + 32) 

前导+字符串"50"转换为数字之前加入32

+0

感谢指出,我只是困惑,为什么它把它当作一个字符串,当我的华氏摄氏功能的代码工作正常?我有它的确切代码,只有方程是不同的.. – defc0de

+0

因为 JavaScript有哑类型处理。你只需要处理它,Javascript现在还不能确定。 –

+0

哈哈,好吧,我明白。作为初学者,它只是让我如此困惑。无论如何感谢所有的帮助。 – defc0de