2013-06-25 89 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