プロが教えるわが家の防犯対策術!

 お尋ねします。
ホームページでの見積もりフォームを作るに当り、excelをアップしても機能しないことはわかりましたが、
java scriptで簡単な電卓程度の計算式が可能ということを知りました。次の計算式はexcelでの計算式なのですが、
これをjava scriptでつくることは可能でしょうか。
((((A+350)/B)+0.999)*C)/1000  ABCは各フォームになっています。
よろしくお願いいたします。

A 回答 (1件)

エクセルファイルをアップロードした場合、顧客の環境にもエクセルが入っているのでしたら、そのファイルを顧客が見た場合ブラウザ内でエクセルが実行されますので、『機能する』はずです。

でも、ブラウザの種類だったり、OSの種類だったり色々と制約が発生します。

で、普通のホームページみたいにしたいのであれば、JavaScriptとHTMLを使って、書き直さなければなりません。ただ、作り方はエクセルとはかなり異なります。セルの中に数式を書くというわけには行きません。

JavaScriptの話に入る前にHTMLのフォーム部品については理解しておいてください。その前提で話を進めます。結論から言うと、貴方の書いた式『((((A+350)/B)+0.999)*C)/1000』は完全に正しいJavaScriptです。
ただし、フォームのテキストフィールドから値を取ってこないといけません。テキストフィールドのidがそれぞれformA,formB,formCだとしたら、JavaScriptはこんな感じです。

A = document.getElementById("formA").value;
B = document.getElementById("formB").value;
C = document.getElementById("formC").value;
X = ((((A+350)/B)+0.999)*C)/1000;

こうすることによって、閲覧者がテキストフィールドに書き込んだ値を計算してXという変数に格納します。これをformXというテキストフィールドに書き込みたいのなら、その後に

document.getElementById("formX").value = X;

とすれば、計算結果が<input type="textfield" id="formX">となっているテキストフィールドに表示されます。

んで、表示されるタイミングですが、エクセルみたいに「書き込み終わったら、計算して表示する」と言うのがJavaScriptだと非常に難しいです。なので別途『計算する』ボタンを作って、ユーザがそれを押したタイミングで計算させるようにすれば良いと思います。

<input type="button" onclick="func();" value="見積もり開始">

適切な場所に上記のタグを入れればボタンが表示されます。このボタンはクリックしたらfuncという関数を呼びます。そこで先ほどのJavaScriptコードをfuncという名前(←実際の名前は何でも良いですが、ボタンのonclickで指定した名前と同じでなければいけません)の関数にしてしまいましょう。

function func(){
/* ここに上記のJavaScriptを書く */
}

これで、希望の動作が出来るはずです。

おまけ:
あとユーザが間違ってenterを押したときに変な動作をしないように<form>タグをちょこっといじっとくと良いと思います。

<form ~省略~ onsubmit="return false;">

この回答への補足

詳しい説明をありがとうございます。

function func(){
/*
document.getElementById("formA").value;
document.getElementById("formB").value;
document.getElementById("formC").value;
document.getElementById("formX").value = X;
X=((((A+350)/B)+0.999)*C)/1000;
*/
}
ここまでは<head>内に書き、
<input type="button" onclick="func();" value="見積もり開始">
は<body>内に書けばよろしいのでしょうか。
すみません、素人同然のものが無謀にも挑戦していますので。
以外にも { が無いとか */* が無いとか構文エラーです、とかいう警告がやたらと出るものですから。

補足日時:2006/12/15 19:19
    • good
    • 0
この回答へのお礼

 ありがとうございました。
試行錯誤の結果、なんとか完成いたしました。
でも難しいものですね。
もっと勉強します、ありがとうございました。

お礼日時:2006/12/17 10:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!