【问题标题】:Javascript linking options to else ifJavascript链接选项到else if
【发布时间】:2019-05-17 08:13:47
【问题描述】:

我对为什么我的代码不起作用感到有些困惑。我很新,非常想知道我哪里出错了! 我想通过var z 对我选择的任何选项进行计时,但无法使其正常工作。

这是我目前的代码:

<td><select>


  <option id="VAS" value="70">VAS</option>
  <option id="VTS" value="80">VTS</option>
  <option id="VAF" value="60">VAF</option>
  <option id="VGS" value="40">VGS</option>
  </select></td>
  <td>
   <input type="number" id="number" name="number">
  </td>
  <td>

<button onclick="myFunction()"> Total Value</button>
<br/>
<br/>


  <p id="value"></p>
  <script>
  function myFunction() {
  var y = document.getElementById("VAS").value;
  var z = document.getElementById("number").value;
  var a = document.getElementById("VGS").value;
  var c = document.getElementById("VAF").value;
  var d = document.getElementById("VTS").value;


  if (value == VGS) {
  var x = a * z;
  document.getElementById("value").innerHTML = x;
  }
  else if (value == VAS) {
  var x = y * z;
  document.getElementById("value").innerHTML = x;
  }




  }
  </script>

【问题讨论】:

    标签: javascript html css options


    【解决方案1】:

    您需要比较选择的值,而不是选项的值。以下是我修复您的 JavaScript 代码的方法:

    function myFunction() {
        var a = parseInt(document.getElementById("VAS").parentNode.value);
        var z = parseInt(document.getElementById("number").value);
        var x = a * z;
        document.getElementById("value").innerHTML = x;
    }
    

    完整的演示:

    function myFunction() {
        var a = parseInt(document.getElementById("VAS").parentNode.value);
        var z = parseInt(document.getElementById("number").value);
        var x = a * z;
        document.getElementById("value").innerHTML = x;
    }
    <td>
      <select>
    
    
        <option id="VAS" value="70">VAS</option>
        <option id="VTS" value="80">VTS</option>
        <option id="VAF" value="60">VAF</option>
        <option id="VGS" value="40">VGS</option>
      </select>
    </td>
    <td>
      <input type="number" id="number" name="number">
    </td>
    <td>
    
      <button onclick="myFunction()"> Total Value</button>
      <br/>
      <br/>
    
    
      <p id="value"></p>

    编辑:

    要自动执行此操作,请在数字字段中使用 oninput,如下所示:

    <input type="number" id="number" name="number" oninput="myFunction()" />
    

    演示:

    function myFunction() {
        var a = parseInt(document.getElementById("VAS").parentNode.value);
        var z = parseInt(document.getElementById("number").value);
        var x = a * z;
        document.getElementById("value").innerHTML = x;
    }
    <td>
      <select>
    
    
        <option id="VAS" value="70">VAS</option>
        <option id="VTS" value="80">VTS</option>
        <option id="VAF" value="60">VAF</option>
        <option id="VGS" value="40">VGS</option>
      </select>
    </td>
    <td>
      <input type="number" id="number" name="number" oninput="myFunction()">
    </td>
    <td>
      <br/>
      <br/>
    
    
      <p id="value"></p>

    【讨论】:

    • 你是个救命稻草!
    • 嘿,您有没有机会知道如何在不使用按钮的情况下更新号码?
    • 当然,只需在数字字段中使用oninput。我会编辑我的答案
    【解决方案2】:

    您的值是数字,因此值永远不会包含 VAS。此外,字符串需要用引号括起来,因此您的 if 语句将如下所示:

    if(a == "VAS")
    

    但是值包含数字,所以实际上应该是:

    if(a == "40")
    

    注意:除非您强制转换,否则这些值都是字符串。

    【讨论】:

    • 你能更新你的代码,让我们看看你做了什么吗?
    • if (value == "40") { var x = a * z; document.getElementById("value").innerHTML = x; } else if (value == "70") { var x = y * z; document.getElementById("value").innerHTML = x; }
    • 所以我不确定您要检查的确切变量(vars a、b、c、d、y 或 z),但值未在任何地方定义。
    • 这不算定义吗?
    猜你喜欢
    • 1970-01-01
    • 2014-04-24
    • 2014-06-15
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 2021-02-13
    • 2011-02-24
    相关资源
    最近更新 更多