【JavaScript】javascript的eval函数实现的一个简单计算器


初学H5,不知道做什么来练手,就做些小工具吧

今天知道一个函数eval(),感觉是神器,不过官方说这个已经很少用到了

用它来做个计算器还是可以的吧~

几个点:

1、画圆圈,border-radius:100%;

2、点击时改变CSS效果,.btnItem:active{}

3、内容换行,word-wrap:break-word;

4、字符串删除,inputtext.substring( 0 , inputtext.length-1 )

5、字符串转数字,parseFloat(textresult)

代码如下,复制粘贴就可以用啦:

<!DOCTYPE html>
<html>
<head>
	<title>计算器!</title>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1, user-scalable=no">
</head>
<style>
html,body{
    width:100%;
    margin:0;
    padding:0;
    font-family:"微软雅黑";
}
.inputShow{
	width:100%;
	height:6rem;
	background-color:#222222;
	color:#FFFFFF;
	word-wrap:break-word;
	overflow-y:scroll;
	font-size:21px;
	letter-spacing:2px;
	margin-top:0.5rem;
}
#ResultShow{
	padding-top:1.5rem;
	margin-right:0.5rem;
	margin-left:0.5rem;
	height:2rem;
	line-height:2rem;
	font-size: 26px;
	font-weight:bold;
	color:#EE9A00;
	overflow:hidden;
}
.btnItem{
	width:60px;
	height:60px;
	line-height:60px;
	border-radius:100%;
	background-color:#222222;
	text-align:center;
	font-size:21px;
	color:#FFFFFF;
	margin:5px;
}
.btnItem:active{
	opacity:0.7;
}
.numItem{
	margin-top:30px;
	padding-bottom:25px;
	width:100%;
	max-width:280px;
	display:flex;
	flex-wrap:wrap;
}
</style>
<body>
<div style="width:95%;max-width: 360px;background-color:#EAEAEA;margin:auto;">
	<div class="inputShow"><div id="inputtext" style="padding:1rem;">0</div></div>
	<center>
		<div id="ResultShow"></div>
		<div class="numItem">
			<div class="btnItem" οnclick="clearinput()">AC</div>
			<div class="btnItem" οnclick="addinput(this.innerHTML)">(</div>
			<div class="btnItem" οnclick="addinput(this.innerHTML)">)</div>
			<div class="btnItem" style="background-color:#EE9A00" οnclick="addinput(this.innerHTML)">+</div>
			<div class="btnItem" οnclick="addinput(this.innerHTML)">1</div>
			<div class="btnItem" οnclick="addinput(this.innerHTML)">2</div>
			<div class="btnItem" οnclick="addinput(this.innerHTML)">3</div>
			<div class="btnItem" style="background-color:#EE9A00" οnclick="addinput(this.innerHTML)">-</div>
			<div class="btnItem" οnclick="addinput(this.innerHTML)">4</div>
			<div class="btnItem" οnclick="addinput(this.innerHTML)">5</div>
			<div class="btnItem" οnclick="addinput(this.innerHTML)">6</div>
			<div class="btnItem" style="background-color:#EE9A00" οnclick="addinput(this.innerHTML)">×</div>
			<div class="btnItem" οnclick="addinput(this.innerHTML)">7</div>
			<div class="btnItem" οnclick="addinput(this.innerHTML)">8</div>
			<div class="btnItem" οnclick="addinput(this.innerHTML)">9</div>
			<div class="btnItem" style="background-color:#EE9A00" οnclick="addinput(this.innerHTML)">÷</div>
			<div class="btnItem" οnclick="addinput(this.innerHTML)">0</div>
			<div class="btnItem" οnclick="addinput(this.innerHTML)">.</div>
			<div class="btnItem" style="background-color:#CD3333;" οnclick="deleteinput()">←</div>	
			<div class="btnItem" style="background-color:#008B45;" οnclick="showresult()">=</div>
		</div>
	</center>
<div>
</body>
<script>
	var inputtext = "";
	var textresult = "";

	function addinput(e){
		if(e == "÷"){e = "/"}else if(e == "×"){e = "*"}
		if(textresult == ""){
			if(e == "." && inputtext == ""){
				inputtext = "0."
			}else{
				inputtext += e;
			}
		}else{
			if( e=="+"||e=="-"||e=="*"||e=="/" && e!="." ){	//如果输入的是运算符,取之前的运算结果,继续计算
				//var text = textresult
				inputtext = textresult + e;
				textresult = "";
			}else{	//如果不是运算符,结果置空,重新输入
				textresult = "";
				if(e == "."){
					inputtext = "0."
				}else{
					inputtext = e;
				}
			}
		}
		document.getElementById("inputtext").innerHTML = inputtext;
	};

	function deleteinput(){
		if(inputtext == ""){
			document.getElementById("inputtext").innerHTML = "0";
		}else{
			inputtext = inputtext.substring( 0,inputtext.length-1 )
			document.getElementById("inputtext").innerHTML = inputtext;
		}
	};

	function showresult(){
		if(inputtext == ""){
			document.getElementById("ResultShow").innerHTML = "0";
		}else{
			try{
				textresult = eval(inputtext);
				if(textresult == "Infinity"){
					document.getElementById("ResultShow").innerHTML = "输入有误";
					textresult = "";
				}else{
					textresult = parseFloat(textresult);
					document.getElementById("ResultShow").innerHTML = textresult;	//超大数字使用科学计数法
				};
			}catch(err){
				document.getElementById("ResultShow").innerHTML = "输入有误";
				textresult = "";
			}
		}
	};

	function clearinput(){
		inputtext = "";
		textresult = "";
		document.getElementById("inputtext").innerHTML="0";
		document.getElementById("ResultShow").innerHTML =textresult;
	};

</script>
</html>


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值