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 并收到 15 的答案,这相当于 10+5。非常感谢您的帮助,谢谢,这是我的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
...

请注意,它非常简单,它只适用于两个数字,但只是为了让您了解......

于 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 回答