Javascript 根据公式和其他单元格中的值计算单元格值

Javascript 根据公式和其他单元格中的值计算单元格值,javascript,jquery,html,Javascript,Jquery,Html,我在HTML文件中有一个表,我想根据其他单元格的值计算一个单元格的值,并将单元格值作为公式。请看这张照片: 在我的表格中,我有1900个比率和三列中的三个因子。如何根据各自的公式列值计算结果列值 注意:我在公式中仅使用*、/、+和-。此外,表有一个ID(ratiotable),但是和没有为它们分配任何ID或类名 如果你知道另一个网页做了类似的事情,请让我看看这个 多谢各位 编辑:HTML代码如下所示。注意,我剪了很多行。实际行数为1900: <table> <thead>

我在HTML文件中有一个表,我想根据其他单元格的值计算一个单元格的值,并将单元格值作为公式。请看这张照片:

在我的表格中,我有1900个比率和三列中的三个因子。如何根据各自的公式列值计算结果列值

注意:我在公式中仅使用
*
/
+
-
。此外,表有一个ID(
ratiotable
),但是
没有为它们分配任何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>

比率名称
第一因子
因素2
因子3
公式
后果
名称1
22
11
因子1/因子2
姓名2
22
33
11
系数1/系数2*系数3
名称1
12
4.
(系数1+系数2)/系数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);
    });    
});

一样循环所有行并使用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);
    });    
});

就像这是一个非常有趣的挑战。我已经整理了一个和你描述的一样的小东西。它本质上是将公式的字符串部分替换为对应的值,然后计算结果。希望这有帮助

我的标记

<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>

这是一个非常有趣的挑战。我已经整理了一个和你描述的一样的小东西。它本质上是将公式的字符串部分替换为对应的值,然后计算结果。希望这有帮助

我的标记

<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>

你能把你正在使用的html放在哪里吗it@rahul我刚刚编辑了这个问题,现在是gud,你能告诉我你的公式在这个术语中是唯一的因子1因子2…你可以看到Chris Francis的答案我想这会给你一个开始我通常不相信写出这样一个“完整”的解决方案,所以,但我对这件事太感兴趣了,所以没有尝试
/geekout
您是否可以放置用于it@rahul我刚刚编辑了这个问题,现在是gud,你能告诉我你的公式在这个术语中是唯一的因子1因子2…你可以看到Chris Francis的答案我想这会给你一个开始我通常不相信写出这样一个“完整”的解决方案,所以,但我对这件事太感兴趣了,所以没有尝试
/geekout
谢谢,但是公式列决定了我应该如何计算结果,不幸的是,表的行数是1900。然后循环每行,获取单元格值并显示结果!谢谢,但公式列决定了我应该如何计算结果,不幸的是,表的行数是1900。然后循环每行,获取单元格值并显示结果!回答得好!为了子孙后代,我还冒昧地将您的代码复制到了答案本身。伟大的答案!为了子孙后代,我还冒昧地将您的代码复制到了答案本身。