javascript - 为什么我的 equalSign 函数在运行时不起作用?
问题描述
我正在尝试使用 javascript 和 HTML 构建一个基本的计算器网站。我的所有其他功能都正常工作,但我的 equalSign 功能没有做任何事情。不知道为什么它不起作用,为什么什么也没发生。为什么我的功能不起作用?它是 onclick 属性还是函数本身的实际代码?
let display = 0;
function square() {
display = document.querySelector('#display').innerHTML
display = display * display;
document.querySelector('#display').innerHTML = display;
}
function cube() {
display = document.querySelector('#display').innerHTML
display = display * display * display;
document.querySelector('#display').innerHTML = display;
}
function root() {
display = document.querySelector('#display').innerHTML
display = Math.sqrt(display);
document.querySelector('#display').innerHTML = display;
}
function clearDisplay() {
display = 0;
document.querySelector('#display').innerHTML = display;
}
function seven() {
display = document.querySelector('#display').innerHTML
display = display + 7
document.querySelector('#display').innerHTML = display;
}
function eight() {
display = document.querySelector('#display').innerHTML
display = display + 8
document.querySelector('#display').innerHTML = display;
}
function nine() {
display = document.querySelector('#display').innerHTML
display = display + 9
document.querySelector('#display').innerHTML = display;
}
function four() {
display = document.querySelector('#display').innerHTML
display = display + 4
document.querySelector('#display').innerHTML = display;
}
function five() {
display = document.querySelector('#display').innerHTML
display = display + 5
document.querySelector('#display').innerHTML = display;
}
function six() {
display = document.querySelector('#display').innerHTML
display = display + 6
document.querySelector('#display').innerHTML = display;
}
function one() {
display = document.querySelector('#display').innerHTML
display = display + 1
document.querySelector('#display').innerHTML = display;
}
function two() {
display = document.querySelector('#display').innerHTML
display = display + 2
document.querySelector('#display').innerHTML = display;
}
function three() {
display = document.querySelector('#display').innerHTML
display = display + 3
document.querySelector('#display').innerHTML = display;
}
function zero() {
display = document.querySelector('#display').innerHTML
display = display + 0
document.querySelector('#display').innerHTML = display;
}
function decimal() {
display = document.querySelector('#display').innerHTML
display = display + '.'
document.querySelector('#display').innerHTML = display;
}
function add() {
num1 = document.querySelector('#display').innerHTML
display = '+'
document.querySelector('#display').innerHTML = display;
let oper = '+';
return oper;
}
function subtract() {
num1 = document.querySelector('#display').innerHTML
display = '-'
document.querySelector('#display').innerHTML = display;
let oper = '-';
return oper;
}
function multiply() {
num1 = document.querySelector('#display').innerHTML
display = '*'
document.querySelector('#display').innerHTML = display;
let oper = '*';
return oper;
}
function divide() {
num1 = document.querySelector('#display').innerHTML
display = '/'
document.querySelector('#display').innerHTML = display;
let oper = '/';
return oper;
}
function equalSign(oper, num1) {
num2 = document.querySelector('#display').innerHTML
if (oper == '+') {
let sum = num1 + num2;
document.querySelector('#display').innerHTML = sum;
} else if (oper == '-') {
let sum = num1 - num2;
document.querySelector('#display').innerHTML = sum;
} else if (oper == '*') {
let sum = num1 * num2;
document.querySelector('#display').innerHTML = sum;
} else if (oper == '/') {
let sum = num1 / num2;
document.querySelector('#display').innerHTML = sum;
} else {
document.querySelector('#dislay').innerHTML = "ERROR";
}
}
<h1 class='bigbox' id="display">0</h1>
<div>
<button class="button" style="font-size: 24px" onclick="square(); return false">x²</button>
<button class="button" style="font-size: 23px" onclick="cube(); return false">x³</button>
<button class="button" style="font-size: 24px" onclick="root(); return false">√x</button>
<button class="ce" onclick="clearDisplay(); return false">CE</button>
</div>
<div>
<button class="button" onclick="seven(); return false">7</button>
<button class="button" onclick="eight(); return false">8</button>
<button class="button" onclick="nine(); return false">9</button>
<button class="button" onclick="divide(); return false">/</button>
</div>
<div>
<button class="button" onclick="four(); return false">4</button>
<button class="button" onclick="five(); return false">5</button>
<button class="button" onclick="six(); return false">6</button>
<button class="button" style="font-size: 30px" onclick="multiply(); return false">*</button>
</div>
<div>
<button class="button" onclick="one(); return false">1</button>
<button class="button" onclick="two(); return false">2</button>
<button class="button" onclick="three(); return false">3</button>
<button class="button" onclick="subtract(); return false">-</button>
</div>
<div>
<button class="button" onclick="zero(); return false">0</button>
<button class="button" style="font-size: 50px" onclick="decimal(); return false">.</button>
<button class="button" onclick="equalSign(oper); return false">=</button>
<button class="button" onclick="add(); return false">+</button>
</div>
解决方案
你在这里遇到了两个问题。首先,equalSign
用 2 个参数oper
和声明num1
,但你只传递一个oper
。其次,oper
在您尝试将其传递给equalSign
按钮onClick
函数之前,从未声明过。
我建议将按钮更改为:
<button class="button" onclick="equalSign(); return false">=</button>
至于 JavaScript,我无法就如何重做它给出具体建议,因为我不知道您打算如何获得 num1,但是这两个参数equalSign
可能应该是顶级变量,如display
is。
推荐阅读
- tensorflow - 将模型优化器用于 tensorflow slim 模型
- php - 在 sql 中获取可用和预订时间
- javascript - 如何在 nodejs 中添加 Bearer 令牌以请求 post 方法?
- r - 从 ID 列中提取名称(创建一个新向量,每次出现仅出现一次)
- amp-html - https://cdn.ampproject.org/caches.json中thirdPartyFrameDomainSuffix是什么意思
- java - 有没有办法避免 BigInteger/BigDecimal?
- heroku - 如何从 Heroku 中删除 Gradle Kotlin,并仅部署 fatJar?
- java - 使用 Hashmap / 其他方法减少多次操作字符串的运行时间
- python - 将带有属性的标签附加到带有 minidom 的 XML
- javascript - 调整窗口大小时猫头鹰轮播出现问题