如何在Javascript中对两个输入值使用比较运算符

如何在Javascript中对两个输入值使用比较运算符,javascript,Javascript,我想比较两个输入值,只需在javascript中尝试一下,但效果不好。我正在使用以下代码 function check_closing() { var opening = $('#opening').val(); var closing = $('#closing').val(); if(opening > closing) { alert('Opening is greater than Closing. Please enter the correct value');

我想比较两个输入值,只需在javascript中尝试一下,但效果不好。我正在使用以下代码

function check_closing()
{
var opening = $('#opening').val();
var closing = $('#closing').val();
if(opening > closing)
{
    alert('Opening is greater than Closing. Please enter the correct value');
    $('#closing').val('');
}
}
如果打开值输入=8541,关闭值like=8241,则工作正常,但如果关闭值为954,则不工作。请帮忙

提前感谢。

输入元素的值始终是字符串。要将它们作为数字进行比较,必须将它们转换为数字。您可以通过以下方式实现:

parseInt,如果它们是整数,并且您希望指定基数并在第一个非数字字符处停止解析

例如:

var opening = parseInt($('#opening').val(), 10);
// This is the number base, usually 10 ---^^^^
var opening = parseFloat($('#opening').val()); // Always base 10
var opening = +$('#opening').val();
//            ^---- it's hiding here
如果它们是小数,则解析浮点

例如:

var opening = parseInt($('#opening').val(), 10);
// This is the number base, usually 10 ---^^^^
var opening = parseFloat($('#opening').val()); // Always base 10
var opening = +$('#opening').val();
//            ^---- it's hiding here
如果您想让JavaScript猜测基数,则输入+,如果有非数字字符,则输入NaN

例如:

var opening = parseInt($('#opening').val(), 10);
// This is the number base, usually 10 ---^^^^
var opening = parseFloat($('#opening').val()); // Always base 10
var opening = +$('#opening').val();
//            ^---- it's hiding here
…和其他一些。

输入元素的值始终是字符串。要将它们作为数字进行比较,必须将它们转换为数字。您可以通过以下方式实现:

parseInt,如果它们是整数,并且您希望指定基数并在第一个非数字字符处停止解析

例如:

var opening = parseInt($('#opening').val(), 10);
// This is the number base, usually 10 ---^^^^
var opening = parseFloat($('#opening').val()); // Always base 10
var opening = +$('#opening').val();
//            ^---- it's hiding here
如果它们是小数,则解析浮点

例如:

var opening = parseInt($('#opening').val(), 10);
// This is the number base, usually 10 ---^^^^
var opening = parseFloat($('#opening').val()); // Always base 10
var opening = +$('#opening').val();
//            ^---- it's hiding here
如果您想让JavaScript猜测基数,则输入+,如果有非数字字符,则输入NaN

例如:

var opening = parseInt($('#opening').val(), 10);
// This is the number base, usually 10 ---^^^^
var opening = parseFloat($('#opening').val()); // Always base 10
var opening = +$('#opening').val();
//            ^---- it's hiding here

…和其他一些。

您正在比较字符串而不是整数,因此需要将字符串转换为整数。因为作为字符串,'8541'>'8241'

>>>'8541' > '8241'
true
>>>'954' > '8241'
true

>>>8541 > 8241
true
>>>954 > 8241
false
所以你想要:

function check_closing()
{
    var opening = parseInt($('#opening').val());
    var closing = parseInt($('#closing').val());
    if(opening > closing)
    {
        alert('Opening is greater than Closing. Please enter the correct value');
        $('#closing').val('');
    }
}

为了进一步解释为什么会发生这种情况,如果您感兴趣的话:字符串是逐字符比较的,iirc。因此,“9”大于“8”,但“8241”小于“8541”,因为“2”小于“5”。

您正在比较字符串而不是整数,因此需要将字符串转换为整数。因为作为字符串,'8541'>'8241'

>>>'8541' > '8241'
true
>>>'954' > '8241'
true

>>>8541 > 8241
true
>>>954 > 8241
false
所以你想要:

function check_closing()
{
    var opening = parseInt($('#opening').val());
    var closing = parseInt($('#closing').val());
    if(opening > closing)
    {
        alert('Opening is greater than Closing. Please enter the correct value');
        $('#closing').val('');
    }
}

为了进一步解释为什么会发生这种情况,如果您感兴趣的话:字符串是逐字符比较的,iirc。因此,“9”大于“8”,但“8241”小于“8541”,因为“2”小于“5”。

在比较之前将字符串转换为整数:

function check_closing()
{
    var opening = $('#opening').val();
    var closing = $('#closing').val();
    if(parseInt(opening) > parseInt(closing))
    {
        alert('Opening is greater than Closing. Please enter the correct value');
        $('#closing').val('');
    }
}

比较前将字符串转换为整数:

function check_closing()
{
    var opening = $('#opening').val();
    var closing = $('#closing').val();
    if(parseInt(opening) > parseInt(closing))
    {
        alert('Opening is greater than Closing. Please enter the correct value');
        $('#closing').val('');
    }
}

首先,您需要将字符串转换为整数


首先,您需要将字符串转换为整数


你是说'954'>'8241',因为作为字符串,'8541'>'8241'。。。也是数字。是的,哇。现在更新。这两条评论都是这样说的。我本来没有得到它。我的错。你是说'954'>'8241'因为作为字符串,'8541'>'8241'。。。也是数字。是的,哇。现在更新。这两条评论都是这样说的。我本来没有得到它。我的错。