javascript - JS 中计算器给出错误结果

标签 javascript html

我正在学习一些 JavaScript,并尝试制作一个简单的计算器。

总和工作正常,但其余操作不起作用。我做错了什么?

js:

function soma(){
    var s1 = parseInt(document.getElementById("valor1").value,10);
    var s2 = parseInt(document.getElementById("valor2").value,10);
    document.getElementById("resultado").style.display = "block";

    if(document.getElementById("btnSoma").onclick){
        var soma = s1 + s2;
        document.getElementById("resultado").innerHTML = soma;
    }else if(document.getElementById("btnSubtrair").onclick){
        var subtrair = s1 - s2;
        document.getElementById("resultado").innerHTML = subtrair;
    }else if(document.getElementById("btnMultiplicar").onclick){
        var mult = s1 * s2;
        document.getElementById("resultado").innerHTML = mult;
    }else if(document.getElementById("btnDividir").onclick){
        var div = s1 / s2;
        document.getElementById("resultado").innerHTML = div;
    }


}

JSFiddle 链接:https://jsfiddle.net/y7r1m4nx/与 HTML

另外,有人可以解释一下为什么我必须将 ,10 放在 parseInt 中吗?我从 Mozilla 文档中不太理解它。

最佳答案

这是有效的代码:

function soma(type){
  var s1 = parseInt(document.getElementById("valor1").value,10);
  var s2 = parseInt(document.getElementById("valor2").value,10);
  document.getElementById("resultado").style.display = "block";
  var result;

  if (type === '+') {
    result = s1 + s2;
  } else if (type === '-') {
    result = s1 - s2;
  } else if(type === '*'){
    result = s1 * s2;
  }else if(type === '/'){
    result = s1 / s2;
  }

  document.getElementById("resultado").innerHTML = result;
}
<div class="container text-center">
  <input name="Valor 1" id="valor1">
  <input name="Valor 2" id="valor2"><br>
  <button type="submit" onclick="soma('+')" id="btnSoma">Somar</button><br>
  <button type="submit" onclick="soma('-')" id="btnSubtrair">Subtrair</button><br>
  <button type="submit" onclick="soma('/')" id="btnDividir">Dividir</button><br>
  <button type="submit" onclick="soma('*')" id="btnMultiplicar">Multiplicar</button><br>
  <p id="resultado">Resultado</p>
</div>

您无法通过查看元素来了解哪个元素被点击。

if(document.getElementById("btnSoma").onclick)

相反,您可以传递一些可用于确定操作的值。在示例代码中,我传递一个参数来指示我想要发生的操作:

Add:'+', Subract:'-', Multiply:'*' and divide:'/'

还有其他方法可以实现此目的,包括让每个 onclick 调用不同的函数。

但这应该有帮助。

关于javascript - JS 中计算器给出错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53269842/

相关文章:

javascript - 重新加载 DIV 后后退按钮不起作用

html - bs4如何同时抓取多个页面?

javascript - 桌面 webkit (safari/chrome) 中带有绝对定位元素的奇怪渲染错误

javascript - 将值插入 textarea 绕过必需的检查

HTML 表格 : remove space between two tr

javascript - 根据不同页面访问跟踪同一用户

javascript - Canvas 线质量差以及 Canvas 坐标与 html 的比较

javascript - 如何使用 jQuery 自动完成填充额外字段

javascript - 如何删除文本 = "text"的子项

html - 如何使用单个 anchor 标记打开多个链接