Javascript Onclick事件不工作。有人能告诉我如何正确调试吗?

Javascript Onclick事件不工作。有人能告诉我如何正确调试吗?,javascript,html,dom,onclick,Javascript,Html,Dom,Onclick,我得到一个错误:未捕获引用错误:toFahrenheit未定义 在HTMLInputElement.onclick上单击 我正在寻找原因,但更重要的是,当我试图修复代码时,应该采取什么过程? 最后,使用连接到函数的DOM在HTML的末尾应该有文本 //每个函数都应与单击事件对应 //但当我按下按钮时,什么也没发生 函数toCelsius(){ var摄氏=(document.getElementById(“userInput”).value-32)*5/9; 摄氏度=数学整数(摄氏度); do

我得到一个错误:未捕获引用错误:toFahrenheit未定义 在HTMLInputElement.onclick上单击
我正在寻找原因,但更重要的是,当我试图修复代码时,应该采取什么过程? 最后,使用连接到函数的DOM在HTML的末尾应该有文本

//每个函数都应与单击事件对应
//但当我按下按钮时,什么也没发生
函数toCelsius(){
var摄氏=(document.getElementById(“userInput”).value-32)*5/9;
摄氏度=数学整数(摄氏度);
document.getElementById(“结果”).innerHTMl=userInput.value+“Farenheit是”+摄氏度+“摄氏度”;
}
函数toFahrenheit(){
var fahrenheit=(document.getElementById(“userInput”).value*9/5+32;
华氏度=数学圆度(华氏度);
document.getElementById(“结果”).innerHTMl=userInput.value+“摄氏度为”+
摄氏度+华氏度;
}

输入要转换的号码:

尝试使用浏览器控制台调试JavaScript

函数toCelsius(){ var摄氏=(document.getElementById(“userInput”).value-32)*5/9; 摄氏度=数学整数(摄氏度); document.getElementById(“结果”).innerHTML=userInput.value+“华氏温度为”+摄氏度+“摄氏度”; } 函数toFahrenheit(){ var fahrenheit=(document.getElementById(“userInput”).value)*(9/5)+32; 华氏度=数学圆度(华氏度); document.getElementById(“结果”).innerHTML=userInput.value+“摄氏度为”+华氏度+“华氏度”; }

输入要转换的号码:

首先,两行数学中缺少右括号:

(document.getElementById("userInput").value * 9 / 5 + 32;
您还有一个输入错误,其中有两行以以下开头:

document.getElementById("result").innerHTMl = ...
因为JavaScript区分大小写,应该是:

document.getElementById("result").innerHTML = ...
仅这些就足以导致代码停止工作,如果您在浏览器的开发人员工具打开的情况下运行代码(在任何现代浏览器中按F12键),就会收到这些问题的警告然后单击
控制台
选项卡。这是报告大多数JavaScript错误的地方。它甚至会显示错误所在的行号,如果您单击该链接,它会直接将您带到它:

接下来,如果不打算收集表单元素值并将其提交到任何地方,则不应使用
表单
元素

接下来,不要使用内联HTML事件属性,例如
onclick
,原因有很多,您可以阅读。使用在JavaScript中进行所有事件绑定

此外,这里不需要两个单独的函数,因为它们都做几乎相同的事情。如果每个按钮都存储了它要转换的单元,则该单元可以传递给单个函数,该函数将使用它来确定要执行的正确数学运算。我们可以通过使用HTML属性实现这一点,然后选择JavaScript中具有属性的值

最后,请记住,“HTML”中的“T”代表“文本”。从HTML元素获取的所有数据始终是JavaScript的字符串。如果要对其进行数学运算,则需要将其转换为数字。这可以通过多种方式实现,但对字符串预挂的
+
运算符即可

//将两个按钮放入JavaScript数组中,并在其上循环
Array.prototype.slice.call(document.queryselectoral(“input[type='button'])).forEach(函数(btn){
//为每个获取“数据单元”HTML属性值的对象设置公共事件处理程序
//并将其传递给函数
btn.addEventListener(“单击”,函数(){convert(this.dataset.unit))
});
});
//获取对需要使用的元素的引用
var input=document.getElementById(“userInput”);
var输出=document.getElementById(“结果”);
//单击回调函数,根据单击的按钮接收设备
函数转换(单位){
var other=null;//将保留我们转换到的单元
var answer=null;//将保留答案
//检查传入的参数值,查看需要进行哪些运算
如果(单位:摄氏度){
其他=“华氏度”
答案=(+input.value-32)*5/9;
}否则{
其他=“摄氏度”;
答案=(+input.value*9/5)+32;
}
答案=数学圆(答案);
//写出结果:
output.textContent=input.value+“度”+其他+”是:“+答案+“度”+单位;
}

输入要转换的号码:

你在控制台中看到了什么?你把javascript放在哪里了?
userInput.value
这是什么?也许你的意思是
document.getElementById(“userInput”).value
。你缺少了一个
步骤1:LINT!!步骤2:尝试并观察步骤3:代码中的fixSyntax错误停止代码执行:
(document.getElementById(“userInput”).value*9/5+32;
-->无结束括号。与摄氏度相同。投票结束,简单的打字。为此,我只需将您的代码放入代码笔,它将显示错误所在。您也可以使用浏览器控制台。您甚至不需要代码笔。您可以在代码段中看到它。@ScottMarcus同意我说我解释得很好。@ScottMarcus从你的答案中学习如何写答案。