JQuery - 无法进行简单的条件测试

时间:2016-12-31 09:14:57

标签: javascript jquery arrays

我有一个问题很简单,我想,但我无法弄清楚如何解决它!

这是我的js代码:

$('#attendees_nb_div').change(function() {
    if ($('#attendees_nb').val() < 1){
        $('#attendees_nb').val(1);
    }
    $('.reservation_time_cell_div').each(function() {
        var array = this.id.split(':');
        if (array[4] < $('#attendees_nb').val()) {
            $(this).css('background-color', 'red');
            console.log('Value of array[4]: ', array[4]);
            console.log('Value of $(\'#attendees_nb\').val(): ', $('#attendees_nb').val());
            console.log('Test result array[4] < $(\'#attendees_nb\').val(): ', array[4] < $('#attendees_nb').val());
        }
    });
});

以下是控制台的输出:

Value of array[4]:  15
Value of $('#attendees_nb').val():  2
Test result array[4] < $('#attendees_nb').val():  true

为什么15&lt; 2对吗? 我也注意到我的结果是: 350&lt; 4,35&lt; 4,50&lt; 6,60&lt; 7 ... 所以我猜它只针对数组[4]的第一个数字进行测试,但为什么呢? 如何测试所有数字?

3 个答案:

答案 0 :(得分:3)

您需要将array[4]$('#attendees_nb').val()转换为如下所示的整数

    if (parseInt(array[4]) < parseInt($('#attendees_nb').val())) {

这会对你有帮助。

答案 1 :(得分:1)

在您检查的值周围添加parseInt()

答案 2 :(得分:1)

你正在做的是比较一个字符串和一个整数。val()的结果总是一个字符串。要将它与一个整数进行比较,你必须把它变成一个整数 使用parseInt()将字符串作为参数并将其作为整数返回。所以你在这里:

$('#attendees_nb_div').change(function() {
    //Store it to speed up things a little bit
    var valueToCheck = parseInt(($('#attendees_nb').val());
    if ($valueToCheck < 1){
        $('#attendees_nb').val(1);
    }
    $('.reservation_time_cell_div').each(function() {
        var array = this.id.split(':');
        if (array[4] < valueToCheck) {
            $(this).css('background-color', 'red');
            console.log('Value of array[4]: ', array[4]);
            console.log('Value of $(\'#attendees_nb\').val(): ', valueToCheck);
            console.log('Test result array[4] < $(\'#attendees_nb\').val(): ', array[4] < valueToCheck);
        }
    });
});

来自MDN:

  

parseInt()函数解析字符串参数并返回指定基数的整数(数学系统中的基数)。

有关parseInt

的更多详情