Angular 2 - 如果条件对所有值都为真

时间:2018-05-16 07:07:43

标签: javascript angular if-statement

我一直陷入困境,我的if条件在所有条件下都返回true,我正在检查值是否更高。

代码:

 hideAmountModal() {
    var self = this;
    self.home_delivery_charge = self.storeService.fetchHomedeliveryData(self.shopId);
    self.home_delivery_charge.subscribe((res: any) => {
      for (var i = 0; i < res.length; i++) {
        if (self.deliveryData.delivery_charge > res[i].amount) {
          self.check_delivery_charge = true;
          console.log('Deliverycharge',self.deliveryData.delivery_charge,'result',res[i].amount);
          console.log('deliver charge is greater',self.check_delivery_charge);
        }
        else if (self.deliveryData.delivery_charge < res[i].amount){
            self.check_delivery_charge = false;
        }
      }
    })
    self.DeliveryChargeValue = true
    self.selectAmountModal.hide();
  } 

从控制台我得到的是:

enter image description here

我哪里出错?

4 个答案:

答案 0 :(得分:1)

尝试将两个值都转换为数字类型

if (parseInt(self.deliveryData.delivery_charge) > parseInt(res[i].amount)) {
}

答案 1 :(得分:1)

更改您的if条件:

if (self.deliveryData.delivery_charge > res[i].amount)

对此:

if (Number(self.deliveryData.delivery_charge) > Number(res[i].amount))         

这样做,您将显式type-casting您的输入类型转换为数字。

请记住:如果您的输入无法转换为数字类型,您将获得NaN(非数字)。

如果您不想要这种行为,您可以始终使用parseInt Number()使用Javascript&#39; searchstring = $("#id-of-textbox").val() 功能,如图所示here

答案 2 :(得分:0)

请注意,因为您没有处理equal案件,您应该将其包含在else if中。你能检查一下你比较的数值是多少?这可能就是问题所在。

答案 3 :(得分:0)

console.log仅在值为true时才为值

尝试在此处添加console.log

else if(self.deliveryData.delivery_charge < res[i].amount) {
  self.check_delivery_charge = false;
}