用script实现的一个简易计算机

目录

一、计算器原理

二、源码

三、结果展示

四、不足与改进


一、计算器原理

首先我们列出想象中简易计算器的样子:

虽然画的磕碜但是应该不影响下面的操作hh

首先想到用表格形式在网页中表示它,是一个5行4列的表格,接着要实现计算器的功能,每个按钮都需要添加事件--->onclick()当鼠标点击时触发, 所有的数字和运算符都要使用onclick触发,等于号和c(清空键)较为特殊,他们需要对应与数字和普通运算符不同的事件:计算结果和清空输入。以及最上方的显示块需要时刻与输入的内容对应也是不同的事件

运算的过程较为简单,只使用了eval()函数进行计算。

最后就是对计算器输入过程的修饰,计算过程不能出现数字后跟多个运算符的情况,如5++或5+-*/,这样会导致eval()函数无法正常计算,所以需要对输入时的事件进行休整。

二、源码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<style>
			table {
				border: 10px;
				margin: auto;
			}

			td {
				border: 2px solid black; //单元格边框
				text-align: center;
				/*单元格内容居中*/
				padding: 20px;
				/*内边距*/
			}
		</style>
	</head>
	<body>
		<table>
			<tr>
				<td colspan="4" id="result"></td>
			</tr>
			<tr>
				<td onclick="appendresult('7')">7</td>
				<td onclick="appendresult('8')">8</td>
				<td onclick="appendresult('9')">9</td>
				<td onclick="appendresult('+')">+</td>
			</tr>
			<tr>
				<td onclick="appendresult('4')">4</td>
				<td onclick="appendresult('5')">5</td>
				<td onclick="appendresult('6')">6</td>
				<td onclick="appendresult('-')">-</td>
			</tr>
			<tr>
				<td onclick="appendresult('1')">1</td>
				<td onclick="appendresult('2')">2</td>
				<td onclick="appendresult('3')">3</td>
				<td onclick="appendresult('*')">*</td>
			</tr>
			<tr>
				<td onclick="appendresult('0')">0</td>
				<td id="clear" onclick="clearall()">c</td>
				<td onclick="caculate()">=</td>
				<td onclick="appendresult('/')">/</td>
			</tr>
		</table>
	</body>
	<script>
		var inputment = ""; //输入的内容
		function appendresult(value) {
			// 判断value是数字还是符号
			if (value == "+" || value == "-" || value == "*" || value == "/") {
				// 检查最后一个字符是否为运算符
				if (inputment.length > 0 && (inputment[inputment.length - 1] == "+" ||
						inputment[inputment.length - 1] == "-" ||
						inputment[inputment.length - 1] == "*" ||
						inputment[inputment.length - 1] == "/")) {
					return; // 如果是运算符,则不添加新的运算符,return不进行任何操作
				}
				inputment += value; // 添加新的运算符
			} else {
				// 如果是数字,直接添加
				inputment += value;
			}

			update();
		}

		function caculate() {
			var result = eval(inputment);
			inputment = result.toString(); //更新全局变量
			update();
		}

		function update() {
			document.getElementById("result").innerText = inputment || "0";
		}

		function clearall() {
			document.getElementById("result").innerText = "";
			inputment = "";
		}
	</script>
</html>

三、结果展示

 

可以看到不会出现多个运算符重复出现的错误。

四、不足与改进

在制作此计算器时,用的是表格来表示计算器,没有考虑到点击形式的问题,使得在使用时鼠标全程是I的状态,不是点击状态,用起来十分别扭,除了将整个表格变成<input>中的按钮状态外,有更便捷的方法来解决:

可以在td的类选择器中添加

cursor: pointer; /* 鼠标悬停时显示手型光标 */

为了使用时更加便捷,还可以使用伪类添加鼠标悬停时的背景色以及点击时的背景色:

