闲来无聊,用H5写了一个简易版计算器,只是简单地一元运算,功能不多说,直接上代码,注释很详细;(ノ ̄▽ ̄)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
*{margin: 0;padding: 0;}
.box{width: 290px;height: 470px;margin: 100px auto;border: 1px solid #000;}
.list li{list-style: none;float: left;width:50px;height:50px;margin: 10px;border: 1px solid #999;
border-radius: 10px;background: #eee;cursor: pointer;text-align: center;
line-height: 50px;font-weight: bold;font-size: 25px;}
input{width: 285px;height: 50px;font-size: 20px;text-align: right;outline: none;border: none;padding-right: 5px;}
.txt2{border-bottom: 1px solid #000;}
.list li:hover{background: #888;}
</style>
</head>
<body>
<div class="box">
<input type="text" class="txt1">
<input type="text" class="txt2" value="0">
<ul class="list">
<li>7</li>
<li>8</li>
<li>9</li>
<li>/</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>*</li>
<li>1</li>
<li>2</li>
<li>3</li>
<li>-</li>
<li>0</li>
<li>.</li>
<li>=</li>
<li>+</li>
<li>c</li>
</ul>
</div>
<script>
//获取元素
var oTxt1 = ("txt1")[0];
var oTxt2 = ("txt2")[0];
var oList = ("list")[0];
//创建对象,用来保存每次输入的数和计算符号
var obj = {};
//设置一个开关,识别负号和减号
var bStop = false;
//函数执行
calculator();
//计算器
function calculator() {
("click", function (e) {
//事件源对象,获取每次点击的内容
var even = e || event;
var target = || ;
//保存每次点击的内容
var num = ;
//一轮计算之后,第二轮输入
if () {
= "";
= "";
obj = {};
= false;
}
//当输入的数值为小数,且比0还小时
if ( === "0" && num != ".") {
= "";
}
+= num;
//清零
if (num == "c") {
= "";
= 0;
obj = {};
}
//获取输入的数值
value(num);
}, false)
}
//变量赋值
function value(code) {
//当输入为等于号的时候
if (code == "=") {
//保存第二个输入的数
= parseFloat();
+= ;
add(obj);
//当第一轮计算结束之后,给一个开关,第二轮输入的时候,
//不需要清零,也不会影响第二轮输入(以输入等号为一轮计算结束)
= true;
//将负号开关重置,不影响下次输入
bStop = false;
}
//当连续两次输入减号的时候,第二次输入的为负号,并将开关关上
if (bStop) {
bStop = false;
return;
}
if (code == "+" || code == "-" || code == "*" || code == "/") {
//在不输入等号的情况下,输入计算符号也可以计算上一轮的结果
if () {
= parseFloat();
add(obj);
= + code;
= "";
//将上一轮计算的结果保存在下一轮的第一个数
= parseFloat();
//保存计算符号
= code;
//将负号开关打开
bStop = true;
return;
}
//计算器刚启动的时候或者是一轮计算过后,输入的第一个减号即为负号
if ( == "-") return;
= ;
= "";
//保存第一个输入的数
= parseFloat();
//保存输入的计算符号
= code;
//将负号开关打开
bStop = true;
}
}
//数值计算
function add(obj) {
switch () {
case "+":
= + ;
break;
case "-":
= - ;
break;
case "*":
= * ;
break;
case "/":
if (( / )) {
= "被除数不能为0";
} else {
= / ;
}
break;
}
}
</script>
</body>
</html>
效果图: