这周写了个基于jQuery的简单计算器。师兄说因为要兼容大部分的设备的浏览器,所以最好不要用html5+css3.于是把之前用到的都去掉了。其实我觉得真的有这样的必要吗?css3向后兼容,用不到的特性会平稳退化,html5也要相应的框架兼容不支持html5远古时代的IE们。还是下次找点东西试试吧。

  第一次用比例来写宽高间距真心不习惯。为了兼容移动设备的亲们,cantainer的宽高设成了100%,在PC上显示就成这个熊样了:

  

                         

 

    js是弱类型的语言,所以做起来难度并不大。但同样的程序,不同的人,做出来的思路,效率往往差距很大。一开始做的时候直接从view获取数据,虽然这样做代码比较简单,但如果项目稍大的话就会带来很大的后患。所以后来从输入获取数据,数据与界面、操作分离,算是有了初步的MVC模式思想吧。

    用jQuey从输入获取数据:

         $('#container .operation .number').click(function() {
			enterNumber($(this).attr('value'));
		});
	
		$('#container .operation .operator').click(function() {
			var tempoperator=$(this).attr('operator');
			operation(tempoperator);			
		});
	
		$('#container .operation #clear').click(clearall);  
  enterNumber、operation分别对数字符号进行操作。创建tempNumber和total变量分别保存输入的数据和暂时的结果:      
         function Operation(Op) {		
		if(Op == '.') {
			tempNumber = tempNumber+'.';								
			refleshResult();
		} else {
				if(IsInputingNew&& Operator != "=");		
				IsInputingNew = true;					
				switch (Operator) {
					case "+":						
						total += parseFloat(tempNumber);					
						break;
					case "-":
						total -= tempNumber;					
						break;
					case "*":
						total *= tempNumber;				
						break;
					case "/":						
							total /= parseFloat(tempNumber);											
						break;					
					case "=":
						showResult = true;
						break;
					default:
						total = parseFloat(tempNumber);
				}
				if(Op=='=') {
					showResult = true;
				}				
				$('#container .operatorInput').html(Op);
				refleshResult();									
				Operator = Op;	
				showResult = false;	
		 }								
	}
只贴了operator()方法的关键代码。没虾米好说的。

knockout.js等待下周练笔。

最后说个很好用的截图chrome插件——Screen Capture:

之前吴大洁问有些网页很长要怎么截图,这个插件就可以“自定区域” “截取可见区域” “整个网页”来截图。相当滴不错。
posted on 2012-07-13 17:31  Daisy7  阅读(308)  评论(0)    收藏  举报