我在下面有一个简单的if语句:
function calculateTotal() {
if (tanksize != 1 || tanksize != 2) {
var setupPrice = basicPrice + StatPrice() + DigiStatPrice() + IRPrice() + UVPrice() + cagePrice();
var setupPrice2 = toFixed(setupPrice, 2);
} else {
var setupPrice = basicPrice;
var setupPrice2 = toFixed(setupPrice, 2);
}
//display the result at the top of page
var divobj = document.getElementById('totalPrice');
divobj.innerHTML = "£" + setupPrice2;
//display the result at the bottom of page
var divobj = document.getElementById('totalPrice2');
divobj.innerHTML = "£" + setupPrice2;
}
但是当tanksize
变量设置为1
或2
时,仍会通过添加setupPrice
等来计算basicPrice + StatPrice...
变量。
答案 0 :(得分:4)
您需要使用:
if (tanksize !== 1 && tanksize !== 2) {
使用&&
运算符或
if (!(tanksize ===1 || tanksize === 2)) {
在您的代码中,只要值不是1或不是2,就会执行第一个块,这相当于它始终在执行。
如果值为1
,则tanksize != 2
为true
,因此tanksize!=1 || tanksize!=2
为true
。
如果值为2
,则tanksize != 1
为true
,因此tanksize!=1 || tanksize!=2
为true
。
换句话说,tanksize!=1 || tanksize!=2
总是true
,无论tanksize
的价值是多少。
答案 1 :(得分:3)
这句话总是如此:
if(tanksize!=1 || tanksize!=2){
因为,当tankize = 1时,tankize不同于2
当tankize = 2时,tankize与1不同。
这不是javascript错误,您只需更改逻辑以在if
中进行正确的测试......
答案 2 :(得分:2)
尝试使用if(tanksize!=1 && tanksize!=2){
代替if(tanksize!=1 || tanksize!=2){
答案 3 :(得分:1)
事实上,两个NOT EQUALS的OR运算符总是为TRUE(检查布尔表)和条件语句"如果"检查为TRUE或FALSE,因此您的代码将始终返回TRUE
使用类似
的内容if(tanksize!=1 && tanksize!=2){
# Your code
}
答案 4 :(得分:1)
(tankize!= 1 || tankize!= 2)这句话总是如此。改变运算符||到&&
答案 5 :(得分:1)
您的第一个条件始终是true
,例如,如果某些x = 1
与2不同,反之亦然。
所以这个条件有点等于。
if(true) {
// ...
}