- ベストアンサー
JavaScriptの計算式を添削してください。
- JavaScriptの計算式に関する添削をお願いします。
- 250×変数A+200×変数B+150×変数Cの計算式を使用しています。
- JavaScript初心者ですが、動作は問題ありません。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ご希望の動作はこれで出来るかと思うんですが、何故に eval() を使ってるんでしょう? 全部 eval() ははずして、 document.f.t4.value = 250 * document.f.t1.value + 200 * document.f.t2.value + 150 * document.f.t3.value; ってすればいいのに…って思います。 (eval() すると、各 value が消されたら NaN になりません?eval() じゃなければ、null は 0 として計算されます) あと、気になったのが、 > 変数A~Bには整数が入ります。 って事ですが、これでは整数以外の文字を入力されてしまいます。 その点は考慮に入れませんでした? それを抑止するのは、結構難しいとは思いますが…。 整数以外の入力を抑止するために、私だったら、例えば calc() を、 --- function calc(TextObject) { var re = new RegExp('(\\d*)\\D+(\\d*)', 'g'); if(TextObject.value.match(re)){ TextObject.value = RegExp.$1 + '' + RegExp.$2; } document.f.t4.value = 250 * document.f.t1.value + 200 * document.f.t2.value + 150 * document.f.t3.value; return true; } --- こういう風に書き換えて、各テキストボックスのイベントハンドラを onkeyup="calc(this)" にして、calc に対して自信のオブジェクトを渡して、数字以外を消す機能をつけます。 ちなみに、RegExp() を使ってるので、IE4、NN4 以上で動かすことを前提にしてますが、どうせ onkeyup イベントハンドラも同じく IE4、NN4 以降で動作するので、いいっかな~って感じです。
お礼
>eval() すると、各 value が消されたら NaN になりません? NaNになりました。 さっそくeval() は外しておきます。 >整数以外の入力を抑止するために~ すごい!すご過ぎる!! 私には絶対にできないワザです。 JavaScriptの奥の深さと言うか こんなこともできるなんて初めて知りました。 本当にありがとうございました。 また機会がありましたらよろしくお願いします。