javascript计算器:加号替代品

时间:2013-02-21 05:07:05

标签: javascript calculator

当我正在研究我目前的问题时,article似乎很有希望,但我不知道自己是否是我的问题的答案。所以,如果有人能帮助我,那就太棒了。

这是我的功能:

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

2 个答案:

答案 0 :(得分: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
...

请注意,它非常简单,只能使用两个数字,但只是让你有个想法...

答案 1 :(得分:0)

你也可以这样做:

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

这将取代幕后的所有除法运算符,以便您的eval将它们作为加法处理。 (所以你可以把5/5/5拿到15,或者你有什么。)