2016-05-11 160 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