jQuery 计算器,连续计算

一个简单的jQuery计算器,只是实现了一个连续计算的功能

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf8"/>
	<title>Jquery计算器</title>
</head>
<body>
	<table>
		<tr>
			<td colspan="4"><input id="show" value="0"/></td>
		</tr>
		<tr>
			<td><button class="num" value="7">7</button></td>
			<td><button class="num" value="8">8</button></td>
			<td><button class="num" value="9">9</button></td>
			<td><button class="sym" value="+">+</button></td>
		</tr>
		<tr>
			<td><button class="num" value="4">4</button></td>
			<td><button class="num" value="5">5</button></td>
			<td><button class="num" value="6">6</button></td>
			<td><button class="sym" value="-">-</button></td>
		</tr>
		<tr>
			<td><button class="num" value="1">1</button></td>
			<td><button class="num" value="2">2</button></td>
			<td><button class="num" value="3">3</button></td>
			<td><button class="sym" value="*">*</button></td>
		</tr> 
		<tr> 
			<td><button class="num" value="0">0</button></td>
			<td><button class="sym" value="=">=</button></td>
			<td><button class="clr" value="c">c</button></td>
			<td><button class="sym" value="/">/</button></td>
		</tr>
	</table>
</body>
<script src="http://static.blog.csdn.net/scripts/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
var num0 = null;
var num1 = null;
var symble = null;
var lastclick = null;
var symarr = new Array();		//符号集合
symarr[0] = '+';
symarr[1] = '/';
symarr[2] = '*';
symarr[3] = '-';
symarr[4] = '=';
$('.num').click(function (){
	var numnow = $('#show');
	var _exist=$.inArray(lastclick,symarr); //判断上次点击是否为符号
	if (numnow.val() == 0 || _exist != -1) {//若显示框为0 或者上次点击为符号,则重新记录显示框
		numnow.val($(this).val());
	}else{
		numnow.val(parseInt(numnow.val()) * 10 +parseInt($(this).val()));
	}
	lastclick = $(this).val();   // 更新上次点击
});
$('.sym').click(function (){
	var numnow = $('#show');
	var _exist=$.inArray(lastclick,symarr);  
	if (num0 == null && symble == null) {	//初始状态
		num0 = numnow.val();
		symble = $(this).val();
	}else if(num0 != null && _exist !=-1){ // 连续点操作符的处理,及第一次点击操作符处理
		if ($(this).val() != '=') {
			symble = $(this).val();
		}else{
			var result = calculate(symble,num0,num1);
			num0 = result;
			numnow.val(result);
		}
	}else{					//正常计算状态
		num1 = numnow.val();
		var result = calculate(symble,num0,num1);
		if ($(this).val() != '=') {
			symble = $(this).val();	//上行及本行:先计算之前的运算符及结果,再更新运算符为本次点击
		}
		num0 = result;		
		numnow.val(result);
	}
	lastclick = $(this).val();	// 更新上次点击
});
$('.clr').click(function (){
	$('#show').val('0');
	num0 = null;
	num1 = null;
	symble = null;
	lastclick = null;
});

function calculate(sym,m,n){  //计算并返回结果
	var res = null;
	m = parseInt(m);
	n = parseInt(n);
	switch(sym){
		case '+':
			res = m+n;
			break;
		case '-':
			res = m-n;
			break;
		case '*':
			res = m*n;
			break;
		case '/':
			if (n == 0) {
				alert("false");
				break;
			}
			res = m/n;
			break;
		default:
			res = m;
			break;
	}
	return res;
}
</script>
</html>


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值