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

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

 ● ソースを見るには

 JavaScript が書かれたファイルのソースを見るとき、Q&Aキットのファイルが、パソコンに保存されていた方が簡単です。オンラインで[Q&Aキット]を使用している場合は、Q&Aキットのダウンロード ページからダウンロードしてください。

 ダウンロードしたファイルを解凍し、index.htm を開いて、Q&Aキットを起動してください。 そして、計算式を見たいページを開いてください。
 そのページ上でマウスを右クリックし、[ソースの表示] などという表示の項目を選択すると、そのページのソースが表示されます。見るのは上の方の、</head>の上の、次の赤字のファイル名(s で始まり、拡張子が js )です。

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

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

 ● 計算式はどこに

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

 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回を見れば、大体わかると思います。