无法在JavaScript中检查布尔值

时间:2018-08-24 09:38:14

标签: javascript jquery asp.net-mvc

我从模型中获取值,但是在检查值时,它总是进入条件的else部分。我正在警告要获取的值,它们是正确的,但是在if条件下,它不会令人满意。我什至尝试了===

$(document).ready(function() {
  var mark = new Boolean(@Model.isMarketing);
  var revenue = new Boolean(@Model.isRevenue);
  var staff = new Boolean(@Model.isStaff);

  if (revenue == true) {
    $("input[name=isRevenue][value='isRevenue']").prop("checked", true);
  } else if (staff == true) {
    $("input[name=isRevenue][value='isStaff']").prop("checked", true);
  } else if (mark === true) {
    $("input[name=isRevenue][value='isMarketing']").prop("checked", true);
  } else {
    $("input[name=isRevenue][value='None']").prop("checked", true);
  }
});

1 个答案:

答案 0 :(得分:1)

我假设您从@ Model.isMarketing,@ Model.isRevenue等获得的不是真实或“真实”。 永远不要在使用新的Boolean(true)时使用===条件,使用===不会等于true。

我想为您推荐几种方法:
1.使用!而不是新的Boolean(@ Model.isMarketing);  例如

var mark = !!@Model.isMarketing;

2。只需删除新的Boolean()并使用,例如:

var mark = @Model.isMarketing;
if(mark) {
 //do smth.
}
 else {
//do smth else
};

我也想建议如何改善您的代码。

    $(document).ready(function () {
    var trueMark = 'True';
    var mark = trueMark === @Model.isMarketing;
    var revenue = trueMark === @Model.isRevenue;
    var staff = trueMark === @Model.isStaff;

    var value = 'None';
    if (revenue) {
        value = 'isRevenue';
    }
    else if (staff) {
        value = 'isStaff';
    }
    else if (mark) {
        value = 'isMarketing';
    }

    $("input[name=isRevenue][value="+ value + "]").prop("checked", true);    

});

请确保从@Model中获取正确的值