基于H5,CSS,JavaScript的网页版标准计算器

  • jsq.html

``

    	<head>
    		<meta charset="utf-8" />
    		<title></title>
    		<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
    		<link rel="stylesheet" href="css/font-awesome.min.css" />
    		<script type="text/javascript" src="js/jsq.js"></script>
    		<link rel="stylesheet" type="text/css" href="css/jsq.css" />
    	</head>
    
    	<body>
    
    		<div class="jsq">
    			<div class="title">
    				<span class="text">计算器</span>
    				<div class="close fa fa-window-close-o" style="padding-top: 4px;"></div>
    				<div class="back fa fa-window-maximize" style="padding-top: 4px;"></div>
    				<div class="back fa fa-window-minimize"></div>
    			</div>
    			<div class="menu">
    				<span>
    				<div class="back list fa fa-bars"></div>
    				<span class="mode">标准</span>
    				</span>
    				<div class="back history fa  fa-history"></div>
    			</div>
    			<div class="sum"></div>
    			<div class="input"></div>
    			<div class="opts">
    				<div class="button">MC</div>
    				<div class="button">MR</div>
    				<div class="button">M+</div>
    				<div class="button">M-</div>
    				<div class="button">MS</div>
    				<div class="button">M^</div>
    			</div>
    			<div class="buttons">
    
    			</div>
    	</body>
    
    </html>

 -jsq.css
 

`
jsq {
	position: relative;
	left: 100px;
	top: 100px;
	width: 200px;
	height: 310px;
	background: #eeeeec;
	border: 1px solid #aac;
}

.title {
	width: 100%;
	height: 25px;
}

.title .text {
	font-size: 12px;
	padding-left: 5px;
}

.title div {
	display: inline-block;
	width: 30px;
	height: 20px;
	font-size: 12px;
	text-align: center;
	float: right;
}

.back:hover {
	background: #ddd;
}

.title .close:hover {
	background: #f22;
	color: #eee;
}

.menu {
	width: 100%;
	height: 35px;
}

.menu .history {
	width: 20px;
	height: 20px;
	padding-top: 7px;
	padding-left: 7px;
	float: right;
}

.menu .list {
	width: 20px;
	height: 20px;
	padding-top: 7px;
	padding-left: 7px;
}

.menu span,
.menu .mode {
	padding-left: 5px;
}

.sum {
	width: 95%;
	height: 20px;
	text-align: right;
	font-size: 10px;
}

.input {
	width: 95%;
	height: 30px;
	text-align: right;
	font-size: 22px;
	font-weight: bold;
	overflow: hidden;
}

.opts {
	width: 100%;
	height: 25px;
}

.opts .button {
	width: 14.366%;
	height: 16px;
	display: inline-block;
	font-size: 10px;
	padding-top: 3px;
	font-weight: bold;
	text-align: center;
	margin: 2px 1.2px 2px 1.2px;
	border: 1px solid #eee;
	cursor: pointer;
	-webkit-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none
}

.opts .button:hover {
	border: 1px solid #aaa;
	background: #ddd;
}

.buttons {
	width: 100%;
}

.buttons .button {
	width: 22.8%;
	height: 20px;
	display: inline-block;
	font-size: 12px;
	padding-top: 3px;
	text-align: center;
	margin: 2px 1.2px 2px 1.2px;
	border: 1px solid #eee;
	cursor: pointer;
	-webkit-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none;
}

.buttons .button:hover {
	border: 1px solid #aaa;
	background: #ddd;
}

.numback {
	background: #fafafa;
	font-weight: bold;
}

.othback {
	background: #f4f4f4;
}
  • jsq.js
var jsf = "+-*/";
var jsstr = "1234567890.";
var numstr = "1234567890";
var bts = ["%", "V", "x^", "1/X", "CE", "C", "x", "/", "7", "8", "9", "*", "4", "5", "6", "-", "1", "2", "3", "+", "+=", "0", ".", "="];
var jscount = 0;
var all = "";
var reset = false;

function buttonclick() {
	var txt = $(event.target).text();

	if(jsstr.indexOf(txt) >= 0) { //  数字
		inputnum(txt);
	} else if(jsf.indexOf(txt) >= 0) { //  数字
		jsnum(txt);
	} else if(txt == "=") {
		jsall();
	} else if(txt == "C") {
		jsall(true);
	}
	all += txt;
}

function jsall(isclear) {
	var input = $(".input");
	if(!isclear) {
		var sum = $(".sum").text();
		var result = eval("(" + sum + input.text() + ")");
		input.text(result);
	} else {
		input.text("");
	}
	$(".sum").text("");
	all = "";
	jscount = 0;
	reset = true;
}

function jsnum(txt) {
	var input = $(".input");
	var sum = $(".sum").text();
	var last = all.substr(all.length - 1, 1);
	if(jsf.indexOf(last) >= 0) {
		$(".sum").text(sum.substr(0, sum.length - 1) + txt);
		return;
	}

	$(".sum").text(sum + input.text() + txt);

	if(jscount >= 1) {
		var result = eval("(" + sum + input.text() + ")");
		input.text(result);
	} else {
		input.text("");
	}
	jscount++;
}

function inputnum(txt) {
	var input = $(".input");
	if(txt == "." && input.text().indexOf(".") >= 0) return;
	var last = all.substr(all.length - 1, 1);

	if((jscount > 1 && jsf.indexOf(last) >= 0) || reset) {
		input.text(txt);
		reset = false;
	} else {
		input.text(input.text() + txt);
	}
}

$(function() {
	for(var i = 0; i < bts.length; i++) {
		var back = "";
		if(numstr.indexOf(bts[i]) >= 0) back = " numback";
		else back = " othback";
		$(".buttons").append($("<div class='button" + back + "'>" + bts[i] + "</div>"));
	}

	$(".button").bind("click", "", buttonclick);

});

效果图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值