位置: IT常识 - 正文

用HTML实现简易版计算器(简易html代码)

发布时间:2024-01-17
用HTML实现简易版计算器

推荐整理分享用HTML实现简易版计算器(简易html代码),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:如何用html,html简单,简易html代码,用html语言制作简单的网页,html简单例子,html运用,html简单例子,用html语言制作简单的网页,内容如对您有帮助,希望把文章链接给更多的朋友!

计算器功能:实现了加减乘除、清零、回退、四则运算、幂运算、根式运算等等。

运行结果如下:

引入的图片:back.png

用HTML实现简易版计算器(简易html代码)

HTML部分:用table表格添加计算器的按键,给每个按键设置一个相应的单击事件,点击一个按键后在div块里显示相应的内容。

<div><span id="result"></span></div><table border="1px" width="200px" height="300px"><tbody align="center"><tr><td width="50px" onclick="leftBracket()">(</td><td width="50px" onclick="rightBracket()">)</td><td width="50px" onclick="ppow()">^</td><td width="50px" onclick="psqrt()">√</td></tr><tr><td onclick="c()">C</td><td onclick="po('%')">%</td><td width="50px" onclick="backspace()"><img src="img/back.png" width="25px"/></td><td onclick="po('÷')">÷</td></tr><tr><td onclick="pn(7)">7</td><td onclick="pn(8)">8</td><td onclick="pn(9)">9</td><td onclick="po('×')">×</td></tr><tr><td onclick="pn(4)">4</td><td onclick="pn(5)">5</td><td onclick="pn(6)">6</td><td onclick="po('-')">-</td></tr><tr><td onclick="pn(1)">1</td><td onclick="pn(2)">2</td><td onclick="pn(3)">3</td><td onclick="po('+')">+</td></tr><tr><td onclick="pn('00')">00</td><td onclick="pn(0)">0</td><td onclick="pn('.')">.</td><td onclick="equals1()">=</td></tr></tbody></table>

 CSS部分:通过绝对定位将所需显示的内容定位到div块右下角。注意:绝对定位是根据有定位的第一个先祖标签进行定位的,但div块并不需要移动位置,因此这里给div添加相对定位;div块边框需要与table边框对齐,table的总宽度为200px,div块的左右边框占2px,所以width需要设置为198px。

    div {         width: 198px;         height: 50px;         border: 1px solid black;         border-bottom: none;         position: relative;     }          #result {         position: absolute;         right: 5px;         bottom: 5px;     }

JavaScript部分:通过innerTHML属性添加 / 获取所需计算的内容,再调用eval方法将获取到的内容转换为js代码进行计算。

"%":计算器中的"%"一般为百分数,在进行运算时需要将"%",换为"*0.01"进行运算。

回退:通过innerTHML属性得到字符串,将最后的字符去掉,再重新赋值给innerTHML属性。

幂运算:用split方法将"^"前后分开,再查找进行此次幂运算的表达式,如数值、带括号的表达式等等。前半部分从字符串最后往前找,而后半部分则从前往后找,将查找匹配表达式的过程封装到leftOperation(r)方法和rightOperation(r)方法中,找到这些匹配的表达式后将此表达式返回给变量leftstr和rightstr,将要参与幂运算的leftstr和rightstr跟Math.pow方法进行幂运算的拼接即拼接成字符串:"Math.pow(leftstr, rightstr)"的格式赋值给num,通过substring方法将"^"左右部分的字符串去掉进行幂运算的相关部分后再将num拼接到原"^"位置。"^"操作符可能不止一个,用递归调用的方式在pow方法中再调用pow方法直到没有"^"为止。

根式运算:对根号后面的数或表达式进行根式运算,用indexof方法判断有无根号,如果有根号通过split方法将根号前后的数或表达式分开,将根号后面的数或表达式通过rightOperation(r)方法单独取出赋值给rightstr,将此rightstr跟Math.sqrt方法进行字符串拼接即拼接成:"Math.sqrt(rightstr)"的格式后赋值给num,最后通过substring方法将根号后面部分的字符串去掉进行根式运算的相关部分后再将num拼接到原根号位置。同幂运算一样,根号也可能有多个所以要用到递归。

在数学中括号、根号等前面的乘号可以省略,所以要在输入左括号、根号时做判断,判断前面的是数字还是运算符,如果是数字或"%",则在输入左括号、根号前加一个乘号,如果是运算符则直接输入。

