2013-09-24 26 views
0

我试图实现以下目标:添加两列表中的数字,对它们执行以下操作($ price2 - $ price1)/ $ price1 * 100,然后添加导致在特殊格中表格的顶部。Javascript要加起来并比较两个表格列汇总

<div id="mydiv">Percentage Gain/Loss</div> 
<table id="mytable"> 
<tbody> 
<tr> 
     <th>price1</th><th>price2</th> 
    </tr> 
    <tr> 
     <td>10</td><td>30</td> 
    </tr> 
    <tr> 
     <td>5</td><td>10</td> 
    </tr> 
    <tr> 
     <td>15</td><td>5</td> 
    </tr> 
</tbody> 
</table> 

所以所希望的操作将填充#mydiv与的结果((30 + 10 + 5) - (10 + 5 + 15))/(10 + 5 + 15)* 100会是什么达到这个目标的最佳方式另外,如果price2应该低于price1,那么输出结果应该是负值(我猜像-Math.abs会起作用)。

+1

** ** 1找到一种方式来获得这些值 ** 2 **做对他们的数学(看看'parseInt函数()') * * 3。**将值放入div。 试一试。如果您遇到问题,请发布一些代码。 – ColBeseder

回答

1

您可以使用getElementsByTagName来获取包含您的价格的html元素,然后进行计算。

var sum1 = 0, sum2 = 0; 

var table = document.getElementById('mytable'); 
var rows = table.getElementsByTagName('tr'); // restrict the search to one table 
for (var i=0, length = rows.length; i<length; i++) { 
    var tds = rows[i].getElementsByTagName('td'); 
    if (tds.length >= 1) { 
    var val1 = +tds[0].innerHTML; // unary plus converts the value to Number 
    var val2 = +tds[1].innerHTML; 
    sum1 += val1; 
    sum2 += val2; 
    } 
} 

document.getElementById('mydiv').innerHTML = (sum2 - sum1)/sum1 * 100 + ''; 

工作的jsfiddle:。http://jsbin.com/IqARONE/1/edit

+0

谢谢,这个作品很棒。只需要一件事,我需要它输出最多2位小数,我应该在哪里添加.toFixed(2)方法? – Epleroma

+0

您应该在最后一行将值设置为innerHTML之前正确地将其放好。我添加了''来显而易见的值是一个字符串,你可以做.toFixed(2)代替。优先考虑! – Tibos

1

我只想把班级每个td,是这样的:

<tr> 
     <th>price1</th><th>price2</th> 
    </tr> 
    <tr> 
     <td class="price1">10</td><td class="price2">30</td> 
    </tr> 
    <tr> 
     <td class="price1">5</td><td class="price2">10</td> 
    </tr> 
    <tr> 
     <td class="price1">15</td><td class="price2">5</td> 
    </tr> 

然后,在你的JavaScript,使用getElementsByClassName方法来获取价格1标签的阵列和price2标签的第二阵列,然后使用parseInt方法来获取每个标签内的实际值并计算需要的值。然后你使用类似$('#mydiv').html(total)的值来表示这个值。希望这可以帮助。