td:hover { background-color: #f0f0f0; /* 鼠标悬停时的背景色 */ }

td:active { background-color: #d0d0d0; /* 点击时的背景色 */ } 

 最后的效果:

此时的鼠标放在了数字7上,并且是点击态,再点击后颜色会加深一点。

改进后的代码:

 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<style>
			table {
				border: 10px;
				margin: auto;
			}

			td {
				border: 2px solid black; //单元格边框
				text-align: center;
				/*单元格内容居中*/
				padding: 20px;
				/*内边距*/
				cursor: pointer;
				/* 鼠标悬停时显示手型光标 */
			}

			td:hover {
				background-color: #f0f0f0;
				/* 鼠标悬停时的背景色 */
			}

			td:active {
				background-color: #d0d0d0;
				/* 点击时的背景色 */
			}
		</style>
	</head>
	<body>
		<table>
			<tr>
				<td colspan="4" id="result"></td>
			</tr>
			<tr>
				<td onclick="appendresult('7')">7</td>
				<td onclick="appendresult('8')">8</td>
				<td onclick="appendresult('9')">9</td>
				<td onclick="appendresult('+')">+</td>
			</tr>
			<tr>
				<td onclick="appendresult('4')">4</td>
				<td onclick="appendresult('5')">5</td>
				<td onclick="appendresult('6')">6</td>
				<td onclick="appendresult('-')">-</td>
			</tr>
			<tr>
				<td onclick="appendresult('1')">1</td>
				<td onclick="appendresult('2')">2</td>
				<td onclick="appendresult('3')">3</td>
				<td onclick="appendresult('*')">*</td>
			</tr>
			<tr>
				<td onclick="appendresult('0')">0</td>
				<td id="clear" onclick="clearall()">c</td>
				<td onclick="caculate()">=</td>
				<td onclick="appendresult('/')">/</td>
			</tr>
		</table>
	</body>
	<script>
		var inputment = ""; //输入的内容
		function appendresult(value) {
			// 判断value是数字还是符号
			if (value == "+" || value == "-" || value == "*" || value == "/") {
				// 检查最后一个字符是否为运算符
				if (inputment.length > 0 && (inputment[inputment.length - 1] == "+" ||
						inputment[inputment.length - 1] == "-" ||
						inputment[inputment.length - 1] == "*" ||
						inputment[inputment.length - 1] == "/")) {
					return; // 如果是运算符,则不添加新的运算符,return不进行任何操作
				}
				inputment += value; // 添加新的运算符
			} else {
				// 如果是数字,直接添加
				inputment += value;
			}

			update();
		}

		function caculate() {
			var result = eval(inputment);
			inputment = result.toString(); //更新全局变量
			update();
		}

		function update() {
			document.getElementById("result").innerText = inputment || "0";
		}

		function clearall() {
			document.getElementById("result").innerText = "";
			inputment = "";
		}
	</script>
</html>
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用HTMLJavaScript来编写一个简易的计算器。 首先,我们需要创建一个HTML页面,包含两个输入框和一些按钮,如下所示: ```html <!DOCTYPE html> <html> <head> <title>简易计算器</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <input type="text" id="num1"> <input type="text" id="num2"> <br> <button onclick="add()">加</button> <button onclick="sub()">减</button> <button onclick="mul()">乘</button> <button onclick="div()">除</button> <br> <p id="result"></p> <script src="calculator.js"></script> </body> </html> ``` 然后,我们需要编写一个JavaScript文件,来实现计算器的功能。以下是一个简单的实现: ```javascript function add() { var num1 = Number(document.getElementById("num1").value); var num2 = Number(document.getElementById("num2").value); var result = num1 + num2; document.getElementById("result").innerHTML = result; } function sub() { var num1 = Number(document.getElementById("num1").value); var num2 = Number(document.getElementById("num2").value); var result = num1 - num2; document.getElementById("result").innerHTML = result; } function mul() { var num1 = Number(document.getElementById("num1").value); var num2 = Number(document.getElementById("num2").value); var result = num1 * num2; document.getElementById("result").innerHTML = result; } function div() { var num1 = Number(document.getElementById("num1").value); var num2 = Number(document.getElementById("num2").value); var result = num1 / num2; document.getElementById("result").innerHTML = result; } ``` 以上代码中,我们定义了四个函数,分别实现加、减、乘、除四种运算。每个函数首先获取输入框中的数字,然后执行对应的运算,并将结果显示在页面上。 最后,我们需要将以上两个文件放在同一个目录下,并将HTML文件中的`<script>`标签中的`src`属性指向JavaScript文件的路径。 完成以上步骤后,我们就可以在浏览器中打开HTML文件,使用简易计算器了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值