No.12 Q&Aキットの使い方-2 (計算式)

Vesion 2.3以降の、JavaScript をページソースと分けたバージョンに対応した改訂版。

 [Q&Aキット] を使っているけど、計算式を知りたい、という質問が時々あります。[Q&Aキット] の「簡単計算フォーム」は JavaScript (JavaScript とは)で作成してありますので、ソースを見ることで、どのような計算をしているのかを、比較的簡単に知ることができます。

 ● ソースを見るには

 JavaScript が書かれたファイルのソースを見るためには、Q&Aキットのファイルが、パソコンのディスクに保存されている必要があります。オンラインでQ&Aキットを使用している場合は、Q&Aキットのダウンロード ページからダウンロードしてください。
 「win32 自己解凍書庫ファイル」をダウンロードして解凍した場合、標準では、c:\hakko\qakit\html に目的のファイルがあります。

 まず、c:\hakko\qakit\index.htm を開いて、ダウンロードしたQ&Aキットを起動してください。 そして、計算式を見たいページを開いてください。
 そのページ上でマウスを右クリックし、[ソースを表示] または [ソースの表示] と書かれた項目を選択すると、そのページのソースが表示されます。見るのは上の方の、<HEAD> と </HEAD> で囲まれたヘッダー内の、次の赤字の部分です。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD><SCRIPT language="JavaScript" src="s00010.js"></SCRIPT><SCRIPT language="JavaScript" src="s01010.js"></SCRIPT>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<TITLE></TITLE>
</HEAD>

 拡張子が js の、この2つのファイルに、このページの計算をするための JavaScript が書かれています。
 c:\hakko\qakit\html に、このファイルがありますので、テキストエディターなどで開いてください。Windows を標準でインストールした状態では、ファイル上でマウス右クリックし、[編集] を選択すると、メモ帳(notepad.exe)で開くはずです。

 ● 計算式はどこに

 計算式が簡単で、ページ上に表示されている、「熱の計算: 容量計算」で実際に計算式を見てみます。 

 s01010.js を開くと、次のように表示されます。緑色字の部分はわかりやすくするためのコメントで、JavaScript の動作には関係ありません。
/******** 物体を温度上昇させるのに必要な容量 ********/
function calc01()
{
    var s=new Array(4);
    var t;
    with(document.WaForm)
    {
        s[0]=eval(inp01.value); // A
        s[1]=eval(inp02.value); // B
        s[2]=eval(inp03.value); // C
        s[3]=eval(inp04.value); // D
        if(s[0]>0 && s[1]>0 && s[2]>0 && s[3]>0 )
        {
            inp01.value=s[0];
            inp02.value=s[1];
            inp03.value=s[2];
            inp04.value=s[3];

            t=(s[0]*s[1]*s[2])/(s[3]*3600);
            result.value=marume(t); // E

        }
        else
            alert("正しい数値を入力してください");
    }
}

 このフォームは WaForm という名前で、A~Dを入力するテキストボックスの名前は、inp01~inp04です。このテキストボックスの値を数値化(eval)して、s[0]~s[3] に入力しています。その後に、再度テキストボックスinp01~inp04に s[0]~s[3] の値を入力しているのは、テキストボックスに計算式を入力した場合に、それを数値にするためです。
 実際の計算は、t=(s[0]*s[1]*s[2])/(s[3]*3600) という部分だけです。
 次に、t を marume( ) という関数で処理してから、結果のEを表示するテキストボックス result に入力しています。なお、marume( ) というのは、s00010.js に書かれていて、小数点以下の桁数を減らしているだけです。

 ● もっと詳しく見るには

 実際には、JavaScript や HTML(特にフォーム)についての知識がある程度ないと、どの部分が計算式なのか? 判別するのは難しいかもしれません。そのためには、技術情報 の[一番簡単な JavaScript] を見てください。[Q&A キット] のように、計算をするだけなら、第1回~第4回を見れば、大体わかると思います。