博客列表 >网络计算器的案例练习

网络计算器的案例练习

屈世明
屈世明原创
2023年03月30日 22:49:50602浏览

最终效果图如下:

主要功能和学习内容与代码展示

  1. CSS的grid布局
    按键部分通过一个grid布局,快速完成了相应的样式

    1. .calculator .buttons {
    2. display: grid;
    3. /* grid-template-columns: (repeat(4)); */
    4. grid-template-columns: repeat(4,1fr);
    5. grid-auto-rows: 40px;
    6. gap:20px;
    7. }
  2. JS里的事件代理,也即把子元素的做的事件,写到父元素上,如每一个btn的点击事件写起来比较麻烦,直接通过事件代理给父元素添加对应事件,然后通过”const targetBtn = event.target”直接就获取到了点击的按键

  3. 计算过程的小数位处理,核心用到了两个JS代码

    eval(result.value) eval(),对内容做数字化运算
    tempResult.toString().includes(‘.’),判断是否有小数
    .toFixed(5),保留几位小数
    parseFloat(tempResult),最后位数上的0取消掉,如把2.350变成2.35

  1. tempResult = eval(result.value);
  2. // console.log(tempResult);
  3. if (tempResult.toString().includes('.')) {
  4. tempResult = tempResult.toFixed(decimal.value);
  5. tempResult = parseFloat(tempResult);
  6. // console.log(tempResult);
  7. }
  8. result.value = tempResult;
  9. if (tempResult == Infinity) {
  10. result.value = '错误';
  11. }
  1. 对应功能键的失效,比如在F1设置小数位时,除OK键外的其它功能键需要全部失效
    这个标准的应该是通过事件来设置的,可惜自己最终还是没有成功,只能试着通过classlist来改变他的样式,来实现最应的效果
    原来想的是把失效键style变成”display:none”,可惜这个会直接影响GRID布局,最后设置了z-index:-5的变相隐藏效果,并通过JS添加如移除相应效果,只是比较难看
    对应效果图
    主要代码:
    1. .decimal {
    2. z-index: -5;
    3. }
    1. buttons.children[2].classList.add('decimal');
    2. buttons.children[2].classList.remove('decimal');

5.输入区符号替换的问题解决,即先点击/再点击+,那应该把/号改变+,对应的主要通过’result.value.substr(result.value.length-1,1) == “+”‘来做判断,如果true,则把原来的result.value最后位去掉,再加上新的符号,对应JS代码如下(以加号为例)

  1. if(result.value.substr(result.value.length-1,1) == "+" || result.value.substr(result.value.length-1,1) == "-" ||result.value.substr(result.value.length-1,1) == "*" ||result.value.substr(result.value.length-1,1) == "/"){
  2. result.value = result.value.substr(0,result.value.length-1)
  3. }
  4. result.value = result.value + '+';
  1. 计算保留小数位的设置

    提前在html代码中保留一个隐藏的input来存放这个值
    按下F1功能键盘后,对显示区的样式和内容做调整,因为本息对内容区的样式有设置,变更后的对应的CSS测试需要加important才能生效,

    1. .textstyle {
    2. font-size: 15px !important;
    3. color: red;
    4. }
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议