2013-06-25 58 views
-1

我为我的网站的一部分使用JavaScript。JavaScript冲突三次

var fare = Math.round(fare*100)/100; 
if(document.getElementById("doubleFare").checked) 
{ 
    fare = fare * 2; 
} 

但是,当我在脚本中使用这3次,其中一个不起作用。

其他2次我使用+ insted的*。

谁能帮我解决它?谢谢

+0

哪些部件故障,您如何确定故障?你怎么称呼另外两次?你是否每次都用var重新定义'票价'(注意你不应该)?在上面的例子中,您需要将票价定义为某个值,然后才能在分配中使用它。 – scrappedcola

+0

您的问题中没有任何内容表示任何可解决的问题。请发布您所遇到的问题的表述,以及“什么都行不通”的含义。 –

+1

您是否在使用它之前定义车费? var fare = Math.round(票价* 100)/ 100;将只返回NaN。一旦定义了它,你就可以避免用var重新定义它,除非你打算重新定义另一个不合格的函数。 – scrappedcola

回答

1

你的主要问题是,你不断重新定义变量,并在某些情况下,杀死预期的范围。一旦你变数var不要再做。例如你有:

if (total<40) 
{ 
    var cost = parseInt(total) * 1.95; 
} 
    else 
{ 
    var cost = parseInt(total) * 1.65; 
} 
var fare = cost; 

这里的问题是你重新定义成本,所以它有一个范围内的if/else块。然后当您将cost指定为fare时,您实际上只是将fare设置为undefined,因为在if块之外无法看到它。尝试:

/* code to get check box that indicates prices for 1.50 and 1.60 */ 
    var check150 = document.getElementById("yourCheckIdFor150").checked ? true : false; 
    var check160 = document.getElementById("yourCheckIdFor160").checked ? true : false; 
    var cost = parseInt(total) * 1.65; 
    if(total < 40 && !check150 && !check160) 
    { 
     cost = parseInt(total) * 1.95; 
    }else if(check150 && !check160) 
    { 
     cost = parseInt(total) * 1.50; 
    }else if(!check150 && check160) 
    { 
     cost = parseInt(total) * 1.60; 
    } 

    var fare = cost;  
    fare = Math.round(fare*100)/100; 
    if(document.getElementById("doubleFare").checked) 
    { 
     fare = fare * 2; 
    } 

如果你想显示在各个值的价格,那么你将需要使用的票价和初始成本不同的变量,除了打破else if块逼到if(check160)等。如果只显示上面的一个选项可以工作。

+0

谢谢。但我还想在其他价格的双重贿赂下添加一个if(总计<40)。这个怎么做? – Pnorty6

+0

你对其他价格有什么意义? – scrappedcola

+0

现在它的标准是* 1.65在40以下和* 1.95在40以上。这没关系,但我想添加另外两个复选框:* 1.50和* 1.60。所以当检查时,其他价格将显示 – Pnorty6