我正在学习一些 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/