2013-07-17 129 views
0

我正在爲uni項目創建購物車,但在測試數組時遇到問題。如果選擇超過5個元素,總價應該有10%的折扣。如果數量大於5的數量選擇了一個元素,則變量折扣工作正常,但如果數量在兩個元素之間分配,則返回0(意思是如果POTATOS = 6,則折扣起作用但是如果POTATOS = 4且BLUEBERRY = 2它不再起作用)。 下面的代碼:嘗試在數組中使用IF語句時遇到問題

function Calc() { 
     var numberPotatos = document.getElementById('potatos_id').value; 
     var numberBlueberry = document.getElementById('blueberry_id').value; 
     var numberStrawberry = document.getElementById('strawberry_id').value; 
     var numberEggplants = document.getElementById('eggplants_id').value; 
     var numberKiwis = document.getElementById('kiwis_id').value; 
     var numberBananas = document.getElementById('bananas_id').value; 

     var output = ""; 



     var MyArray= new Array (6); 
      MyArray [0] = numberPotatos; 
      MyArray [1] = numberBlueberry; 
      MyArray [2] = numberStrawberry; 
      MyArray [3] = numberEggplants; 
       MyArray [4] = numberKiwis; 
      MyArray [5] = numberBananas; 

     var MySecondArray = new Array (6); 
MySecondArray [0] = 6; 
MySecondArray [1] = 7; 
MySecondArray [2] = 5; 
MySecondArray [3] = 22; 
MySecondArray [4] = 12; 
MySecondArray [5] = 4; 

// MORE CODE 


var sum = 0; 
for(var i=0; i< MyArray.length; i++) { 
    sum += MyArray [i ]* MySecondArray[i]; 
    document.getElementById('test').innerHTML = sum; 
} 

    var discount = 0; 
    for(var i=0; i<MyArray.length;i++) 
    { 
     if(MyArray[i] > 5){ 
      discount = (sum - (sum * 0.10)); 
      discount = parseFloat(discount); 
     } 
     document.getElementById('test2').innerHTML = discount; 
     } 



} 
+2

閱讀您自己的問題。你真的期望有人知道你的問題是什麼嗎? – Marcin

+1

@Marcin這對我來說非常有意義。當我們說話的時候擺弄JS。 –

+0

@DannyBeckett「它不起作用」。顯然這是有道理的,因爲軟件只有一種失敗模式。 – Marcin

回答

2

你需要保持總項目的跟蹤,而不是當一個項目超過5:

var totalItems = 0; 
var discount = 0; 
for(var i = 0; i < MyArray.length; i++) 
{ 
    totalItems += MyArray[i]; 
} 

if(totalItems > 5){ 
    discount = (sum - (sum * 0.10)); 
    discount = parseFloat(discount); 
} 
+0

你爲什麼複製'discount = parseFloat(折扣);'部分? – Bergi

+0

@Bergi這只是OP的原始代碼來計算折扣......我剛剛添加了'var totalItems = 0;','totalItems + = MyArray [i];'並將邏輯的其餘部分移到了'for'之外,循環。 –

+0

如果你打算給出很好的答案,你應該糾正所有的錯誤,不僅是那些被要求的:-) – Bergi

1

的問題是,你的超過5只檢查每個給定的文章的部分:

if(MyArray[i] > 5){

不是總的文章,你應該總結所有你獲得的所有不同物品的碎片,所以我建議你這樣做,而不是:

var sum = 0; 
for(var i=0; i< MyArray.length; i++) { 
    sum += MyArray [i ]* MySecondArray[i]; 
} 
document.getElementById('test').innerHTML = sum; 
var discount = 0; 
var totalQuantity = 0; 
for(var i=0; i<MyArray.length;i++){ 
    totalQuantity += MyArray[i]; 
} 
if(totalQuantity > 5){ 
    discount = sum*0.9; 
} 
document.getElementById('test2').innerHTML = discount; 
+0

請將第一筆總和分配移至循環之外 – Bergi

+0

@Bergi的確,感謝您指出了這一點! – DarkAjax