当前位置: 代码迷 >> JavaScript >> 负数的Javascript数字比较不起作用
  详细解决方案

负数的Javascript数字比较不起作用

热度:42   发布时间:2023-06-05 14:16:05.0

我尝试将负值与“ 0”进行比较,但这似乎不起作用。

var number = Number.parseInt($(this).val());
var min = Number.parseInt($(this).attr('min'));
var max = Number.parseInt($(this).attr('max'));

这是我的状况:

if (min && $(this).prop('required')) {
    if (number < min) {
        alert('ok');
            fail = true;
    }
}

我的最小值是0,我的数字是-1。

它永远不会进入条件。 为什么?

0是值。 如果min0 ,它将永远不会进入if条件。

以下所有条件将被发送到else块

if (false)
if (null)
if (undefined)
if (0)
if (NaN)
if ('')
if ("")
if (``)

由于parseInt的返回值为数字或NaN ,因此可以改用 :

if(!isNaN(min) && $(this).prop('required')) {
  // your code
}

您的情况:

if(min && $( this ).prop('required'))

将评估为false ,因为分了0和值0 && anythingfalse

由于min为0,因此您的条件评估为false 您有两种选择,一种是在分析字符串值之前检查它:

if($(this).attr('min').trim() && $( this ).prop('required')) {
    if (number < min) {
        alert('ok');
        fail = true;
    }
}

另一种是在解析数字之后检查NaN ,因为解析一个空字符串将返回NaN

if(!isNaN(min) && $( this ).prop('required')) {
    if (number < min) {
        alert('ok');
        fail = true;
    }
}

 console.log(' '.trim() == false); console.log(!isNaN(Number.parseInt('')) == false); 

(0 && true)在JavaScript中返回零。 请参阅第一个评论以获取更多详细信息

  相关解决方案