0

我有一个奇怪的行为:

javascript:

function Compare(x, y) {
    var min = document.getElementById(x).value
    var max = document.getElementById(y).value
    if (min > max) {
        alert("la prix MINIMAL est SUPÉRIEUR au prix MAXIMAL!")
        document.formacha.min.focus()
    }

}

<input type="number" id="max" min="0"/>
<input type="number" id="min" min="0" onblur="Compare('min', 'max')">

所以:

如果

max = 1000000000000000
min = 10

没关系,但如果我改变

min = 11

然后

alert("la prix MINIMAL est SUPÉRIEUR au prix MAXIMAL!")

被解雇了!

就像浏览器认为的那样min > max

4

2 回答 2

8

输入的值是字符串。以下是 JavaScript 比较11100作为字符串的方式:

  • 1比1:相等,继续下一个字符
  • 1 与 0 相比: 1 更高,因此11更高 then 100

尝试转换为数字:

var min = parseInt(document.getElementById(x).value,10);
var max = parseInt(document.getElementById(y).value,10);
于 2013-04-27T14:17:46.570 回答
3

您需要使用parseInt来比较整数值

 var minValue=parseInt(min, 10);
 var maxValue=parseInt(max, 10);
于 2013-04-27T14:17:39.660 回答