CSS3制作漂亮的计算器

所属分类:其他-杂项

 55329  330  查看评论 (2)
分享到微信朋友圈
X
CSS3制作漂亮的计算器 ie兼容9

实现代码

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>JS+CSS3实现计算器特效</title>
<link type="text/css" rel="stylesheet" href="css/datouwang.css" />
</head>
<body>
    <div id="calculator">
        <!-- Screen and clear key -->
        <div class="top">
            <span class="clear">C</span>
        <div class="screen"></div>
    </div>
    <div class="keys">
        <!-- operators and other keys -->
        <span>7</span>
        <span>8</span>
        <span>9</span>
        <span class="operator">+</span>
        <span>4</span>
        <span>5</span>
        <span>6</span>
        <span class="operator">-</span>
        <span>1</span>
        <span>2</span>
        <span>3</span>
        <span class="operator">÷</span>
        <span>0</span>
        <span>.</span>
        <span class="eval">=</span>
        <span class="operator">x</span>
        </div>
    </div>
    <script src="js/datouwang.js" type="text/javascript"></script>
</body>
</html>

js

var keys = document.querySelectorAll('#calculator span');
var operators = ['+', '-', 'x', '÷'];
var decimalAdded = false;

for(var i = 0; i < keys.length; i++) {
	keys[i].onclick = function(e) {
	
		var input = document.querySelector('.screen');
		var inputVal = input.innerHTML;
		var btnVal = this.innerHTML;
		
		if(btnVal == 'C') {
			input.innerHTML = '';
			decimalAdded = false;
		}
		
		else if(btnVal == '=') {
			var equation = inputVal;
			var lastChar = equation[equation.length - 1];	
			equation = equation.replace(/x/g, '*').replace(/÷/g, '/');
			if(operators.indexOf(lastChar) > -1 || lastChar == '.')
				equation = equation.replace(/.$/, '');
			
			if(equation)
				input.innerHTML = eval(equation);
				
			decimalAdded = false;
		}
		
		else if(operators.indexOf(btnVal) > -1) {

			var lastChar = inputVal[inputVal.length - 1];
			if(inputVal != '' && operators.indexOf(lastChar) == -1) 
				input.innerHTML += btnVal;
			
			else if(inputVal == '' && btnVal == '-') 
				input.innerHTML += btnVal;
			
			if(operators.indexOf(lastChar) > -1 && inputVal.length > 1) {
				input.innerHTML = inputVal.replace(/.$/, btnVal);
			}
			
			decimalAdded =false;
		}
		
		else if(btnVal == '.') {
			if(!decimalAdded) {
				input.innerHTML += btnVal;
				decimalAdded = true;
			}
		}
		
		else {
			input.innerHTML += btnVal;
		}
		
		e.preventDefault();
	} 
}
相关插件-杂项

动态增加表格行

动态增加表格行
  杂项
 41265  401

日历签到领奖品

点击当日可进行签到领取礼物
  杂项
 47607  510

原生态图片合成

多张图片合成一张图片
  杂项
 25433  322

vue.js实现增删改查(原创)

bootstrap布局,vue.js实现增删改查功能,模态框新增与编辑
  杂项
 36425  398

讨论这个项目(2)回答他人问题或分享插件使用方法奖励jQ币 评论用户自律公约

    xuxingxing 0
    2016/9/16 2:09:52
    计算的结果真不准确,不信你试一试“1.2除3等于几 回复
    汉斯 0
    2016/3/4 12:03:26
    有个小问题  在做加法后  不点任何  + 或是 -  什么的  直接再点一个数字键 会直接累加到 原来的计算结果后面。。。 比如 1+1=2 再点1 就变成 21了! 回复
    不可不戒 0
    2014/3/27 22:43:00

    又查了一次,你们真细心,确实有错。

    回复
    不可不戒 0
    2014/3/27 19:14:00

    19.90.1   计算结果确实有问题

    回复
    不可不戒 0
    2014/3/20 11:29:00

    测试一切正常,没有你提到的问题?

    回复
    济公 0
    2014/3/20 10:53:00

    计算器计算的结果不正确,两位数加减法搞的我都不敢确定了,你们试试吧 如 20  0.1 = 19.9  0.1 正常=19.8 可是这个计算器的结果是19.799999999999997 ??

    回复
😃
  • 😀
  • 😉
  • 😥
  • 😵
  • 😫
  • 😘
  • 😡
  • 👍
  • 🌹
  • 👏
  • 🍺
  • 🍉
  • 🌙
  • 💖
  • 💔
😃
  • 😀
  • 😉
  • 😥
  • 😵
  • 😫
  • 😘
  • 😡
  • 👍
  • 🌹
  • 👏
  • 🍺
  • 🍉
  • 🌙
  • 💖
  • 💔
取消回复