我希望获得更大的数字并减去较小的数字(输入值),即使它们输入输入的顺序错误,例如-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;
}
答案 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)
您正在比较两个字符串。在进行比较之前,您需要将它们解析为整数:
console.log('as strings...', '123' > '50')
console.log('as numbers...', Number('123') > Number('50'))
&#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;
移到函数中。