のみほーだい!

のみほーだい!TOP
のみほーだい! は、(株)トラストサービス ITソリューション事業部  が運営する、技術情報交流サイトです。

一覧情報の数値データを縦計算したい

2005/11/23
@author y.sato

一覧情報の集計・・・、例えば・・・まー、下の表みたいなヤツですわ。こないだ、職場の同僚が四苦八苦してたので、作ってあげたプログラムです。 簡単じゃんと言われそうですが、僕とかIT業界経験5ヶ月のK君にとっては難しいです。特に一覧の行数が動的に変化する場合はよくわかんなくなります。


とりあえず、下の何個かのテキストボックスに数字を入れてみて下さい。 (というと、アルファベット、かななどを入力したくなる人は、性格が悪いか、テスターか、性格の悪いテスターか・・・まーその辺のどれかですね)


No 商品名 単価
1 商品A
2 商品B
3 商品C
4 商品D
5 商品E
合計

下のように書くと、同じ名前のテキストボックスの個数が、前もって確定できない場合にも対応できますね。 今回は、テキストボックスからカーソルが外れたときに計算させるため「OnBlur」を使っています。

もう1つ隣に数量のテキストボックスなどを追加しても同じ要領で掛け算とか出来ますね。



<script type="text/javascript">
<!--
    function calc() {

        var line;
        var tmp;
        var gokei = 0;
        for(line=0;line<window.document.forms[0].tanka.length;line++){
            tmp = window.document.forms[0].tanka[line].value;

            if (tmp!="" && !isNaN(tmp)) {
                gokei = gokei + parseInt(tmp);
            }
            else if (tmp!="" && isNaN(tmp)) {
                alert("不謹慎です!");
            }
        }
        window.document.forms[0].gokei.value = gokei;
    }
-->
</script>

<form name="testForm">
    <table border="1" cellspacing="0">
        <tr bgcolor="#99FFCC">
            <td>No</td><td>商品名</td><td>単価</td>
        </tr>
        <tr>
            <td>1</td><td>商品A</td><td><input type="text" name="tanka" OnBlur="calc()"></td>
        </tr>
        <tr>
            <td>2</td><td>商品B</td><td><input type="text" name="tanka" OnBlur="calc()"></td>
        </tr>
        <tr>
            <td>3</td><td>商品C</td><td><input type="text" name="tanka" OnBlur="calc()"></td>
        </tr>
        <tr>
            <td>4</td><td>商品D</td><td><input type="text" name="tanka" OnBlur="calc()"></td>
        </tr>
        <tr>
            <td>5</td><td>商品E</td><td><input type="text" name="tanka" OnBlur="calc()"></td>
        </tr>
        <tr>
        <td colspan="2">合計</td><td><input type="text" name="gokei"></td>
        </tr>
    </table>
</form>



ページトップ
のみほーだい!TOP

トラストサービス ITソリューション事業部
Copyright(C) Trust Service Co.,Ltd. All Rights Reserved.