【问题标题】:jQuery logical operator not working as expected in jquery [duplicate]jQuery逻辑运算符在jquery中没有按预期工作[重复]
【发布时间】:2017-04-18 11:01:08
【问题描述】:

下面的代码不起作用。

var day = $("#day").val();
var week = $("#week").val();
var month = $("#month").val();

if (day > week) {
    alert(day > week);
    $('#error').text("Day Limit Must be smaller than Week Limit");
    $('.alert-danger').show();
    setTimeout(function () {
        $(".alert-danger").hide();
    }, 5000);
    return false;
}
if (day > month) {
    $('#error').text("Day Limit Must be smaller than Month Limit");
    $('.alert-danger').show();
    setTimeout(function () {
        $(".alert-danger").hide();
    }, 5000);
    return false;
}
if (month < week) {
    $('#error').text("Week Limit Must be smaller than Month Limit and greater than Day Limit");
    $('.alert-danger').show();
    setTimeout(function () {
        $(".alert-danger").hide();
    }, 5000);
    return false;
}

我在这里得到day=4week=6month=9。在这种情况下,所有if 条件都可以正常工作。但是month=10,第二个if 条件不起作用(4&gt;10) 实际上是false,但它得到了true

我的逻辑有什么问题?

【问题讨论】:

  • .val() 返回字符串,需要转成数字
  • 您正在比较 字符串。这里某处有一个重复...(val 在正常情况下返回一个字符串 [异常情况:空的 jQuery 对象或 jQuery 对象中的非字段元素,在这种情况下你会得到undefined]。)

标签: jquery


【解决方案1】:

在比较之前您应该将值转换为整数

var day = parseInt($("#day").val());
var week = parseInt($("#week").val());
var month = parseInt($("#month").val());

【讨论】:

    【解决方案2】:

    您需要先通过parseint 将这些值转换为整数,然后将它们作为数字进行比较。

    【讨论】:

    • 我们不需要另一个回答这个问题。
    猜你喜欢
    • 2013-06-23
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 2013-03-25
    • 2019-05-29
    • 2021-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多