我一直陷入困境,我的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();
}
从控制台我得到的是:
我哪里出错?
答案 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;
}