2013-09-24 24 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)的值來表示這個值。希望這可以幫助。