• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JavaScriptの計算式を添削してください。)

JavaScriptの計算式を添削してください。

このQ&Aのポイント
  • JavaScriptの計算式に関する添削をお願いします。
  • 250×変数A+200×変数B+150×変数Cの計算式を使用しています。
  • JavaScript初心者ですが、動作は問題ありません。

質問者が選んだベストアンサー

  • ベストアンサー
  • nipotan
  • ベストアンサー率59% (134/227)
回答No.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 以降で動作するので、いいっかな~って感じです。

noname#10927
質問者

お礼

>eval() すると、各 value が消されたら NaN になりません? NaNになりました。 さっそくeval() は外しておきます。 >整数以外の入力を抑止するために~ すごい!すご過ぎる!! 私には絶対にできないワザです。 JavaScriptの奥の深さと言うか こんなこともできるなんて初めて知りました。 本当にありがとうございました。 また機会がありましたらよろしくお願いします。

関連するQ&A

専門家に質問してみよう