JavaScript实现的计算器

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JavaScript计算器</title>
<style type="text/css">
input {
	background-color: #CCC;
	width: 70px;
	height: 40px;
}

table {
	background-color: #999;
	border: 3px solid #666;
	padding: 3px;
}

.result {
	width: 420px;
	background-color: #999;
	margin-bottom: 10px;
	font-family: "微软雅黑", Verdana, sans-serif, "宋体";
	font-size: 14px;
	color: #FFF;
	padding-left: 20px;
}

.clear {
	width: 146px;
}
</style>
</head>
<script language="JavaScript">
	var baseoper;
	var digitstate;
	var num1;
	var operstate;

	function setStartState() {
		digitstate = "beempty";
		num1 = 0;
		baseoper = "beempty";
		operstate = false;

	}
	function add(i) {
		if (operstate) {
			cal.total.value = i;
			operstate = false;
		} else {
			if (cal.total.value == "0") {
				cal.total.value = i;
				digistate = "bein";
			} else
				cal.total.value += i;
		}
	}
	function cleartext() {
		cal.total.value = "0";
		digitstate = "beempty";
		basestate = "beempty"
	}

	function count() {
		if (baseoper != "beempty") {
			switch (baseoper) {
			case "+":
				num1 = parseFloat(num1) + parseFloat(cal.total.value);
				break;
			case "-":
				num1 = parseFloat(num1) - parseFloat(cal.total.value);
				break;
			case "*":
				num1 = parseFloat(num1) * parseFloat(cal.total.value);
				break;
			case "/":
				num1 = parseFloat(num1) / parseFloat(cal.total.value);
				break;
			}
			preoper = true;
			cal.total.value = num1;
		}
		baseoper = "beempty";
	}
	function useFunc(func) {
		switch (func) {
		case "sin":
			cal.total.value = Math.sin(cal.total.value);
			break;
		case "cos":
			cal.total.value = Math.cos(cal.total.value);
			break;
		case "asin":
			cal.total.value = Math.asin(cal.total.value);
			break;
		case "acos":
			cal.total.value = Math.acos(cal.total.value);
			break;
		case "tan":
			cal.total.value = Math.tan(cal.total.value);
			break;
		case "atan":
			cal.total.value = Math.atan(cal.total.value);
			break;
		case "log":
			cal.total.value = Math.log(cal.total.value);
			break;
		case "exp":
			cal.total.value = Math.exp(cal.total.value);
			break;
		case "sqrt":
			cal.total.value = Math.sqrt(cal.total.value);
			break;
		case "1/x":
			cal.total.value = 1 / cal.total.value;
			break;
		}
		operstate = true;
	}
	function addPoint() {
		if (digitstate == "bein" || digitstate == "beempty") {
			cal.total.value += ".";
			digistate = "befloat";
		}
	}
	function setOper(oper) {
		operstate = true;
		if (baseoper == "beempty") {
			num1 = 0 + cal.total.value;
			baseoper = oper;
		} else {
			count();
			baseoper = oper;
		}
	}
</script>
<body onload="setStartState()">
<h2>JavaScript计算器</h2>
<form name="cal">
<table cellpadding="0" cellspacing="0">
	<tr align="center">
		<td colspan="6"><input class="result" type="Text" name="total"
			size="25" value="0"></td>
	</tr>
	<tr align="center">
		<td><input type="Button" value="sin" onclick="useFunc('sin')"></td>
		<td><input type="Button" value="cos" onclick="useFunc('cos')"></td>
		<td><input type="Button" value="1" onclick="add('1')"></td>
		<td><input type="Button" value="2" onclick="add('2')"></td>
		<td><input type="Button" value="3" onclick="add('3')"></td>
		<td><input type="Button" value="+" onclick="setOper('+')"></td>
	</tr>
	<tr align="center">
		<td><input type="Button" value="asin" onclick="useFunc('asin')"></td>
		<td><input type="Button" value="acos" onclick="useFunc('acos')"></td>
		<td><input type="Button" value="4" onclick="add('4')"></td>
		<td><input type="Button" value="5" onclick="add('5')"></td>
		<td><input type="Button" value="6" onclick="add('6')"></td>
		<td><input type="Button" value="-" onclick="setOper('-')"></td>
	</tr>
	<tr align="center">
		<td><input type="Button" value="tan" onclick="useFunc('tan')"></td>
		<td><input type="Button" value="atan" onclick="useFunc('atan')"></td>
		<td><input type="Button" value="7" onclick="add('7')"></td>
		<td><input type="Button" value="8" onclick="add('8')"></td>
		<td><input type="Button" value="9" onclick="add('9')"></td>
		<td><input type="Button" value="x" onclick="setOper('*')"></td>
	</tr>
	<tr align="center">
		<td><input type="Button" value="log" onclick="useFunc('log')"></td>
		<td><input type="Button" value="exp" onclick="useFunc('exp')"></td>
		<td><input type="Button" value="0" onclick="add('0')"></td>
		<td><input type="Button" value="." onclick="addPoint()"></td>
		<td><input type="Button" value="c" onclick="cleartext()"></td>
		<td><input type="Button" value="÷" onclick="setOper('/')"></td>
	</tr>
	<tr align="center">
		<td><input type="Button" value="sqrt" onclick="useFunc('sqrt')">
		<td><input type="Button" value="1/x" onclick="useFunc('1/x')">
		<td><input type="Button" value="pi"
			onclick="cal.total.value=Math.PI"></td>
		<td><input type="Button" value="E"
			onclick="cal.total.value=Math.E"></td>
		<td colspan=2><input class="clear" type="Button" value="="
			onclick="count()"></td>
	</tr>
</table>
</form>
</body>
</html>