Javascript是一门广泛应用于前端开发的编程语言,其中包括了很多实用的应用,其中就包括了计算器。无论是在PC端还是在移动端,都有许多JS开发的计算器在使用。下面就是介绍一些实
Javascript是一门广泛应用于前端开发的编程语言,其中包括了很多实用的应用,其中就包括了计算器。无论是在PC端还是在移动端,都有许多JS开发的计算器在使用。下面就是介绍一些实现计算器代码的方法。
一、基本结构
在开始编写计算器代码之前,我们首先应该了解一下它的基本结构。通常,一个计算器会由四个基本按钮组成,包括数字、操作符、等号和清除键。基于此,我们可以设计一个基本的HTML结构:
<div class="calculator">
<input class="screen" readonly>
<div class="buttons">
<button class="number">0</button>
<button class="number">1</button>
<button class="number">2</button>
<button class="op">+</button>
<button class="number">3</button>
<button class="number">4</button>
<button class="number">5</button>
<button class="op">-</button>
<button class="number">6</button>
<button class="number">7</button>
<button class="number">8</button>
<button class="op">*</button>
<button class="number">9</button>
<button class="op">.</button>
<button class="op">/</button>
<button class="clear">C</button>
<button class="equal">=</button>
</div>
</div>在这个基本结构中,我们定义了一个calculator类作为容器。screen类的input标签用来显示计算结果,buttons类的按钮分别对应数字、操作符、等号和清除键。
二、处理点击事件
在上述HTML结构中,我们已经定义了各类按钮的类名,接下来我们需要编写相应的点击事件处理函数。如果一个按钮被点击,我们需要处理如下事情:
- 如果是数字按钮,需要在输入栏中显示相应数字;
- 如果是操作符按钮,需要判断当前输入的数字是否已经完整,并将其运算符保存下来;
- 如果是清除键,需要清空输入栏和运算符列表,并将输入栏内容重置为0;
- 如果是等号键,需要计算当前的表达式并将结果显示在输入栏上。
接着,我们定义一个Calculator类,将各种处理函数定义在类中:
class Calculator {
constructor() {
this.result = 0;
this.operator = null;
this.input = '';
this.screen = document.querySelector('.screen');
}
addNumber(number) {
this.input += number;
this.updateScreen();
}
updateScreen() {
this.screen.value = this.input;
}
addOperator(operator) {
if (this.input !== '') {
this.operator = operator;
this.result = parseFloat(this.input);
this.input = '';
this.updateScreen();
}
}
calculate() {
if (this.operator !== null && this.input !== '') {
switch (this.operator) {
case '+':
this.result += parseFloat(this.input);
break;
case '-':
this.result -= parseFloat(this.input);
break;
case '*':
this.result *= parseFloat(this.input);
break;
case '/':
this.result /= parseFloat(this.input);
break;
}
this.operator = null;
this.input = this.result.toString();
this.updateScreen();
}
}
clear() {
this.result = 0;
this.operator = null;
this.input = '';
this.updateScreen();
}
}
const calculator = new Calculator();
document.querySelectorAll('.number').forEach(button => {
button.addEventListener('click', () => {
calculator.addNumber(button.innerText);
});
});
document.querySelectorAll('.op').forEach(button => {
button.addEventListener('click', () => {
calculator.addOperator(button.innerText);
});
});
document.querySelector('.equal').addEventListener('click', () => {
calculator.calculate();
});
document.querySelector('.clear').addEventListener('click', () => {
calculator.clear();
});在这个代码中,我们定义了一个Calculator类,使用构造函数初始化了计算器的状态,并定义了各种处理函数。在处理事件的过程中,我们使用了querySelectorAll和addEventListener,使得每个按钮都能够响应相应的点击事件。
三、结论
