如何将函数添加到JavaScript开关语句中?

如何将函数添加到JavaScript开关语句中?,javascript,Javascript,我正在设计一个温度转换器,并试图使转换功能根据所选的单位而改变。华氏温度是默认的计算,我似乎不能改变它的其他转换时,单位切换。如何将转换函数添加到switch语句中 //选择单位 常量单位=document.querySelector(“#单位”); 单位。addEventListener('change',函数(e){ 让selectedUnit=units.selectedIndex; 让degree=document.querySelector(“#degree”); 开关(选择单元){

我正在设计一个温度转换器,并试图使转换功能根据所选的单位而改变。华氏温度是默认的计算,我似乎不能改变它的其他转换时,单位切换。如何将转换函数添加到switch语句中

//选择单位
常量单位=document.querySelector(“#单位”);
单位。addEventListener('change',函数(e){
让selectedUnit=units.selectedIndex;
让degree=document.querySelector(“#degree”);
开关(选择单元){
案例0:
degree.innerHTML=“°;F”;
document.getElementById('tag1').innerHTML=“°;C”;
document.getElementById('tag2').innerHTML=“°;R”;
document.getElementById('tag3').innerHTML=“°;K”;
document.getElementById('fahrenheit')。placeholder=“Degrees fahrenheit”;
打破
案例1:
degree.innerHTML=“°;C”;
document.getElementById('tag1').innerHTML=“K”;
document.getElementById('tag2').innerHTML=“°;R”;
document.getElementById('tag3').innerHTML=“°;F”;
document.getElementById('fahrenheit').placeholder=“摄氏度”;
打破
案例2:
degree.innerHTML=“°;R”;
document.getElementById('tag1').innerHTML=“°;C”;
document.getElementById('tag2').innerHTML=“K”;
document.getElementById('tag3').innerHTML=“°;F”;
document.getElementById('fahrenheit').placeholder=“Degrees Rankine”;
打破
案例3:
degree.innerHTML=“K”;
document.getElementById('tag1').innerHTML=“°;C”;
document.getElementById('tag2').innerHTML=“°;R”;
document.getElementById('tag3').innerHTML=“°;F”;
document.getElementById('fahrenheit')。placeholder=“Kelvin”;
打破
违约:
degree.innerHTML=“°;F”;
document.getElementById('fahrenheit')。placeholder=“Degrees fahrenheit”;
打破
}
});
//听取意见
document.querySelector(“#temp form”).addEventListener('submit',函数(e){
//隐藏结果
document.querySelector(“#results”).style.display='none';
//显示加载器
document.querySelector('#load').style.display='block';
设置超时(calculateResults,2000);
e、 预防默认值();
});
//计算结果
函数计算结果(e){
log('computing…');
//用户界面变量
常量华氏输入=document.querySelector(“#华氏”);
const celsiusInput=document.querySelector(“#摄氏度”);
const rankineInput=document.querySelector(“#rankine”);
常数kelvinput=document.querySelector(“#kelvin”);
函数华氏转换(){
常量ftemp=parseFloat(华氏输入值);
常数ctemp=(ftemp-32)*(5/9);
常数rtemp=ftemp+459.67;
常数ktemp=(ftemp-32)*(5/9)+273.15;
celsiusInput.value=ctemp.toFixed(2);
rankineInput.value=rtemp.toFixed(2);
kelvinput.value=ktemp.toFixed(2);
}
函数celsiusConversion(){
const ctemp=parseFloat(celsiusInput.value);
常数ftemp=(ctemp*(9/5))+32;
常数rtemp=(ctemp*(9/5))+491.67;
常数ktemp=ctemp+273.15;
华氏输出值=ftemp.toFixed(2);
rankineInput.value=rtemp.toFixed(2);
kelvinput.value=ktemp.toFixed(2);
}
函数转换(){
const rtemp=parseFloat(rankineInput.value);
常数ctemp=(rtemp-491.67)*(5/9);
常数ftemp=rtemp-459.67;
常数ktemp=rtemp*(5/9);
celsiusInput.value=ctemp.toFixed(2);
华氏输出值=ftemp.toFixed(2);
kelvinput.value=ktemp.toFixed(2);
}
函数kelvinConversion(){
const ktemp=parseFloat(kelvinput.value);
常数ctemp=ktemp-273.15;
常数rtemp=ktemp*(9/5);
常数ftemp=(ktemp-273.15)*(9/5)+32;
celsiusInput.value=ctemp.toFixed(2);
rankineInput.value=rtemp.toFixed(2);
华氏输出值=ftemp.toFixed(2);
}
//显示结果
document.querySelector(“#results”).style.display='block';
//隐藏装载机
document.querySelector('#load').style.display='none';
addEventListener('submit',fahrenheitConversion());
celsiusInput.addEventListener('submit',celsiusConversion());
addEventListener('submit',rankineConversion());
kelvinput.addEventListener('submit',kelvinConversion());

}
我认为您的变量是字符串,但您的case-switch语句适用于数字。如果您将与代码斗争,为什么要做正在做的事情,您可以做几件事

  • 在代码周围放置大量的console.log以显示发生了什么。同时打印变量的类型,这样您就可以知道您得到了什么。在生产代码中留下调试/日志记录的东西不是很好,但是当遇到困难时,可以将日志记录程序置于全局变量保护之下
if(调试单元转换)控制台.log(

通过这种方式,您可以通过更改一些变量来对代码的不同部分/模块进行故障排除

  • 您也可以将console.log上的变量格式化为您正在使用的格式,以便了解字符串用作数字时会发生什么情况

  • 您可以使用断点调试代码,并观察代码执行时发生的情况,这是非常低估的,console.Logger不是调试代码的正确方法,但这是正确的 铬: 火狐: 歌剧:

代码本身可以通过许多其他方式完成,总的来说,您不想让case switch语句发展成大型语句,命令设计模式可以很好地解决这一问题:或者您可以在两者之间做一些事情,只需回调特定选项即可调用代码

这可能是吹毛求疵,因为它可能已经被视为视图的一部分,并且视图可以有一些逻辑