为什么我的代码认为60大于135?

时间:2017-06-06 16:45:03

标签: javascript

  

我希望获得更大的数字并减去较小的数字(输入值),即使它们输入输入的顺序错误,例如-1 = inputX / 1 = inputY然后1 =更大和-1更小,它适用于其他数字,但这些有点打破它idk为什么我做错了什么?   why does it think 60 is bigger than 135? look at the img...

<script type="text/javascript">
var x;
var y;
var big;
var small;
var result;
function calcT() {
    x = document.getElementById("inputX").value;
    y = document.getElementById("inputY").value;
    //result = x - y;
    if(x > y) {
      big = x;
      small = y;
       } else if(x < y) {
      big = y;
      small = x;
       }
    result = parseInt(big) - parseInt(small);
    document.getElementById("resultHere").innerHTML = result;

}

5 个答案:

答案 0 :(得分:4)

这样做更容易:

var result = Math.abs(x-y);

这样可以省去使用if-else梯子的麻烦,基本上可以在一行中给你相同的东西。

问题在于你比较其他人指出的字符串而不是数字。你可以这样做:

var x = parseInt(document.getElementById("inputX").value);
var y = parseInt(document.getElementById("inputY").value);
var result = (x<y) ? y-x : x-y;

答案 1 :(得分:1)

您正在直接比较这些值 - 这会导致比较文字&#139; 135&#39;用文字&#39; 60&#39;显示应该比较输入的整数值 - e。 G。使用parseInt(...)将输入转换为if语句之前的数字。

答案 2 :(得分:1)

您正在比较两个字符串。在进行比较之前,您需要将它们解析为整数:

&#13;
&#13;
console.log('as strings...', '123' > '50')
console.log('as numbers...', Number('123') > Number('50'))
&#13;
&#13;
&#13;

答案 3 :(得分:0)

请在比较之前解析inputX和inputY的整数。

将inputX和inputY视为字符串。

所以&#39; 135&#39; &GT; &#39; 65&#39;是假的&amp;&amp; &#39; 65&#39; &GT; &#39; 135&#39;是的。

 var x; var y; var big; var small; var result;
function calcT() { 
 x = document.getElementById("inputX").value; 
 y = document.getElementById("inputY").value; //result = x - y; 
 x= parseInt(x); // Missing point <--
 y= parseInt(y); // Missing point <--
 if(x > y) { big = x; small = y; 
 } else if(x < y) { 
 big = y; small = x; } 
 result = big - small;
 document.getElementById("resultHere").innerHTML = result; 

}

答案 4 :(得分:0)

我认为变量定义存在问题。尝试将var x,y,big,small;移到函数中。