在下面的程序中,我使用3 if条件,但if中间的if语句不起作用,last if if语句正常,当我将第三个if语句更改为第二个语句时,第二个语句不能正常工作。 第三,if语句正常
function calculate() {
var quantity = document.getElementById("quantity").value;
var price = document.getElementById("price").value;
var discount = document.getElementById("discount").value;
var tax = document.getElementById("tax").value;
if((quantity && price ) != null) {
amount = quantity * price;
document.getElementById("amount").value = amount;
} else {
alert("price & tax required");
}
if(discount != null) {
var discount_amount = (quantity*price*discount)/100;
amount = (quantity*price) - discount_amount;
document.getElementById("amount").value = amount;
} else {
document.getElementById("amount").value = quantity * price;
}
if(tax != null) {
var tax_amount = (quantity*price*tax)/100;
amount = (quantity*price) + tax_amount;
document.getElementById("amount").value = amount;
} else {
document.getElementById("amount").value = quantity * price;
}
}
答案 0 :(得分:2)
input.value
返回一个永远不会null
的字符串,但它可以是一个空字符串,例如''
。
在数字上下文中将空字符串a转换为零。如果不需要,则需要进行明确检查,例如
if (input.value === '') {
return;
}
答案 1 :(得分:0)
if(discount != null)
折扣将是空字符串而不是空检查:
if(discount !== "")
答案 2 :(得分:0)
您不需要在任何if
测试中明确检查null,因为零值和未定义
if (quantity && price) {
// only want to come in here for non-zero values of both
}
if (discount) {
// only interested in the discount for non-zero values
}
if (tax) {
// only interested in non-zero values of tax
}
答案 3 :(得分:0)
if(discount!= null)
假设discount变量是空字符串。你对结果有什么看法?
if(""!=null)
它将是true
如果您的字符串包含一些数据
if("someData"!=null)
它将再次true
。
我不怪你。 Javascript在这种情况下有一些神奇的行为。
在javascript中,有很多逻辑操作可以表示为false
if条件。在代码下面,所有if
语句都返回false
if(""){//code here}
if(null){//code here}
if(0){//code here}
开发者不应该比较两种不同的类型,例如null
和string
。
为了以防万一,我建议你避免双等号==
。使用三元组===
它是类型敏感的。
见here