我是javascript和堆栈溢出的新手,我正在尝试开发一个长度转换器,但是有一个逻辑错误,我找不到它

问题描述 投票:0回答:1

它是一个长度转换器,出于某种原因,它就像 if 条件。这是代码:

let output_result = document.getElementById('output');
let input_value;
let inputtype;
let input_unit_type;
let output_unit_type;
var outputtype;

function convert() {
  input_value = parseFloat(document.getElementById('number_input').value);
  input_unit_type = parseInt(document.querySelector('input[name="unitconverting"]:checked').value);
  output_unit_type = parseInt(document.querySelector('input[name="unitconverted"]:checked').value);
  //Convert Imperial Units to Inches
  switch (input_unit_type) {
    case 1:
      {
        output_value = input_value * 12;
        inputtype = "imperial";
        break;
      };
    case 2:
      {
        output_value = input_value;
        inputtype = "imperial";
        break;
      };
    case 3:
      {
        output_value = input_value * 36;
        inputtype = "imperial";
        break;
      };
    case 4:
      {
        output_value = input_value * 63360;
        inputtype = "imperial";
        break;
      };
      //Convert Metric Units to centimeters
      // 1 inch = 2.54 cm.
      //M to CM
    case 5:
      {
        output_value = (input_value * 100);
        inputtype = "metric";
        break;
      };
      //CM to CM
    case 6:
      {
        output_value = input_value;
        inputtype = "metric";
        break;
      };
      //MM to CM
    case 7:
      {
        output_value = (input_value / 10);
        inputtype = "metric";
        break;
      };
      //KM to CM
    case 8:
      {
        output_value = (input_value * 100000);
        inputtype = "metric";
        break;
      };
    default:
      {
        alert("Error Occurred :(");
        break;
      };
  };
  switch (output_unit_type) {
    case 1:
      {
        outputtype = "imperial";
        break;
      };
    case 2:
      {
        outputtype = "imperial";
        console.log("2");
        break;
      };
    case 3:
      {
        outputtype = "imperial";
        console.log("3");
        break;
      };
    case 4:
      {
        outputtype = "imperial";
        console.log("4");
        break;
      };
    case 5:
      {
        outputtype = "metric";
        console.log("5");
        break;
      };
    case 6:
      {
        outputtype = "metric";
        console.log("6");
        break;
      };
    case 7:
      {
        outputtype = "metric";
        console.log("7");
        break;
      };
    case 8:
      {
        outputtype = "metric";
        console.log("8");
        break;
      };
    default:
      {
        alert("Error Occurred :(");
        console.log("9");
        break;
      };
  };
  switch (inputtype) {
    case "metric":
      {
        //convert input to inches if output is in imperial
        if (outputtype = "imperial") {
          output_value /= 2.54;
          //convert input to imperial output
          switch (output_unit_type) {
            case 1:
              {
                output_value /= 12;
                break;
              };
            case 2:
              {
                break;
              };
            case 3:
              {
                output_value /= 36;
                break;
              };
            case 4:
              {
                output_value /= 63360;
                break;
              };
          }
        } else if (outputtype = "metric") {
          //Converting input in centimeters to output with its metric unit
          switch (output_unit_type) {
            case 5:
              {
                output_value /= 100;
                break;
              };
            case 6:
              {
                break;
              };
            case 7:
              {
                output_value *= 10;
                break;
              };
            case 8:
              {
                output_value /= 1000;
                break;
              };
          }
        } else {
          alert("Error Occurred :(")
        }
      };
      //--------------------------------------------------------------------------          
    case "imperial":
      {
        if (outputtype = "metric") {
          output_value = (output_value * 2.54);
          //convert input to centimeters
          switch (output_unit_type) {
            case 5:
              {
                output_value = (output_value / 100);
                break;
              };
            case 6:
              {
                break;
              };
            case 7:
              {
                output_value = (output_value * 10);
                break;
              };
            case 8:
              {
                output_value = (output_value / 100000);
                break;
              };
          }
        } else if (outputtype = "imperial") {
          switch (output_unit_type) {
            case 1:
              {
                output_value /= 12;
                break;
              };
            case 2:
              {
                break;
              };
            case 3:
              {
                output_value /= 36
                break;
              };
            case 4:
              {
                output_value /= 63360;
                break;
              };
          }
        } else {
          alert("Error Occurred :(")
        }
      };
  }

};

