Javascript条件困境

时间:2017-04-12 00:25:01

标签: javascript

感谢阅读,我的部分代码存在问题,代码如下(为了更好的访问,我在html中包含了css和js):

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Comparacion 3 numeros.</title>
    <style media="screen">
      body{
      background: #1b2539;
      color: #869443;
      text-align: center;

      }

      #box1{
        width: 300px;
        background:#2ba15a;
        color:#751434;
        text-align: center;
        font-size: 28px;
        padding: 0px;
        margin-top: 50px;
      }

      div {
        margin: auto;
      }

      div p {
        font-size: 32px;
        text-align: center;
        color: #25e421;
        margin-top: 15%;
        display: inline-block;

      }
      form{
        display: inline-block;
        align-content: center;
        margin-top: 50px;
      }
    </style>
  </head>
  <body>

    <script type="text/javascript">
      function show(){

        var a,b,c,heaviest;

        a=parseFloat(document.getElementById('b1').value);
        b=parseFloat(document.getElementById('b2').value);
        c=parseFloat(document.getElementById('b3').value);
        d=parseFloat(document.getElementById('b4').value);



        if(a==b){
         if(c<d){
            heaviest=d;
         }else{
         heaviest=c;
        }

        }else{
        if(a<b){
        heaviest=b;
        }else{
        heaviest=a;
        }
        }


        if (( (a>b&&c&&d) && (b==c==d) ) || ( (b>a&&c&&d) && (a==c==d) ) || ( (c>a&&b&&d) && (a==b==d) ) || ( (d>a&&b&&c) && (a==b==c) )){
           document.getElementById('box1').innerHTML = "Heaviest is: " + heaviest + ".<br />";
        }
        else{
           document.getElementById('box1').innerHTML = "Try again.<br />";
        }

      }

    </script>

    <form action="" onsubmit="show(); return false">

      <input type="text" placeholder="Enter first ball" id="b1"><br>
      <input type="text" placeholder="Enter second ball" id="b2"><br>
      <input type="text" placeholder="Enter third ball" id="b3"><br>
      <input type="text" placeholder="Enter fourth ball" id="b4"><br>
      <input type="submit" value="Heaviest" onclick="show()">

    </form>

    <div id="box1">
        <br>
    </div>

    <div>
      <p>Enter 3 equal weights and 1 heavier!</p>
    </div>

  </body>
  </html>

我希望你关注的是这一部分:

        if (( (a>b&&c&&d) && (b==c==d) ) || ( (b>a&&c&&d) && (a==c==d) ) || ( (c>a&&b&&d) && (a==b==d) ) || ( (d>a&&b&&c) && (a==b==c) )){
           document.getElementById('box1').innerHTML = "Heaviest is: " + heaviest + ".<br />";
        }
        else{
           document.getElementById('box1').innerHTML = "Try again.<br />";
        }

我在这里尝试做的是检查是否有3个相等的输入(无关紧要)和另一个大于其他3的输入,如果是,则调用show();如果没有,显示再试一次,我知道当然有更好的方法来做这一切,但我正在学习,并且首先要按照我所知道的方式去做,对我来说那部分是可以的,所以我没有得到为什么它不起作用。我感谢任何纠正。

1 个答案:

答案 0 :(得分:1)

您可以使用以下代码执行此操作:

&#13;
&#13;
var a = b = c = '20', d = '120';
var arr = [a,b,c,d].sort((a,b) => a - b);

//Option 1
if(arr[0] == arr[1] && arr[1] == arr[2] && arr[2] * 1 < arr[3] * 1){
  //Do something
}

//Option 2 (for more than 3 elements)
var i = 0;
while(arr[i++] == arr[i] && i < arr.length - 1);
if(i == arr.length - 1  && arr[i] * 1 > arr[i - 1] * 1){
  //Do something
}
&#13;
&#13;
&#13;