JavaScript中的温度转换器(IF ELSE条件)

Temperature Converter (IF ELSE conditions) in JavaScript

本文关键字:IF ELSE 条件 转换器 温度 JavaScript      更新时间:2023-09-26

我正在用JavaScript创建一个温度转换器。到目前为止,只有当用户首先输入摄氏度时,摄氏度转换才起作用。我只是很难弄清楚如何构建其他if语句。

  var conversionC;
  var conversionF;
  var conversionK;
  if ( celsius.value != "" ) {
     conversionF = document.getElementById("celsius").value * 9 / 5 + 32;
     document.getElementById("fahrenheit").value = Math.round(conversionF);
  } 
  else if ( fahrenheit.value != "" ){
     conversionC = (document.getElementById("fahrenheit").value - 32) * 5 / 9;
     document.getElementById("celsius").value = Math.round(conversionC);
  }
  if ( kelvin.value != "" ){
     conversionC = document.getElementById("celsius").value - -273;
     document.getElementById("kelvin").value = Math.round(conversionC);
  }

我只想保留我现有的一个转换按钮,当用户决定首先输入华氏温度或开尔文时,它仍然可以工作。

非常感谢您的指导!

以下是迄今为止我的程序的JSFiddle:https://jsfiddle.net/2sharkp/kw2sr1wx/

谢谢!

在您的JSFiddle中,您将获取每个值,并使用parseFloat将其转换为浮点值。

这意味着当您点击if ( celsius.value != "" )时,您正在呼叫一个号码.value,即undefined。所以您实际上是在调用if ( undefined != "" ),这是真的,并且您的第一个if块将始终执行。

我假设您的意图是使用最近编辑的字段并将其用于转换。我建议使用标志来指示上次编辑的字段。

https://jsfiddle.net/camEdwards/chyg4ws1/

<script>
        let cels = document.getElementById('cels');
        let fahr = document.getElementById('fahr');
        cels.addEventListener('input', function(){
            let f = (this.value * 9/5) +32;
            if(!Number.isInteger){
                return f.toFixed(2);
            }
            fahr.value = f;
        });
        fahr.addEventListener('input', function(){
            let c = (this.value - 32) * 5/9;
            if(!Number.isInteger){
                return c.toFixed(2);
            }
            cels.value = c;
        });
    </script>