■ Q&Aキットの計算式を知るには?

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

 ● ソースを見るには

 Q&Aキットの、計算式を見たいページを開いてください。そのページ上でマウスを右クリックし、[ソースを表示] などと書かれた項目を選択すると、そのページのソースが表示されます。見るのは上の方の、</head>の上の、次の赤字のファイル名(拡張子が js )です。s01010.htm(★ 熱の計算 容量計算)では、次の部分になります。

<title>★ 熱の計算: 容量計算</title>
<script src="s00010.js"></script>
<script src="s01010.js"></script>
<script src="h00010.js"></script>
<script>disp_css();</script>
</head>

 拡張子が js の、この3つが JavaScript のファイルです。計算式は、開いたページと拡張子だけ異なる、s01010.js に書かれています。

 ● 計算式はどこに

 計算式が簡単な、「★ 熱の計算 容量計算」で実際に計算式を見てみます。 

 s01010.js を開くと、次のように表示されます。緑色、赤色字の部分はわかりやすくするためのコメントで、JavaScript の動作には関係ありません。
/******** 物体を温度上昇させるのに必要な容量 ********/
function calc01()
{
    var s=new Array(4);
    var t;
    with(document.WaForm)
    {
        try
        {
            s[0]=eval(inp01.value); // A
            s[1]=eval(inp02.value); // B
            s[2]=eval(inp03.value); // C
            s[3]=eval(inp04.value); // D
        }
        catch(e)
        {
            alert("正しい数値を入力してください");
            return false;
        }
        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回を見れば、大体わかると思います。