2017-03-17 93 views
1

我是JavaScript新手,我正在尝试学习编程语言。我创建了一个快速网站,将温度从华氏温度转换为摄氏温度,我使用JavaScript来完成转换。我知道它不必被分解成两个不同的功能,但是我虽然会开始简单并且朝着更复杂的方向发展。我使用来完成转换的代码是:从一个函数移动一个值到另一个

function toCelcius(){ 
 
\t 
 
\t var temp = document.getElementById("tempConversion").value; 
 

 
\t var dif = calculate(temp); 
 

 
\t var c = (5/9) * dif; 
 
\t 
 
\t document.getElementById("answer").innerHTML = c; 
 
\t 
 
} 
 

 
function calculate(temp){ 
 
\t 
 
\t var dif = temp - 32; 
 
\t 
 
\t document.getElementById("firstCalc").innerHTML = dif; 
 

 
}

我知道的NaN意味着不是数字,所以我假定线,VAR DIF =计算(温度),是不正确定义。不幸的是,我不明白为什么,可以使用你的帮助理解。

非常感谢。

+2

请发布您的HTML代码,我们不能在没有它的情况下重现此问题 – Shogunivar

+0

另外,请指出您的问题,因为我无法真正弄清楚问题是什么 – Shogunivar

+0

https://jsfiddle.net/paraselixir/0mx4gj41 /你可以在这里查看工作代码 –

回答

1
function calculate(temp){ 
    var dif = temp - 32; 
    document.getElementById("firstCalc").innerHTML = dif; 
    return dif; // return the value here... 
} 

function toCelcius(){ 
    var temp = document.getElementById("tempConversion").value; 
    var dif = calculate(temp); // returned value will be assigned in "dif" 
    var c = (5/9) * dif; 
    document.getElementById("answer").innerHTML = c; 
} 
1

功能计算(TEMP)没有返回其被需要的值。因此,dif将是undefined它会给你NaN当你在那里执行任何算术运算。

你发挥这样

更新 -

function calculate(temp){ 

    var dif = temp - 32; 

    document.getElementById("firstCalc").innerHTML = dif; 
    return dif; 

} 
0

当得到一个值从函数回来,而不是设置变量,可以尝试使用return像我一样。请注意,在calculate()中,变量不一定要命名为dif。真的试着理解这里发生的事情,因为从长远来看,更完整的理解将对你有所帮助。

function toCelcius(){ 
 
\t 
 
\t var temp = document.getElementById("tempConversion").value; 
 

 
\t var dif = calculate(temp); 
 

 
\t var c = (5/9) * dif; 
 
\t 
 
\t document.getElementById("answer").innerHTML = c; 
 
\t 
 
} 
 

 
function calculate(temp){ 
 
\t 
 
\t var dif = temp - 32; 
 
\t 
 
\t document.getElementById("firstCalc").innerHTML = dif; 
 
    
 
    return dif; 
 

 
}
<input type="text" id="tempConversion"></input> 
 
<br/> 
 
<button type="button" onClick="toCelcius();">Convert</button> 
 
<br/> 
 
<span id="firstCalc"></span> 
 
<br/> 
 
<span id="answer"></span>

从本质上讲,因为你没有使用return,不管你磨设置dif到(更不用说使用var分居两个dif变量,所以第一个就不会得到设置),它会立即设置为您从calculate()返回的内容 - 这是undefined

相关问题