2016-05-11 166 views
3

我想創建一個印花稅計算器。循環遍歷一組對象?

目前,我有一個包含3個屬性的對象數組,每個對象具有相同的屬性名稱,但具有不同的值。

我試圖通過這個數組循環來追加屬性1和2到錶行,如果單擊按鈕,但是該循環只追加第一個對象屬性而不是其他。

我知道有類似的疑問,但他們都沒有幫助。我確定有一些我很想念的東西。

我還附上以更好地理解這個問題

enter image description here

這裏的IMG是我的代碼

  var taxbands = [ 
     { 
      min: 0, 
      max: 125000, 
      percent: 0 
     }, 
     { 
      min: 125000, 
      max: 250000, 
      percent: 0.02 
     }, 
     { 
      min: 250000, 
      max: 925000, 
      percent: 0.05 
     }, 
     { 
      min: 925000, 
      max: 1500000, 
      percent: 0.1 
     }, 
     { 
      min: 1500000, 
      max: null, 
      percent: 0.12 
     } 
    ] 

    var tableRow = "<tr><td>{taxband}</td><td>{percent}</td><td>{taxable}</td><td>{TAX}</td></tr>"; 

    $('#calculate').on('click', function calculateButton() { 
     calculateStampDuty(); 
    }) 

    function calculateStampDuty() { 

     var userInput = parseInt($("#input-value").val()); 

     for (i = 0; i < taxbands.length; i++) { 
      if (userInput < 125000) { 
       tableRow = tableRow.replace("{taxband}", taxbands[i].min + "-" + taxbands[i].max); 
       $("#explained-table").append(tableRow); 
      } 
     } 

    } 
+0

不'#輸入value'必須在它不工作的情況下什麼樣的價值? – Bassie

+0

在第一次替換「tableRow」字符串中的{taxband}之後,下一次將不再存在! – Pointy

+1

另外,在那個函數中用'var'聲明'i'! – Pointy

回答

5

那是因爲你分配「的TableRow」的替代值回「tablerow的」。第一次迭代之後,tableRow不再包含「{taxband}」,替換不起作用。

tableRow = tableRow.replace("{taxband}", taxbands[i].min + "-" + taxbands[i].max); 
       $("#explained-table").append(tableRow); 

而應該增加一箇中間變量:

var myRow = tableRow.replace("{taxband}", taxbands[i].min + "-" + taxbands[i].max); 
       $("#explained-table").append(myRow); 
+0

是的,做到了這一點,有道理,當你說出來,謝謝 – Sai