这周写了个基于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:

之前吴大洁问有些网页很长要怎么截图,这个插件就可以“自定区域” “截取可见区域” “整个网页”来截图。相当滴不错。
浙公网安备 33010602011771号