2016-05-11 4 views
3

スタンプデューティ計算ツールを作成しようとしています。オブジェクトの配列をループしますか?

現在、私は3つのプロパティを含むオブジェクトの配列を持っている、すべてのオブジェクトは、同じプロパティ名が異なる値を持ちます。

Iボタンがクリックされた場合に表の行にプロパティ1及び2を付加するために、この配列をループしようとしているが、しかし、ループが最初のオブジェクトのプロパティではなく他人だけを付加します。

私は類似したクエリが行われている知っているが、それらのどれも助けませんでした。私は、何かシンプルなものがあると確信しています。

私もここでの問題

enter image description here

をよりよく理解するためのimgを添付あなたが戻って「のTableRow」の置き換え値を割り当てるためです私のコード

  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

を '#入力-[値]は、それが働いていなかった場合にどのような価値がありますか? – Bassie

+0

"tableRow"文字列で '{taxband}'を最初に置き換えた後、次回はもうこれ以上存在しません! – Pointy

+1

また、その関数に 'var'を使って' i'を宣言してください! – Pointy

答えて

5

でいます"tableRow"。最初の反復後、tableRowには "{taxband}"が含まれなくなり、replaceは何の効果もありません。

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

関連する問題