1

HTML ファイルにテーブルがあり、他のセルの値とセルの値に基づいて 1 つのセルの値を数式として計算したいと考えています。この写真を見てください:

私の表計算

私の表では、1900 の比率と 3 つの要素が 3 つの列に表示されています。それぞれの数式列の値に基づいて結果列の値を計算するにはどうすればよいですか?

注:式では、、、、およびのみを使用*します。また、テーブルには ID ( ) がありますが、 と には ID もクラス名も割り当てられていません。/+-ratiotable<tr><td>

このようなことを行った別の Web ページを知っている場合は、これを見せてください。

どうもありがとうございました。

編集: 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>

4

2 に答える 2

4

これは本当に興味深い挑戦でした。ここで、あなたが説明したことを行う小さな JSFiddleをまとめました。基本的に、式の文字列部分を対応する値に置き換えてから、結果を評価します。うまくいけば、これが役に立ちます!

私のマークアップ

<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));
    });
});​
于 2012-08-09T13:29:55.473 に答える
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);
    });    
});

このように

于 2012-08-09T13:19:09.283 に答える