2012-08-09 129 views
1

我在HTML文件中有一個表格,我想根據其他單元格的值和單元格值計算一個單元格的值作爲公式。看看這張照片:根據公式和其他單元格中的值計算單元值

my table calculate

在我的表,我有1900比和三個因素在三列。我如何根據各自的公式列值計算結果列值?

注:我只用*/+,在我的公式-。此外,該表具有一個ID(ratiotable),但<tr><td>沒有分配給它們的任何ID或類名稱。

如果你知道另一個網頁做了這樣的事情,請讓我看看這個。

非常感謝。

編輯: HTML代碼是這樣的。請注意,我剪了一些行。行的實際數量爲1900:

<table> 
<thead> 
    <tr> 
     <th>Ratio Name</th> 
     <th>Factor1</th> 
     <th>Factor2</th> 
     <th>Factor3</th> 
     <th>Formula</th> 
     <th>Result</th> 
    </tr> 
</thead> 
<tbody> 
    <tr> 
     <td>Name1</td> 
     <td>22</td> 
     <td>11</td> 
     <td></td> 
     <td>Factor1/Factor2</td> 
     <td></td> 
    </tr>  
    <tr> 
     <td>Name2</td> 
     <td>22</td> 
     <td>33</td> 
     <td>11</td> 
     <td>Factor1/Factor2*Factor3</td> 
     <td></td> 
    </tr> 
    <tr> 
     <td>Name1</td> 
     <td>12</td> 
     <td></td> 
     <td>4</td> 
     <td>(Factor1+Factor2)/Factor3</td> 
     <td></td> 
    </tr> 
</tbody> 

+0

你可以把你正在使用它 – rahul 2012-08-09 13:20:20

+0

@rahul我編輯的問題,剛纔 – 2012-08-09 13:29:58

+0

實際的HTML這是GUD現在可以請你告訴我,你的公式將只用這個術語來說是Factor1 Factor2 ... – rahul 2012-08-09 13:31:37

回答

4

這是一個非常有趣的挑戰。我已經放在一起做了你所描述的一點點JSFiddle here。它基本上用公式的字符串部分替換其值對應部分,然後證明結果。希望這有助於!

我的標記

<table> 
    <thead> 
     <tr> 
      <th>Ratio Name</th> 
      <th>Factor1</th> 
      <th>Factor2</th> 
      <th>Factor3</th> 
      <th>Formula</th> 
      <th>Result</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <td>Name1</td> 
      <td>22</td> 
      <td>11</td> 
      <td></td> 
      <td>Factor1/Factor2</td> 
      <td></td> 
     </tr>  
     <tr> 
      <td>Name2</td> 
      <td>22</td> 
      <td>33</td> 
      <td>11</td> 
      <td>Factor1/Factor2*Factor3</td> 
      <td></td> 
     </tr> 
     <tr> 
      <td>Name1</td> 
      <td>12</td> 
      <td></td> 
      <td>4</td> 
      <td>(Factor1+Factor2)/Factor3</td> 
      <td></td> 
     </tr> 
    </tbody> 
</table> 

我的JavaScript

$(function() { 
    $('tbody tr').each(function() { 
     var $this = $(this), 
      f1 = $this.find('td').eq(1).text() || 0, 
      f2 = $this.find('td').eq(2).text() || 0, 
      f3 = $this.find('td').eq(3).text() || 0, 
      formula = $this.find('td').eq(4).text(), 
      resultTd = $this.find('td').last(); 

     formula = formula.replace('Factor1',f1) 
         .replace('Factor2',f2) 
         .replace('Factor3',f3); 

     resultTd.text(eval(formula)); 
    }); 
});​ 
+1

很好的答案!爲了後代的緣故,我冒昧地將你的代碼複製到答案中。 – FishBasketGordo 2012-08-09 14:11:37

+0

非常好,謝謝! :) – 2012-08-09 14:17:35

3

遍歷所有行和使用JavaScript eval()函數

function cellValue(x,y){ 
    return $('#ratiotable').find('tr:eq('+(y+1)+')>td:eq('+(x+1)+')').text();  
} 

function setCellValue(x,y,s){ 
    $('#ratiotable').find('tr:eq('+(y+1)+')>td:eq('+(x+1)+')').text(s);  
} 

$(function(){ 
    $.each($('#ratiotable tr'),function(i,tr){ 
     var Factor1 = parseInt(cellValue(0,i)); 
     var Factor2 = parseInt(cellValue(1,i)); 
     var Factor3 = parseInt(cellValue(2,i)); 
     var Formula = $.trim(cellValue(3,i)); 
     var Result = eval(Formula); 
     setCellValue(4,i,Result); 
    });  
}); 

this

+0

謝謝但公式列決定我應該如何計算結果,不幸的是表的行數是1900. – 2012-08-09 13:23:01

+1

然後遍歷每一行,獲取單元格值並顯示結果! – UnLoCo 2012-08-09 13:31:19

+0

想要這樣http://jsfiddle.net/unloco/L6fRj/1/ – UnLoCo 2012-08-09 13:41:55

相關問題