前言:我们知道JavaScript是一种编程语言,它可以在网页中添加交互性和动态特效。它可以用于开发各种类型的网站、应用程序和游戏。它也可以用于验证表单输入、创建动画、处理数据、交互式地修改网页内容等等。并且可以通过浏览器内置的JavaScript引擎来解释和执行代码。它是一种客户端脚本语言,意味着它在用户的浏览器中执行,而不是在服务器上执行。本文将通过一个完整的项目实例来演示如何使用JavaScript实现一个简单的计算器。该计算器可以进行加、减、乘、除四种基本运算,并且可以进行连续计算。下面将一步一步地介绍实现过程。
- 安装开发工具
首先需要安装一个文本编辑器,用于编写JavaScript代码。常用的文本编辑器有Sublime Text、Atom、VS Code等,这里我是用的HBuider来进行项目演示。
- 创建HTML文件
在HBuider中创建一个新的HTML文件,命名为calculator.html。在html文件中写入一个简单页面展示计算器的按钮表示,如图:
在上面的图片展示的代码中,我们定义了一个div元素,id为calculator,用来包含整个计算器。其中,display用来显示计算结果,clear用来清空输入,backspace用来删除上一个输入,divide、multiply、subtract、add分别代表四种基本运算,seven、eight、nine、four、five、six、one、two、three、zero、decimal分别代表数字和小数点。
- 创建CSS文件
在HBuider中创建一个新的CSS文件,命名为style.css。在css文件中对计算器的样式进行美化,代码如下:
body {
font-family: Arial, sans-serif;
}
#calculator {
width: 250px;
margin: 50px auto;
background-color: #eee;
padding: 10px;
border-radius: 5px;
box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3);
}
#display {
height: 40px;
background-color: #fff;
text-align: right;
padding: 5px;
margin-bottom: 10px;
font-size: 20px;
border-radius: 3px;
box-shadow: inset 1px 1px 3px rgba(0, 0, 0, 0.1);
}
.button {
width: 50px;
height: 50px;
background-color: #fff;
margin: 5px;
border-radius: 5px;
box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1);
font-size: 20px;
cursor: pointer;
}
.button:hover {
background-color: #ddd;
}
#clear {
background-color: #f44336;
color: #fff;
}
#backspace {
background-color: #4CAF50;
color: #fff;
}
#divide {
background-color: #008CBA;
color: #fff;
}
#multiply {
background-color: #008CBA;
color: #fff;
}
#subtract {
background-color: #008CBA;
color: #fff;
}
#add {
background-color: #008CBA;
color: #fff;
}
#equals {
background-color: #4CAF50;
color: #fff;
}
#zero {
width: 110px;
}
#decimal {
background-color: #ddd;
}
在上面的代码中,我们定义了一些CSS样式,用来美化计算器界面。
- 编写JavaScript代码
在HBuider中创建一个新的JavaScript文件,命名为script.js。在文件中写入函数代码实现计算器功能,代码如下:
var display = document.getElementById("display");
var clear = document.getElementById("clear");
var backspace = document.getElementById("backspace");
var divide = document.getElementById("divide");
var multiply = document.getElementById("multiply");
var subtract = document.getElementById("subtract");
var add = document.getElementById("add");
var equals = document.getElementById("equals");
var zero = document.getElementById("zero");
var decimal = document.getElementById("decimal");
var buttons = document.querySelectorAll(".button:not(#clear):not(#backspace):not(#divide):not(#multiply):not(#subtract):not(#add):not(#equals):not(#zero):not(#decimal)");
var currentNumber = "";
var firstNumber = "";
var operator = "";
var secondNumber = "";
var result = "";
function updateDisplay() {
display.innerHTML = currentNumber;
}
function clearAll() {
currentNumber = "";
firstNumber = "";
operator = "";
secondNumber = "";
result = "";
updateDisplay();
}
function backspaceOne() {
currentNumber = currentNumber.slice(0, -1);
updateDisplay();
}
function setOperator(op) {
if (currentNumber !== "") {
firstNumber = currentNumber;
operator = op;
currentNumber = "";
updateDisplay();
}
}
function calculateResult() {
if (currentNumber !== "") {
secondNumber = currentNumber;
currentNumber = "";
switch (operator) {
case "+":
result = parseFloat(firstNumber) + parseFloat(secondNumber);
break;
case "-":
result = parseFloat(firstNumber) - parseFloat(secondNumber);
break;
case "*":
result = parseFloat(firstNumber) * parseFloat(secondNumber);
break;
case "/":
result = parseFloat(firstNumber) / parseFloat(secondNumber);
break;
}
firstNumber = "";
secondNumber = "";
operator = "";
currentNumber = result.toString();
updateDisplay();
}
}
function addNumber(num) {
if (currentNumber === "0") {
currentNumber = num;
} else {
currentNumber += num;
}
updateDisplay();
}
function addDecimal() {
if (currentNumber === "") {
currentNumber = "0.";
} else if (currentNumber.indexOf(".") === -1) {
currentNumber += ".";
}
updateDisplay();
}
clear.addEventListener("click", clearAll);
backspace.addEventListener("click", backspaceOne);
divide.addEventListener("click", function() { setOperator("/"); });
multiply.addEventListener("click", function() { setOperator("*"); });
subtract.addEventListener("click", function() { setOperator("-"); });
add.addEventListener("click", function() { setOperator("+"); });
equals.addEventListener("click", calculateResult);
zero.addEventListener("click", function() { addNumber("0"); });
decimal.addEventListener("click", addDecimal);
for (var i = 0; i < buttons.length; i++) {
buttons[i].addEventListener("click", function() {
addNumber(this.innerHTML);
});
}
在上面的代码中,我们首先定义了一些变量,用来获取HTML元素和存储计算结果。然后定义了一些函数,用来更新显示、清空输入、删除上一个输入、设置运算符、计算结果、添加数字和小数点。最后,我们将这些函数绑定到相应的HTML元素上,使得用户可以通过点击按钮进行计算。
- 运行程序
在浏览器中打开calculator.html文件,即可看到一个简单的计算器界面。用户可以通过点击按钮进行加、减、乘、除四种基本运算,并且可以进行连续计算。例如进行2乘6乘3计算,结果为36。
总结:
本文通过一个完整的项目实例演示了如何使用JavaScript实现一个简单的计算器。在实现过程中,我们需要掌握HTML、CSS和JavaScript的基础知识,并且需要熟练运用DOM操作和事件处理。通过这个实例,我们可以更好地理解JavaScript的应用场景和语法特点,提高自己的编程能力。后面需要继续的去学习,尽量将html页面美化,将一些功能更好的展现出来。