转换为数学?

时间:2015-04-07 21:04:37

标签: javascript

我如何转换我的数学作品,所以它不仅仅返回数字和运算符

我尝试过:

<script>
    function visResultat() {
        var tal1 = document.getElementById("txtTal1").value;
        var tal2 = document.getElementById("txtTal2").value;
        var operator = document.getElementById("operator").value;
        var resultatet = parseInt(tal1) + operator + parseInt(tal2);
        resultat.innerHTML = resultatet;
    }
</script>

现在它只返回文本框1&amp;中的数字。 2和从选择菜单中选择的操作员。关于它现在如何的例子:

42 + 23

关于我希望它看起来如何的示例。

65

我是全新的javascript - 谢谢,Anton

3 个答案:

答案 0 :(得分:0)

实际执行此操作(不安全)的唯一方法是使用eval()语句。 operator只是一个字符串,它不像eval的数学运算符。

var resultatet = eval(parseInt(tal1) + operator + parseInt(tal2));

安全但繁琐的方法是简单地使用if语句或开关来对输入执行正确的数学运算。

if (operator === "+") //do addition
if (operator === "*") //multiply
//etc

PS:在parseInt函数上使用基数总是一个好主意。

答案 1 :(得分:0)

// Use a hashmap to determine how to "operate" on the inputs

  function visResultat() {
    var operatorList = {
      "+":function(a,b){return a+b},
      "-":function(a,b){return a-b},
      "*":function(a,b){return a*b},
      "/":function(a,b){return a/b}
    }
    var tal1 = document.getElementById("txtTal1").value;
    var tal2 = document.getElementById("txtTal2").value;
    var operator = document.getElementById("operator").value;
    var resultatet = operatorList[operator](tal1,tal2);
    resultat.innerHTML = resultatet;
  }

答案 2 :(得分:0)

您尝试使用的运算符是一个字符串,因此JavaScript将“合并”您的变量,假设它旁边的所有变量都是字符串。自从你开始以来,我几乎不建议你创建一些像if或switch那样的决策声明。类似的东西:

function visResultat() {
    var tal1 = document.getElementById("txtTal1").value;
    var tal2 = document.getElementById("txtTal2").value;
    var operator = document.getElementById("operator").value;

    if (operator == '+') {
        resultatet = parseInt(tal1) + parseInt(tal2);
    }
    else if( operator == '-'){
        resultatet = parseInt(tal1) - parseInt(tal2);
    }
    else if(operator == '*'){
        resultatet = parseInt(tal1) * parseInt(tal2);
    }
    else if(operator == '/'){
        resultatet = parseInt(tal1) / parseInt(tal2);
    }
    resultat.innerHTML = resultatet;
}

有很多更好的方法可以做到这一点,但这可能是最容易理解的。