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
,使得每个按钮都能够响应相应的点击事件。
三、结论