计算用户输入的数字之间的差异

时间:2016-09-03 20:35:20

标签: javascript html

这应该是没脑子的,但我没有Javascript的经验,我不明白为什么这不起作用。

<!doctype html>

<html lang="en">
<head>
  <meta charset="utf-8">

  <title>Undantag</title>
  <p> STD: </p>
  <input type="number" name="STD">
  <p> STA: </p>
  <input type="number" name="STA">
  <p> ATD: </p>
  <input type="number" name="ATD">
  <p> ATA: </p>
  <input type="number" name="ATA">


<button onclick="useUndantag()">Click me</button>


</head>

<body>
  <script>
    function useUndantag()  {
        var a = document.getElementsByName("STD"); 
        var b = document.getElementsByName("ATD");
        var c = document.getElementsByName("STA");
        var d = document.getElementsByName("ATA");


        if (a-b >1) {
        alert("No undantag");
        }
            else if (d-c >2) {
                alert ("No undantag");

                else () {
                    alert ("NO EU FOR YOU!")

                }

            }
    }

  </script>
</body>
</html>

问题是我根本没有警觉,我似乎无法弄清楚原因。如果有人有任何提示,如果能得到任何帮助我会非常高兴。

4 个答案:

答案 0 :(得分:1)

首先,getElementsByName返回HTML元素的集合。使用[0]访问第一个元素。接下来,您必须使用parseFloatparseInt将输入解析为整数/浮点数。此外,HTML代码位于body标记中,除非您有脚本,链接,元标题,标题和其他标记。最后,您有语法错误:

else () { }

不应该有括号。你在else if之后也错过了一个大括号,在其他之后删除了一个大括号。这是一个固定的片段:

&#13;
&#13;
    function useUndantag()  {
        var a = document.getElementsByName("STD")[0].value; 
        var b = document.getElementsByName("ATD")[0].value;
        var c = document.getElementsByName("STA")[0].value;
        var d = document.getElementsByName("ATA")[0].value;

        if (parseInt(a) - parseInt(b) > 1) { //notice the use of parseInt, you can use parseFloat to deal with decimals
            alert("No undantag");
        } else if(parseInt(d) - parseInt(c) > 2) {
            alert("No undantag");
        } else { //Notice no parentheses and some more braces
            alert("NO EU FOR YOU!")
        }
    }
&#13;
<p> STD: </p> <!-- HTML is in body tag !-->
<input type="number" name="STD">
<p> STA: </p>
<input type="number" name="STA">
<p> ATD: </p>
<input type="number" name="ATD">
<p> ATA: </p>
<input type="number" name="ATA">


<button onclick="useUndantag()">Click me</button>
&#13;
&#13;
&#13;

另外,请务必使用.value来获取值。

答案 1 :(得分:0)

您的语法不正确。

此外,如果您要比较输入值,则需要获取输入的value属性。

此外,document.getElementsByName返回一个元素数组,因此您需要选择第一个元素。

这是一个有效的例子:

&#13;
&#13;
<!doctype html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <title>Undantag</title>
</head>

<body>
  
  <p> STD: </p>
  <input type="number" name="STD">
  <p> STA: </p>
  <input type="number" name="STA">
  <p> ATD: </p>
  <input type="number" name="ATD">
  <p> ATA: </p>
  <input type="number" name="ATA">

  <button onclick="useUndantag()">Click me</button>

  <script>
  
    function useUndantag() {
      var a = document.getElementsByName("STD")[0].value;
      var b = document.getElementsByName("ATD")[0].value;
      var c = document.getElementsByName("STA")[0].value;
      var d = document.getElementsByName("ATA")[0].value;

      if (a - b > 1) {
        alert("No undantag");
      } else if (d - c > 2) {
        alert("No undantag");
      } else {
        alert("NO EU FOR YOU!")
      }
    }
    
  </script>
  
</body>

</html>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

你有足够的错误

功能

document.getElemenstByName

返回一个数组!

    var a = document.getElementsByName("STD")[0].value; 
    var b = document.getElementsByName("ATD")[0].value;
    var c = document.getElementsByName("STA")[0].value;
    var d = document.getElementsByName("ATA")[0].value;

你的判决被误判了

这里的代码: https://jsfiddle.net/evpog628/1/

答案 3 :(得分:0)

1)最好使用getElementById(),速度更快,只选择一个元素(&#34; id&#34; HTML文档中必须唯一)。

2)请务必使用正确的HTML结构

<!doctype html>
<html>
    <head>
        <meta>
        <title></title>
    </head>
    <body>
        <input>
        <script>
        </script>
    </body>
</html>

3)您需要确保从HTML字段中获取整数或浮点值,以使代码正常工作。 parseInt()pareseFloat()

<!doctype html>    
<html lang="en">
<head>
  <meta charset="utf-8">    
  <title>Undantag</title>
</head>

<body>
  <p> STD: </p><input type="number" id="STD">
  <p> STA: </p><input type="number" id="STA">
  <p> ATD: </p><input type="number" id="ATD">
  <p> ATA: </p><input type="number" id="ATA">

<button onclick="useUndantag();">Click me</button>
  <script>
    function useUndantag()  {
        var a = document.getElementById("STD"); 
        var b = document.getElementById("ATD");
        var c = document.getElementById("STA");
        var d = document.getElementById("ATA");

        if (parseInt(a.value)-parseInt(b.value)>1) {
            alert("No undantag");
        }
        else if (parseInt(d.value)-parseInt(c.value) >2) 
        {
            alert ("No undantag");
        }
        else 
        {
            alert ("NO EU FOR YOU!");
        }
    }
  </script>
</body>
</html>