Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS |尝试从文本输入中提取内容时接收NaN作为输出_Javascript_Html - Fatal编程技术网

Javascript JS |尝试从文本输入中提取内容时接收NaN作为输出

Javascript JS |尝试从文本输入中提取内容时接收NaN作为输出,javascript,html,Javascript,Html,我是JS新手,在将文本输入解析为计算函数时遇到困难。我肯定是做错了什么,因为我知道实际的解析方法是正确的。我一直在尝试很多不同的事情,但现在我有点绕圈子了。我只是在做一个简单的celius/farenheit转换器。非常感谢您的帮助 注意我只尝试使用纯JS 温度转换器 摄氏度 华氏 = var val=parseFloat(document.querySelector(“#度”).value); var output=document.getElementById(“输出”); window

我是JS新手,在将文本输入解析为计算函数时遇到困难。我肯定是做错了什么,因为我知道实际的解析方法是正确的。我一直在尝试很多不同的事情,但现在我有点绕圈子了。我只是在做一个简单的celius/farenheit转换器。非常感谢您的帮助

注意我只尝试使用纯JS


温度转换器
摄氏度
华氏
=
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);});