javascript - 我可以做些什么来混合操作?使用香草 javascript
问题描述
我正在开发一个简单的计算器,它实现了求和、休息、乘法和除法。
我想在任何带有“数字”类的按钮内获取内部文本,以便稍后像数字一样使用它来通过一个进行数学运算的函数。
这些是与计算器一起使用的功能。
const add = (num1, num2) => {
return num1 + num2;
};
const subtract = (num1, num2) => {
return num1 - num2;
};
const multiply = (num1, num2) => {
return num1 * num2;
};
const divide = (num1, num2) => {
return num1 / num2;
};
// Our Buttons
const outPut = document.getElementById('output');
const num = document.getElementsByClassName('number');
const addBtn = document.querySelector('.addOperator');
const subtractBtn = document.querySelector('.subtractOperator');
const multiplyBtn = document.querySelector('.multiplyOperator');
const divideBtn = document.querySelector('.divideOperator');
const allClear = document.querySelector('.ac');
const equals = document.querySelector('.equals');
let plusFirsValue = '';
let secondValue = 0;
let subFirstValue = 0;
let multFirstValue = 0;
let divFirstValue = 0;
for(let i = 0; i < num.length; i++) {
num[i].addEventListener('click', () => {
outPut.innerText += num[i].innerText;
console.log(outPut.innerText);
});
};
addBtn.addEventListener('click', () => {
plusFirsValue = Number(outPut.innerText);
outPut.innerText = '';
console.log(plusFirsValue);
});
subtractBtn.addEventListener('click', () => {
subFirstValue = Number(outPut.innerText);
outPut.innerText = '';
console.log(plusFirsValue);
});
multiplyBtn.addEventListener('click', () => {
multFirstValue = Number(outPut.innerText);
outPut.innerText = '';
});
divideBtn.addEventListener('click', () => {
divFirstValue = Number(outPut.innerText);
outPut.innerText = '';
});
equals.addEventListener('click', () => {
secondValue = Number(outPut.innerText);
if (plusFirsValue && secondValue) {
outPut.innerText = add(plusFirsValue, secondValue);
console.log(add(plusFirsValue, secondValue));
} else if (subFirstValue && secondValue) {
outPut.innerText = subtract(subFirstValue, secondValue);
console.log(subtract(subFirstValue, secondValue));
} else if (multFirstValue && secondValue) {
outPut.innerText = multiply(multFirstValue, secondValue);
console.log(multiply(multFirstValue, secondValue));
} else if (divFirstValue && secondValue) {
outPut.innerText = divide(divFirstValue, secondValue);
console.log(divide(divFirstValue, secondValue));
}
});
allClear.addEventListener('click', () => {
outPut.innerText = '';
})
<div id="calculator-grid">
<div id="output"></div>
<button class="ac">AC</button>
<button class="sun">Sun</button>
<button class="divideOperator">÷</button>
<button class="number">7</button>
<button class="number">8</button>
<button class="number">9</button>
<button class="multiplyOperator">*</button>
<button class="number">4</button>
<button class="number">5</button>
<button class="number">6</button>
<button class="addOperator">+</button>
<button class="number">1</button>
<button class="number">2</button>
<button class="number">3</button>
<button class="subtractOperator">-</button>
<button class="number">0</button>
<button class="number">.</button>
<button class="equals">=</button>
</div>
我想做的一些实现是操作之间的混合,这意味着,在两个数字之间的总和之后,我想休息其他。例如 3 + 3 = 6 但在同一操作中 6 - 3 = 3。我能做些什么?
解决方案
请注意,在您的代码中,第一个选择器(具有“数字”类的按钮)分配的数组成员少于第二个选择器(选择所有按钮),但是在循环中您使用数字索引。
const btn = document.getElementsByTagName('button');
const inp = document.getElementById('output');
for (let i = 0; i < btn.length; ++i) {
btn[i].addEventListener('click', () => {
inp.innerText += btn[i].innerText;
});
添加到所有按钮的事件侦听器和 id 为“输出”的 div 的 innerText 通过单击其中一个按钮进行修改。
推荐阅读
- c# - 获取 WPF 应用程序根目录
- ag-grid - ag-grid:有没有办法在清除范围选择时触发事件
- twitter-bootstrap - 如何在导航栏引导程序中将图像作为锚点
- json - 使用 Twilio 通过 POST 发送消息,但不接受 JSON 或 XML 形式的正文,只有 To、From 和 Body 的普通参数有效
- c++ - 调用 SSL_Read 时阻塞
- python - 在脚本窗口之前从 python 启动 SapGui 应用程序
- ios - 逐步加速 animateWithDuration 方法
- c# - 如何在 Unity 中将玩家控制器锁定在 y 轴上
- javascript - 当*不*使用 CLI 时,Webpack 会在 Vue 中渲染 CSS
- javascript - 如何使用 ASP.NET MVC 通过 Ajax 将检查的行发送到服务器?