0

私が使用している関数は、100 で割って合計を計算します。これは、価格が「27.5」のような場合にのみ問題になるため、その場合は末尾にゼロを追加したいと考えています。if ステートメントを使用しますか? もしそうなら、どうやってそれを書くことができますか?

var frm = document.forms.myForm;
frm.onchange = function(e) {
    var tot = 0;
    for( var i = 0, l = frm.elements.length; i < l; i++ ) {
        if( frm.elements[i].checked ) {
            tot += parseFloat( frm.elements[i].getAttribute('data-price') );
        }  
    }
    document.getElementById('total').value = "$" + ( tot / 100 );
}

jsfiddle で合計価格関数を計算する

4

4 に答える 4

1

http://www.javascriptkit.com/javatutors/formatnumber.shtmlごとに .toFixed(2) を使用して、小数点以下 2 桁として維持します。これらの非整数の回答にのみ適用するには、if ステートメントに含めます。

次のような整数をチェックできます。

function isInt(value) {
  return !isNaN(value) && 
     parseInt(Number(value)) == value && 
     !isNaN(parseInt(value, 10));
}
于 2015-12-02T21:03:56.477 に答える
0

次のように実行できます。

var frm = document.forms.myForm;
frm.onchange = function(e) {
    var tot = 0;
    for( var i = 0, l = frm.elements.length; i < l; i++ ) {
        if( frm.elements[i].checked ) {
            tot += parseFloat( frm.elements[i].getAttribute('data-price') );
        }  
    }
    tot = tot/100 == Math.round(tot/100) ? tot/100 : (tot/100).toFixed(2);
    document.getElementById('total').value = tot;
}
<form name="myForm">
<table>
    <thead>
        <tr>
            <th>Key Stage 1</th>
            <th>Buy on Paper</th>
            <th>Buy on CD</th>
            <th>Buy on both</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Year 1 All Blocks & Units (15 assessments in total)</td>
            <td>
                <label>
                <input type="radio" name="keystage1" value="0" data-price="2500" />
                £25</label>
            </td>
            <td>
                <label>
                <input type="radio" name="keystage1" value="1" data-price="2500" />
                £25 †&lt;/label>
            </td>
            <td>
                <label>
                <input type="radio" name="keystage1" value="2" data-price="4000" />
                £40</label>
            </td>
        </tr>
        <tr>
            <td>Year 2 All Blocks & Units (15 assessments in total)</td>
            <td>
                <label>
                <input type="radio" name="keystage1" value="3" data-price="2500" />
                £25</label>
            </td>
            <td>
                <label>
                <input type="radio" name="keystage1" value="4" data-price="2500" />
                £25 †&lt;/label>
            </td>
            <td>
                <label>
                <input type="radio" name="keystage1" value="5" data-price="4000" />
                £40</label>
            </td>
        </tr>
        <tr>
            <td>Give me it all and save some monehhhh!</td>
            <td>
                <label>
                <input type="radio" name="keystage1" value="6" data-price="4750" />
                £47.50</label>
            </td>
            <td>
                <label>
                <input type="radio" name="keystage1" value="7" data-price="4750" />
                £47.50 †&lt;/label>
            </td>
            <td>
                <label>
                <input type="radio" name="keystage1" value="8" data-price="7500" />
                £75</label>
            </td>
        </tr>  
    </tbody>
</table>
                
<table>
    <thead>
        <tr>
            <th>Key Stage 2</th>
            <th>Buy on Paper</th>
            <th>Buy on CD</th>
            <th>Buy on both</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Year 1 All Blocks & Units (15 assessments in total)</td>
            <td>
                <label>
                <input type="radio" name="keystage2" value="0" data-price="2500" />
                £25</label>
            </td>
            <td>
                <label>
                <input type="radio" name="keystage2" value="1" data-price="2500" />
                £25 †&lt;/label>
            </td>
            <td>
                <label>
                <input type="radio" name="keystage2" value="2" data-price="4000" />
                £40</label>
            </td>
        </tr>
        <tr>
            <td>Year 2 All Blocks & Units (15 assessments in total)</td>
            <td>
                <label>
                <input type="radio" name="keystage2" value="3" data-price="2500" />
                £25</label>
            </td>
            <td>
                <label>
                <input type="radio" name="keystage2" value="4" data-price="2500" />
                £25 †&lt;/label>
            </td>
            <td>
                <label>
                <input type="radio" name="keystage2" value="5" data-price="4000" />
                £40</label>
            </td>
        </tr>
        <tr>
            <td>Give me it all and save some monehhhh!</td>
            <td>
                <label>
                <input type="radio" name="keystage2" value="6" data-price="4750" />
                £47.50</label>
            </td>
            <td>
                <label>
                <input type="radio" name="keystage2" value="7" data-price="4750" />
                £47.50 †&lt;/label>
            </td>
            <td>
                <label>
                <input type="radio" name="keystage2" value="8" data-price="7500" />
                £75</label>
            </td>
        </tr>  
    </tbody>
</table>
<form>
    <input type="text" id="total" />

于 2015-12-02T21:07:13.317 に答える
0
var profits=2489.8237
profits.toFixed(3) => returns 2489.824 (round up)
profits.toFixed(2) => returns 2489.82
profits.toFixed(7) => returns 2489.8237000 (padding)
于 2015-12-02T21:03:32.180 に答える