//div块元素var result;//是否进行了运算var equal = false;window.onload = function(){result = document.getElementById("result");result.innerHTML = "";}//如果进行了运算,下次输入数前进行清零function isEqual(){if (equal){c();equal = false;}}function pn(n){isEqual();result.innerHTML += n;}function po(o){result.innerHTML += o;equal = false;}function leftBracket(){isEqual();var r = result.innerHTML;var c = r.charAt(r.length - 1);if ("0" <= c && c <= "9" || c == "%"){po("×");}result.innerHTML += "(";}function rightBracket(){isEqual();result.innerHTML += ")"}function ppow(){isEqual();result.innerHTML += "^"}function psqrt(){isEqual();var r = result.innerHTML;var c = r.charAt(r.length - 1);if ("0" <= c && c <= "9" || c == "%"){po("×");}result.innerHTML += "√";}function c(){result.innerHTML = "";}function backspace(){var r = result.innerHTML;result.innerHTML = r.substr(0,r.length - 1);isEqual();}function equals1(){equal = true;var r = result.innerHTML;//将特殊字符进行替换r = r.replace(/×/g,"*");r = r.replace(/÷/g,"/");r = r.replace(/%/g,"*0.01");try{ r = pow(r); r = sqrt(r);result.innerHTML=eval(r);}catch(e){result.innerHTML="表达式不正确";}}function pow(r){var arr = r.split("^");if (arr.length == 1){return r;}var leftstr = leftOperation(arr[0]);var rightstr = rightOperation(arr[1]);var num = "Math.pow(" + leftstr + "," + rightstr + ")";var leftr = arr[0].substring(0,arr[0].length - leftstr.length);var rightr = arr[1].substring(rightstr.length,arr[1].length);var r = leftr + num + rightr;return pow(r);}function sqrt(r){if (r.indexOf("√") == -1){return r;}var arr = r.split("√");var rightstr = rightOperation(arr[1]);var num = "Math.sqrt(" + rightstr + ")";var leftr = arr[0];var rightr = arr[1].substring(rightstr.length,arr[1].length);var r =leftr + num + rightr;return sqrt(r);}function leftOperation(r){var leftBracket = 0;var rightBracket = 0;var i;for (i = r.length - 1; i >=0; i--){var c = r.charAt(i);if (c == ")"){rightBracket++;} else if (leftBracket == rightBracket && c >="0" && c <= "9"){break;} else if (c == "("){leftBracket++;}}return r.substring(i);}function rightOperation(r){var leftBracket = 0;var rightBracket = 0;var i;for (i = 0; i < r.length; i++){var c = r.charAt(i);if (c == "("){leftBracket++;} else if (leftBracket == rightBracket && c >="0" && c <= "9"){break;} else if (c == ")"){rightBracket++;}}return r.substring(0,i+1);}
本文链接地址:https://www.jiuchutong.com/zhishi/298595.html 转载请保留说明!

上一篇:threeJs入门 js引入(threejs怎么用)

