Javascript 在<;输入类型=数字>;

Javascript 在<;输入类型=数字>;,javascript,html,Javascript,Html,我有一种奇怪的行为: 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.for

我有一种奇怪的行为:

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()
    }
}

没关系,但如果我改变

min = 11
然后

他被解雇了


这就像浏览器认为
min>max

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

 var minValue=parseInt(min, 10);
 var maxValue=parseInt(max, 10);

输入值是字符串。下面是JavaScript如何将
11
100
作为字符串进行比较:

  • 1与1比较:相等,继续下一个字符
  • 与0相比,1更高,因此
    11
    高于
    100
尝试转换为数字:

var min = parseInt(document.getElementById(x).value,10);
var max = parseInt(document.getElementById(y).value,10);

看起来是字符串问题。您正在比较字符串,而不是数字。是的,您应该使用
parseFloat
parseInt
,以更合适的为准。表单值是字符串。您需要使用parseInt转换为数字。首先对值执行parseInt,然后检查其中一个是否是另一个的子字符串,如果右侧是左侧的子字符串,则返回true,反之亦然,则返回false,如果两者都不支持,它就不会像你说的那样。为什么在HTNL5中,当类型为
number
时,它不会自动转换?可能是为了与不支持HTML5的浏览器兼容。
alert("la prix MINIMAL est SUPÉRIEUR au prix MAXIMAL!")
 var minValue=parseInt(min, 10);
 var maxValue=parseInt(max, 10);
var min = parseInt(document.getElementById(x).value,10);
var max = parseInt(document.getElementById(y).value,10);