0

現在の質問を調査していたので、この記事は有望に思えましたが、それが私の質問に対する答えであるかどうかを自分で理解することはできませんでした. 誰かが私のことを助けてくれたら、それは素晴らしいことです。

これは私の機能です:

function CalculateIMSUB(form) {
  var Atext = form.input_1.value;
  var Btext = form.input_2.value;
  var val = form.val.value;
  var A = eval(Atext);
  var B = eval(Btext);
  if (isNaN(A)) A = 0;
  if (isNaN(B)) B = 0;
  var answer = A - B;
  form.Answer.value = answer;
}

これは私のhtmlです:

<form>
  <INPUT TYPE=TEXT name="input_1" SIZE=15>
  <INPUT TYPE=TEXT name="input_2" SIZE=10>
  <INPUT TYPE="button" VALUE="+" name="SubtractButton"
  onclick="CalculateIMSUB(this.form)">
  <INPUT TYPE=TEXT NAME="Answer" SIZE=12>
  <input type="hidden" name="val" value="" />
</form>

私の質問:

「/」で追加できますか

たとえば、現在、入力 1 テキスト フィールドに 10 / 5 と入力して [計算] をクリックすると、回答テキスト フィールドに 2 の答えが表示されます。誰もが知っているように、10 を 5 で割ると 2 に等しいので、入力 1 テキスト フィールドに 10/5 を入力して、10 + 5 に相当する 15 の答えを受け取ることができるようにしたいと考えています。あなたの助けは大歓迎です、ありがとう、そしてここに私のjsFiddleがあります。

4

2 に答える 2

1

これは、プロトタイプとモジュールを使用した非常に単純な計算機の実装evalです。必要ありません。

var calc = (function calcModule() {
  function Calculator(operation) {
    this.op = operation;
    this._init();
  }

  Calculator.prototype = {
    _init: function() {
      this.n1 = +this.op.split(/\D/)[0];
      this.n2 = +this.op.split(/\D/)[1];
      this.result = this[this.op.match(/\D/)[0]]();
    },
    '+': function() { return this.n1 + this.n2 },
    '-': function() { return this.n1 - this.n2 },
    '*': function() { return this.n1 * this.n2 },
    '/': function() { return this.n1 / this.n2 }
  };

  return function(op) {
    return new Calculator(op);
  };
}());

必要に応じて、シンボルの動作を変更できます。次のように使用します。

console.log(calc('20-15').result); //=> 5
console.log(calc('15/5').result); //=> 3
...

これは非常に単純で、2 つの数値でしか機能しないことに注意してください。

于 2013-02-21T05:24:32.410 に答える
0

これを行うこともできます:

var Atext = form.first.value.replace(/\//g,"+");
var Btext = form.second.value.replace(/\//g,"+");

あなたのevalがそれらを追加として処理するように、舞台裏のすべての除算演算子を置き換えます。(つまり、5/5/5 を入れて 15 を得ることができます。)

于 2013-02-21T05:56:03.597 に答える