下一篇:C罗老矣,我的程序人生还有多远(c罗my eyes never lie)

  • 大公司和小公司的产品推广有啥不同(大公司和小公司的利弊)

    大公司和小公司的产品推广有啥不同(大公司和小公司的利弊)

  • 老师贺卡内容图片(老师贺卡内容简短)(老师贺卡格式怎么写图片)

    老师贺卡内容图片(老师贺卡内容简短)(老师贺卡格式怎么写图片)

  • 华为电脑鼠标怎么连接(华为电脑鼠标怎么充电)

    华为电脑鼠标怎么连接(华为电脑鼠标怎么充电)

  • 华为p30长截屏滚动不了是怎么回事(华为手机p30滚动截屏)

    华为p30长截屏滚动不了是怎么回事(华为手机p30滚动截屏)

  • 苹果xr微信通知声音怎么改

    苹果xr微信通知声音怎么改

  • 苹果8plus有应用锁么(苹果8plus应用加密怎么设置)

    苹果8plus有应用锁么(苹果8plus应用加密怎么设置)

  • 传输网络主要是指哪些网(传输网络主要是指)

    传输网络主要是指哪些网(传输网络主要是指)

  • 快手收货地址怎么修改(快手收货地址怎么添加)

    快手收货地址怎么修改(快手收货地址怎么添加)

  • qq小号是什么意思(扣扣小号是什么意思)

    qq小号是什么意思(扣扣小号是什么意思)

  • 苹果手机c开头是正品机吗(苹果手机c开头序列号代表什么)

    苹果手机c开头是正品机吗(苹果手机c开头序列号代表什么)

  • 快手极速版怎么放大(快手极速版怎么取消微信绑定提现)

    快手极速版怎么放大(快手极速版怎么取消微信绑定提现)

  • b站青少年模式提醒怎么关(b站青少年模式怎么搜索内容)

    b站青少年模式提醒怎么关(b站青少年模式怎么搜索内容)

  • apple11和apple11pro的区别(iphone11 11 pro)

    apple11和apple11pro的区别(iphone11 11 pro)

  • iphone11有夜景模式吗(夜景模式苹果11)

    iphone11有夜景模式吗(夜景模式苹果11)

  • 怎么设置dns才能上网(怎么设置dns地址是多少)

    怎么设置dns才能上网(怎么设置dns地址是多少)

  • 文档部件域怎么做目录(文档部件域怎么用)

    文档部件域怎么做目录(文档部件域怎么用)

  • 携程砍价返现在哪领取(携程砍价返现在哪里)

    携程砍价返现在哪领取(携程砍价返现在哪里)

  • 快手为什么关注不了别人(快手为什么关注的人突然没关注了)

    快手为什么关注不了别人(快手为什么关注的人突然没关注了)

  • 华为快速充电和超级快充(华为快速充电和闪充)

    华为快速充电和超级快充(华为快速充电和闪充)

  • z87主板配什么cpu(z87主板配什么cpu e3)

    z87主板配什么cpu(z87主板配什么cpu e3)

  • 美图秀秀怎样发作品(美图秀秀怎样发抖音视频)

    美图秀秀怎样发作品(美图秀秀怎样发抖音视频)

  • Firefox.exe是什么进程 Firefox.exe相关内容详细介绍(firefox有什么用)

    Firefox.exe是什么进程 Firefox.exe相关内容详细介绍(firefox有什么用)

  • 前端如何使用后端提供的接口拿数据,文件配置及详细使用(前端后端选择)

    前端如何使用后端提供的接口拿数据,文件配置及详细使用(前端后端选择)

  • 正在投喂幼鸟的戴胜鸟,德国 (© Slawek Staszczuk/Alamy)(投喂小鸟)

    正在投喂幼鸟的戴胜鸟,德国 (© Slawek Staszczuk/Alamy)(投喂小鸟)

  • 交易性金融资产公允价值变动计入
  • 增值税征税范围中销售应税服务包括什么服务
  • 专票不抵扣认证什么意思
  • 需要安装的固定资产入账价值包括增值税吗
  • 小规模纳税人增值税优惠政策2023
  • 利润分配未分配利润借贷方表示什么
  • 汇算清缴上年度金额怎么填
  • 企业长期贷款具备什么条件
  • 营改增后还有企业所得税吗?
  • 库存商品的进销存怎么做账
  • 商业汇票贴现金额的计算
  • 新公司做财务
  • 技术转让费为什么那么贵
  • 招标资料费计入成本吗
  • 货物运输代理服务税率
  • 出口退税的办理影响出口吗
  • 关于国际货运代理协会联合会的描述不正确的是
  • 活动策划费属于哪一类
  • 附加税交税依据
  • 滞纳金账务处理
  • 增值税附加税包含哪些税
  • 房产税从价计征的计税依据
  • 税控系统维护费280会计分录
  • 营改增建筑工程怎么计算举例
  • 预收账款长期挂账如何处理
  • 资本公积如何计提
  • 文件改后缀什么意思
  • php smarty
  • php定义静态变量的关键字
  • 报销差旅费退回余款
  • 收回前欠货款会导致资产总额增加吗
  • 预提费用的账务处理
  • 完美解决在ThinkPHP控制器中命名空间的问题
  • 财政专户资金是什么意思
  • yolov5训练参数说明
  • 定额材料损耗的计算公式
  • axios请求设置超时时间
  • 数据 挖掘
  • yii2框架的优缺点
  • cssborder虚线边框
  • vue父组件子组件
  • 一文速学-XGBoost模型算法原理以及实现+Python项目实战
  • 网上学电脑
  • hadoop集群状态
  • 增值税加计抵减最新政策2022
  • 发票冲红和作废有啥区别
  • 增值税发票内容填写不全应如何进行处理?
  • 什么是金融资产和金融负债
  • 以货换货什么意思
  • 卖二手车怎么做账务处理
  • 公司转投资是什么意思
  • 营业外收入在汇算清缴里填哪张表
  • 收到税务局退增值税怎么入账
  • 企业代扣的个人所得税款收入属于哪个会计科目
  • 本年利润的会计科目代码
  • 函证核对法是什么
  • 待处理财产损益是备抵类科目吗
  • 总账会计的岗位目的
  • mysql查询语句菜鸟教程
  • mysql5.7.26启动失败
  • win10语言栏没有
  • win 10预览版
  • macos safari无法使用
  • macbookair触控板维修
  • linux系统的介绍
  • fedora linux安装教程
  • win10系统创建一个快捷bat
  • Linux怎么添加用户
  • Win10无法获取ipv4
  • 你必须知道的最新婚姻法
  • android开发详解
  • shell中括号的作用
  • python科学计算基础教程
  • java learning
  • 安卓开发上下滑动功能界面
  • 中国体育体制改革的特点
  • 进口lng需要什么资质
  • 广州市公安局分局待遇
  • 城市维护建设税税基是什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号