Javascript JS |尝试从文本输入中提取内容时接收NaN作为输出
我是JS新手,在将文本输入解析为计算函数时遇到困难。我肯定是做错了什么,因为我知道实际的解析方法是正确的。我一直在尝试很多不同的事情,但现在我有点绕圈子了。我只是在做一个简单的celius/farenheit转换器。非常感谢您的帮助 注意我只尝试使用纯JSJavascript JS |尝试从文本输入中提取内容时接收NaN作为输出,javascript,html,Javascript,Html,我是JS新手,在将文本输入解析为计算函数时遇到困难。我肯定是做错了什么,因为我知道实际的解析方法是正确的。我一直在尝试很多不同的事情,但现在我有点绕圈子了。我只是在做一个简单的celius/farenheit转换器。非常感谢您的帮助 注意我只尝试使用纯JS 温度转换器 摄氏度 华氏 = var val=parseFloat(document.querySelector(“#度”).value); var output=document.getElementById(“输出”); window
温度转换器
摄氏度
华氏
=
var val=parseFloat(document.querySelector(“#度”).value);
var output=document.getElementById(“输出”);
window.addEventListener(“加载”,主);
函数main(){
//听一听“等于”按钮上的点击
document.querySelector(“#equals”).addEventListener(
“单击”,函数(){convert(“val”);});
}
函数转换(val){
var c=document.getElementById(“摄氏度”);
var f=document.getElementById(“farenheit”);
如果(c.勾选){
托法伦海特;
console.log(“选定摄氏度”);
}否则,如果(f.选中){
托克尔修斯(val);
console.log(“已选择farenheit”);
}否则{
log(“选择输入的单位是摄氏度还是法伦海特”);
}
}
函数toCelsius(val){
输出值=(val-32)/1.8;
console.log(输出值);
}
法兰海特函数(val){
output.value=val*1.8+32;
console.log(输出值);
}
此时
convert("val");
您为convert()
函数提供了用于转换的字符串“val”
,而不是变量。这将导致后面的计算中出现NaN
值
您应该将检索值val
的行移动到convert()
函数中,这样它会在单击时得到更新。当前,您仅在启动时读取该值(在启动时,该值很可能为空),并且从不更新它
function convert() {
var c = document.getElementById("celsius");
var f = document.getElementById("farenheit");
var val = parseFloat(document.querySelector("#degrees").value);
if (c.checked) {
toFarenheit(val);
console.log("celsius selected");
} else if (f.checked) {
toCelsius(val);
console.log("farenheit selected");
} else {
console.log("Select whether input is in celsius or farenheit.");
}
}
这是一个错误
document.querySelector("#equals").addEventListener(
"click", function(){convert("val");});
内德
叶:对你的回答的第一个评论者是鼻子。您需要在单击时更新
val
变量。您可以在顶部声明它,然后在函数调用中更新它,或者在click listener中将其创建为作用域变量
工作小提琴:当输入元素为空时,您在代码顶部设置
val
。。。那是楠。。。。您从未将val
设置为任何其他值var val=SomedElement.value
在输入更改时不会自动更新val
document.querySelector("#equals").addEventListener(
"click", function(){convert(val);});