位置: IT常识 - 正文

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

编辑:rootadmin
用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)

  • 华为手环6Pro有独立GPS定位功能吗(华为手环6pro有没有GPS)

    华为手环6Pro有独立GPS定位功能吗(华为手环6pro有没有GPS)

  • vivox70怎么唤醒屏幕(vivo怎么唤醒屏幕设置)

    vivox70怎么唤醒屏幕(vivo怎么唤醒屏幕设置)

  • macbookpro摄像头权限在哪里打开(macbookpro摄像头打不开)

    macbookpro摄像头权限在哪里打开(macbookpro摄像头打不开)

  • 华为p40pro屏幕像素密度ppi是多少呢(华为p40pro屏幕感觉不清晰)

    华为p40pro屏幕像素密度ppi是多少呢(华为p40pro屏幕感觉不清晰)

  • 腾讯视频只能一个人用吗(腾讯视频只能一个账号登录吗)

    腾讯视频只能一个人用吗(腾讯视频只能一个账号登录吗)

  • 苹果手机发热变暗如何关闭(苹果手机发热变慢)

    苹果手机发热变暗如何关闭(苹果手机发热变慢)

  • 电脑管家怎么把软件彻底删干净(电脑管家怎么把软件添加到信任区)

    电脑管家怎么把软件彻底删干净(电脑管家怎么把软件添加到信任区)

  • b站视频缓存到相册(B站视频缓存到手机上电脑能看吗)

    b站视频缓存到相册(B站视频缓存到手机上电脑能看吗)

  • 搜电充电宝怎么充电(搜电充电宝怎么退押金)

    搜电充电宝怎么充电(搜电充电宝怎么退押金)

  • 原来的手机号不用了怎么获取验证码(原来的手机号不用了微信密码忘了怎么办)

    原来的手机号不用了怎么获取验证码(原来的手机号不用了微信密码忘了怎么办)

  • 登录账号和密码怎么填(网页如何记住你的登录账号和密码)

    登录账号和密码怎么填(网页如何记住你的登录账号和密码)

  • 天音科技是苹果授权吗(天音科技是苹果售后吗)

    天音科技是苹果授权吗(天音科技是苹果售后吗)

  • 苹果微信黑色主题怎么取消(苹果微信黑色主题)

    苹果微信黑色主题怎么取消(苹果微信黑色主题)

  • 苹果手机快手声音小怎么办(苹果手机快手声音小怎么变大)

    苹果手机快手声音小怎么办(苹果手机快手声音小怎么变大)

  • 单核和双核有什么区别(单核和双核的区别)

    单核和双核有什么区别(单核和双核的区别)

  • 大疆御手柄如何充电(大疆御遥控手柄怎么充电)

    大疆御手柄如何充电(大疆御遥控手柄怎么充电)

  • honor7x是华为什么型号(honor7x是华为什么型号怎么录屏)

    honor7x是华为什么型号(honor7x是华为什么型号怎么录屏)

  • 为什么qq扩列匹配不了(为什么qq扩列匹配失败了)

    为什么qq扩列匹配不了(为什么qq扩列匹配失败了)

  • fps低是什么原因(csgofps低是什么原因)

    fps低是什么原因(csgofps低是什么原因)

  • lan灯闪烁连不上网

    lan灯闪烁连不上网

  • ipad只能关机充电咋办(ipad只能关机充电开机充不了电是什么原因)

    ipad只能关机充电咋办(ipad只能关机充电开机充不了电是什么原因)

  • 户户通怎样重新定位(户户通怎样重新定位基站)

    户户通怎样重新定位(户户通怎样重新定位基站)

  • ipadmini和ipadair和ipad pro的区别(ipad和ipadair哪个更好)

    ipadmini和ipadair和ipad pro的区别(ipad和ipadair哪个更好)

  • 微信号的手机号不用了怎么办(微信号的手机号注销了微信号还能用吗)

    微信号的手机号不用了怎么办(微信号的手机号注销了微信号还能用吗)

  • 小米6x耳塞位置在哪(小米六x耳机孔在哪)

    小米6x耳塞位置在哪(小米六x耳机孔在哪)

  • 打电话是空号是什么原因(打电话是空号是不是已经注销了)

    打电话是空号是什么原因(打电话是空号是不是已经注销了)

  • 新版Edge浏览器开启“并行下载”功能(新版edge浏览器文字不显示)

    新版Edge浏览器开启“并行下载”功能(新版edge浏览器文字不显示)

  • explorer.exe无响应桌面卡死怎么办?explorer频繁卡死无响应的三种解决方法(explorer.exe无响应桌面卡死是什么原因)

    explorer.exe无响应桌面卡死怎么办?explorer频繁卡死无响应的三种解决方法(explorer.exe无响应桌面卡死是什么原因)

  • php中命名空间的引入方法(php中命名空间的路径)

    php中命名空间的引入方法(php中命名空间的路径)

  • 海关完税价格是什么
  • 一般纳税人季报怎么申报
  • 保险佣金个人所得税怎么算
  • 增值税普通发票查询真伪
  • 城市维护建设税的计税依据是什么
  • 代扣代缴增值税计算公式
  • 应付账款转营业外收入进项税转出
  • 股权转让开票怎么做账
  • 租房专项扣除有上限吗
  • 旅游企业增值税优惠政策
  • 软件企业的工资怎么样
  • 如何区分劳务报酬与经营所得
  • 收益性支出应计入产品成本对吗
  • 不含税劳务报酬怎么交税的
  • 以前年度应付款确认不再支付应调整到哪个科目?
  • 公司没有收入算正常经营吗
  • 核销的方式
  • 专家评审费如何报销费用
  • 发票付款证明怎么写
  • 减免税款交企业所得税吗
  • 电子税务局印花税税种认定
  • 收购企业的账务处理流程
  • 一般纳税人资格登记表
  • 公司章程认缴时效是多久
  • 年底返利账务处理
  • services.exe
  • 顺流交易逆流交易未实现内部交易损益
  • mds是什么进程
  • php去除空格和换行符
  • 处置设备影响的净损益
  • vue方法顺序执行
  • 邮件发送错误怎么解释
  • php closure类
  • php操作mysql数据库
  • 财行〔2019〕11号代扣代缴手续费的解读
  • yolo v5 github
  • 蓝桥杯咋样
  • opencv官方教程
  • 机器学习——感知机
  • html友情链接模板
  • 织梦如何使用
  • 小规模季度免税政策
  • 企业月末在产品数量变化不大时,最适宜
  • 年度财务报表怎么作废
  • 单位财务报销制度和流程
  • SqlServer2012中First_Value函数简单分析
  • 存货的期末余额是账面余额吗
  • 增值税进项发票不够抵扣怎么办
  • 限定性净资产包括哪三个方面
  • 制造费用的核算内容包括什么
  • 拼多多里的多多付款安全吗
  • 清理固定资产的税费
  • 代发工资怎么算税
  • 母公司代子公司收款,子公司开具发票
  • 退多收的费用计入什么科目
  • 自营工程的账务处理
  • 当月开通的业务当月能取消吗
  • win7 mysql5.7.21安装
  • win7 更新
  • centos 7.6安装教程
  • 微软推送Win11226x1.2050
  • winxp系统怎么安装
  • mac修改文件名
  • win10 ie浏览器双击没有反应
  • linux创建.c
  • 从《AndEngine游戏开发实践指南》开始,学习AndEngine引擎
  • shell中break和continue
  • batch批处理
  • [置顶]公主大人接下来是拷问时间31
  • js nextSibling属性和previousSibling属性概述及使用注意
  • nodejs apply
  • python写抢购教程
  • 如何用python连接数据库
  • node-js
  • jquery字符转数字
  • 河南税务总局发票查询
  • 审计局查什么内容
  • 纳税申报表如何打印
  • 1992年2月20号是什么
  • 北京市印花税减免政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设