function test() {
  console.log("testing: " + output_value);
  console.log("testing 2: " + input_value);
  console.log(output_unit_type);
  console.log(input_unit_type);
  console.log("Important: " + outputtype);
  console.log(inputtype);
}
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Metric Converter</title>
  <!--<link rel="stylesheet" href="style.css">-->
</head>

<body>
  <main>
    <form>
      <h1>Metric Converter</h1>
      <div>
        <h2>Convert From: </h2>
        <p id="error"></p>
        <p id="output"></p>
        <label for="number_input">Input # of units: 
    <input type="number" step="any" title="Please Input numerical values" id="number_input" required></input>
    </label>
        <fieldset>
          <h3>Imperial</h3>
          <label for="feet1"><input id="feet1" type="radio" name="unitconverting" class="unitconverting" required value=1>Feet</input></label>
          <label for="inch1"><input id="inch1" type="radio" name="unitconverting" class="unitconverting" value=2>Inches</input></label>
          <label for="yard1"><input id="yard1" type="radio" name="unitconverting" class="unitconverting" value=3>Yards</input></label>
          <label for="mile1"><input id="mile1" type="radio" name="unitconverting" class="unitconverting" value=4>Miles</input></label>
          <h3>Metric</h3>
          <label for="meter1"><input id="meter1" type="radio" name="unitconverting" class="unitconverting" required value=5>Meters</input></label>
          <label for="centi1"><input id="centi1" type="radio" name="unitconverting" class="unitconverting" value=6>Centimeters</input></label>
          <label for="milli1"><input id="milli1" type="radio" name="unitconverting" class="unitconverting" value=7>Millimeters</input></label>
          <label for="kilo1"><input id="kilo1" type="radio" name="unitconverting" class="unitconverting" value=8>Kilometers</input></label>
        </fieldset>
        <h2>Convert to:</h2>
        <fieldset>
          <h3>Imperial</h3>
          <label for="feet2"><input id="feet2" type="radio" name="unitconverted" class="unitconverted" required value=1></input>Feet</label>
          <label for="inch2"><input id="inch2" type="radio" name="unitconverted" class="unitconverted" value=2>Inches</input></label>
          <label for="yard2"><input id="yard2" type="radio" name="unitconverted" class="unitconverted" value=3>Yards</input></label>
          <label for="mile2"><input id="mile2" type="radio" name="unitconverted" class="unitconverted" value=4>Miles</input></label>
          <h3>Metric</h3>
          <label for="meter2"><input id="meter2" type="radio" name="unitconverted" class="unitconverted" value=5>Meters</input></label>
          <label for="centi2"><input id="centi2" type="radio" name="unitconverted" class="unitconverted" value=6>Centimeters</input></label>
          <label for="milli2"><input id="milli2" type="radio" name="unitconverted" class="unitconverted" value=7>Millimeters</input></label>
          <label for="kilo2"><input id="kilo2" type="radio" name="unitconverted" class="unitconverted" value=8>Kilometers</input></label>
        </fieldset>
        <button type="button" onclick='convert()'>Convert</button>
        <button type="button" onclick='test()'>Test Button</button>
      </div>
    </form>
  </main>
  <script src="index.js"></script>
</body>

</html>

我尝试了所有我能想到的。

堆栈溢出试图告诉我这篇文章主要是代码,我应该添加更多细节,但我想我放下了一切。 我想要反馈,而且,我是 JS 和堆栈溢出的新手,我只是为了发布这个而创建了这个帐户。

javascript
1个回答
0
投票

在convert()中更改代码

if (outputtype = "imperial")

if (outputtype === "imperial") 
© www.soinside.com 2019 - 2024. All rights reserved.