JavaScript if if语句被忽略

时间:2014-12-10 10:08:32

标签: javascript if-statement boolean-operations

我在下面有一个简单的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变量设置为12时,仍会通过添加setupPrice等来计算basicPrice + StatPrice...变量。

6 个答案:

答案 0 :(得分:4)

您需要使用:

if (tanksize !== 1 && tanksize !== 2) {

使用&&运算符或

if (!(tanksize ===1 || tanksize === 2)) {

在您的代码中,只要值不是1或不是2,就会执行第一个块,这相当于它始终在执行。

如果值为1,则tanksize != 2true,因此tanksize!=1 || tanksize!=2true

如果值为2,则tanksize != 1true,因此tanksize!=1 || tanksize!=2true

换句话说,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) {
  // ...
}