0

私のjqueryがtdを追加し、小計と合計の合計を取得するのに正しいかどうか疑問に思っていました。

私のjqueryは、

$(document).ready(function(){
    var sum = 0;
    var td = $('input[name=sumof]').val();
    jQuery.each(td,function(number){
            sum += parseInt($(this).val());
        $('#total_f').val(sum);
    });
})

これは私のhtmlです

<div class="quotation_computation" style="margin-top:50px;">
    <table cellpadding="5" cellspacing="0" width="100%">
        <tr>
            <th>#</th>
            <th>Definition</th>
            <th>Amount</th>
            <th>Total</th>
            <th>BTW</th>
        </tr>
        <?
        $get_details = mysql_query( "SELECT * FROM jon_com_quo_computation WHERE com_code = '".$_GET['ccom']."' " ) or die ( mysql_error());

            $found_record = mysql_num_rows( $get_details );
            if ( $found_record != 0 ) {
            while( $set_det = mysql_fetch_array( $get_details ) ) {
                $total = $set_det['quo_quantity'] * $set_det['quo_amt'];
            ?>
        <tr>
            <td class="add_text">
                    <?=$set_det['quo_quantity'];?> x
            </td>
            <td class="add_text" width="250"><?=$set_det['quo_definition'];?></td>
            <td class="sum_text">
                    <?=$set_det['quo_amt'];?>
                <input type="hidden" name="sumof" value="<?=$set_det['quo_amt'];?>" />
            </td>
            <td class="add_text" id="total"><?=$total;?></td>
            <td class="add_text"><?=$set_det['quo_btw'];?></td>
        </tr>
        <?
                }
            } else {
            ?>                
        <tr>
            <td class="add_text">#</td>
            <td class="add_text">Definition</td>
            <td class="add_text">Amount</td>
            <td class="add_text" id="total">Total</td>
            <td class="add_text">BTW</td>
        </tr>
        <?
            }
            ?>
    </table>
</div>

<div class="sub_total_computation" style="width:200px; position:relative; left:325px;">
<?
    $get_total_computation = SET_SQL( "SELECT quo_btw FROM jon_com_quo_computation WHERE com_code = '".$_GET['ccom']."' " );


    ?>
    <table cellpadding="5" cellspacing="0" width="100%">
        <tr>
            <td><strong>Sub Total</strong></td>
            <td>
                <span id="total_f"></span>
                <input type="hidden" name="total_f" value="" />
            </td>
        </tr>
        <tr>
            <td><?=$get_total_computation['quo_btw'];?></td>
            <td><?=$btw;?></td>
        </tr>
        <tr>
            <td><strong>Total</strong></td>
            <td><?=$btw;?></td>
        </tr>
    </table>
</div>

あなたがhidden name=sumofそこに答えを置くつもりであるのを見たtd class=sum_textが、答えは現れませんでした。.keyupjqueryが表示されるように関数で使用する必要がありますか?または私はPHPそれが機能するように使用する必要がありますか?

ありがとうございます。

4

2 に答える 2

2

これを試して:

$(document).ready(function(){
   var sum = 0;
   $('input[name=sumof]').each(function(){
        sum += parseInt($(this).val());
   });
   $('#total_f').val(sum);
 });

変数tdは、入力要素から1つの値のみを取得し、each()関数でループするオブジェクト(入力要素)として使用するには不十分です。また、関数に合計を1回だけ出力させる必要があるので、各ループからそれを取り出しました。

関数をさらに効率的にするには、代わりにtd要素の内容だけを使用して、非表示の入力要素を完全に削除することができます。

$(document).ready(function(){
   var sum = 0;
   $('td.sum_text').each(function(){
        sum += parseInt($(this).text());
   });
   $('#total_f').val(sum);
 });
于 2012-12-08T01:11:43.620 に答える
0

ここに問題があります:

var td = $('input[name=sumof]').val();    // you are getting the value of the first matched element
jQuery.each(td,function(number){
    sum += parseInt($(this).val());

tdコレクションが含まれていると想定していますが、を使用するval()と、結果は次のようになります。Description: Get the current value of the first element in the set of matched elements.

したがって、次のように変更します。

var td = $('input[name=sumof]');
于 2012-12-08T01:12:55.760 に答える