2013-03-06 47 views
0

我是JavaScript新手,我知道我的代码很奇怪,我该如何解决这个问题?另外,如何在函数内调用函数?我想将所有值转换为数字或浮点数并调用解决方案。我该如何改进这个JavaScript类?

<script type="text/javascript"> 

    function Math(){       

     var firstNumber = document.getElementById("firstnumber"); 
     var secondNumber = document.getElementById("secondnumber"); 

     this.add = function(){   
      var fN = Number(firstNumber.value); 
      var sN = Number(secondNumber.value); 
      return (fN + sN); 
     } 

     this.sub = function(){   
      var fN = Number(firstNumber.value); 
      var sN = Number(secondNumber.value); 
      return (fN - sN); 
     } 

     this.div = function(){   
      var fN = Number(firstNumber.value); 
      var sN = Number(secondNumber.value); 
      return (fN - sN); 
     } 


     this.mul = function(){   
      var fN = Number(firstNumber.value); 
      var sN = Number(secondNumber.value); 
      return (fN * sN); 
     } 

    } 

    var myNewMath = new Math();   

</script> 
+0

我们可能错过了HTML部分,了解你在做什么。这是一种计算器练习吗? – Sebas 2013-03-06 20:05:12

+1

实际遇到的问题是什么? – benzonico 2013-03-06 20:06:05

+4

JavaScript中已经有一个名字['Math'](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math)。不要打破它。 – kojiro 2013-03-06 20:07:55

回答

1

的代码不是太在所有的初学者,如果有点重复。

为了简单起见,现在,我可能会做这样的事情,以避免重复调用Number(element.value)

function Calculator() { // NB: not "Math" - that's a standard object     

    var firstNumber = document.getElementById("firstnumber"); 
    var secondNumber = document.getElementById("secondnumber"); 

    function op1() { 
     return Number(firstNumber.value); 
    } 

    function op2() { 
     return Number(secondNumber.value); 
    } 

    this.add = function() {   
     return op1() + op2(); 
    } 

    this.sub = function() { 
     return op1() - op2(); 
    } 

    ... 
} 
+0

+1可能值得注意的是,在调用时你会想使用'new'。 – 2013-03-06 20:11:17

+0

@MatthewBlancarte OP似乎已经知道这一点。 – Alnitak 2013-03-06 20:11:48

+0

哦,哎呀,我没有看到他的代码转储滚动条。你是完全正确的。 :) – 2013-03-06 20:12:20