位置: 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)

  • 和家亲怎么加入家庭成员(和家亲怎么加入家庭)

    和家亲怎么加入家庭成员(和家亲怎么加入家庭)

  • 旋风加速器节点加载失败怎么解决

    旋风加速器节点加载失败怎么解决

  • 华为Nova5怎么拦截所有号码(华为nova5i怎么拦截骚扰电话)

    华为Nova5怎么拦截所有号码(华为nova5i怎么拦截骚扰电话)

  • 高级语言解释方式是指(高级语言解释程序的功能是什么)

    高级语言解释方式是指(高级语言解释程序的功能是什么)

  • 微信语音通话手环不提示(微信语音通话手机锁屏为什么没提醒)

    微信语音通话手环不提示(微信语音通话手机锁屏为什么没提醒)

  • 华为mate30如何投屏到电视(华为mate30pro多少钱)

    华为mate30如何投屏到电视(华为mate30pro多少钱)

  • word文本框长宽怎么设置(word文本框高)

    word文本框长宽怎么设置(word文本框高)

  • obs直播卡顿是什么问题(obs直播间很卡)

    obs直播卡顿是什么问题(obs直播间很卡)

  • 申请快手永久封禁恢复(申请快手永久封禁恢复网站)

    申请快手永久封禁恢复(申请快手永久封禁恢复网站)

  • 拼多多可以qq支付吗(拼多多qq支付退款能到微信上吗)

    拼多多可以qq支付吗(拼多多qq支付退款能到微信上吗)

  • 飞行模式是关机还是暂时无法接通(飞行模式关不了怎么办)

    飞行模式是关机还是暂时无法接通(飞行模式关不了怎么办)

  • 微信新表情包为什么消失了(微信表情包为什么叫sticker)

    微信新表情包为什么消失了(微信表情包为什么叫sticker)

  • 苹果care+版什么意思(苹果care+有什么用)

    苹果care+版什么意思(苹果care+有什么用)

  • 老年机铃声没有声音(老年机没有手机铃声)

    老年机铃声没有声音(老年机没有手机铃声)

  • 四核和八核有什么区别(四核的好还是八核的好)

    四核和八核有什么区别(四核的好还是八核的好)

  • 多亲ai电话能用微信吗(多亲ai电话怎么连接网络)

    多亲ai电话能用微信吗(多亲ai电话怎么连接网络)

  • PS怎么添加图案(ps怎么添加图案叠加素材)

    PS怎么添加图案(ps怎么添加图案叠加素材)

  • 淘宝收的红包在哪里看(淘宝收的红包在哪里查看)

    淘宝收的红包在哪里看(淘宝收的红包在哪里查看)

  • 抖音实名认证怎么解除(抖音实名认证怎么更改)

    抖音实名认证怎么解除(抖音实名认证怎么更改)

  • 笔记本熄屏快捷键(笔记本快捷键熄灭屏幕)

    笔记本熄屏快捷键(笔记本快捷键熄灭屏幕)

  • 11pro怎么设置电池百分比(苹果11pro如何设置电量)

    11pro怎么设置电池百分比(苹果11pro如何设置电量)

  • 荣耀v20nfc功能怎么用(荣耀v20nfc怎么用)

    荣耀v20nfc功能怎么用(荣耀v20nfc怎么用)

  • 三星手机如何进行手机屏幕截图(三星手机如何进行投屏)

    三星手机如何进行手机屏幕截图(三星手机如何进行投屏)

  • 蓝牙手环对人体有害吗(蓝牙手环安全吗)

    蓝牙手环对人体有害吗(蓝牙手环安全吗)

  • 绝对音量功能是什么(绝对音量调节)

    绝对音量功能是什么(绝对音量调节)

  • 如何复制指纹(如何复制指纹锁的指纹?)

    如何复制指纹(如何复制指纹锁的指纹?)

  • 退款成功但是钱没到账(退款成功但是钱没到银行卡,反而银行卡余额没有了)

    退款成功但是钱没到账(退款成功但是钱没到银行卡,反而银行卡余额没有了)

  • 制作能够启动Mac的Windows安装U盘方便Mac安装Windows(mac可以制作win启动盘吗)

    制作能够启动Mac的Windows安装U盘方便Mac安装Windows(mac可以制作win启动盘吗)

  • 一般纳税人增值税怎么做账务处理
  • 制造企业都需要什么人才
  • 长期股权投资中应采用成本法核算的是
  • 个人住房交不交个税
  • 公司出售旧汽车要交什么税
  • 免费给客户提供服务怎么做账
  • 清洗汽车的目的
  • 股权计税成本如何计算?
  • 不收汇样品的会计分录
  • 个人所得税如何做会计分录
  • 分公司开票怎么做账
  • 增值税普通发票需要交税吗
  • 报关单出口退税联模板
  • 哪些营业外支出要调增
  • 单位的审计
  • 跨年补交企业所得税
  • 资产负债表本期盈余是负数怎么办
  • 存货跌价准备在报表什么项目列示
  • 金税盘电子发票怎么开
  • 个人所得税如何办理退税
  • 无法使用内置管理员账户打开micr
  • 出卖固定资产企业处罚
  • 鸿蒙系统怎么设置导航键
  • php字符串赋值
  • php语言标记风格有四种,分别是
  • 资产负债表左方烈士的资产按什么排列
  • 卢塞恩小镇瑞士
  • 出让土地使用权和转让土地使用权的区别
  • 财务会计制度备案
  • gridview datakeynames
  • 错误解决方法
  • 投资担保公司的钱都去哪了
  • 销项税太多
  • python 嵌入
  • 商品出入库台账
  • 未达起征点的增值税怎么账务处理
  • wordpress图片大小设置
  • Python中input输入多行文本
  • 内帐税金会计分录
  • 个人独资所得
  • 房屋租赁水电费计入什么科目
  • 移动平均加权法怎么算
  • 个人缴纳职业年金的比例为本人缴费工资的多少
  • 一般纳税人购买固定资产进项税可以抵扣吗
  • 营改增后存在的问题
  • 享受小微企业免征增值税政策
  • 职工福利费如何计提
  • 出口退税进项票跨月勾选
  • 月初没有发票
  • 主营业务成本和管理费用的区别
  • 企业到外地
  • 收到红字发票怎么做账怎么做进项税额转出
  • 微信支付宝收入支出怎么做流水账
  • 违约金进项税额可否抵扣 分录
  • 待摊费用和预提费用的区别
  • 什么叫建账
  • 如何制作会计账簿
  • mysql常见语句总结
  • MySQL关键字执行顺序
  • win 10 ie8
  • win8系统运行窗口怎么打开
  • windows10 rs2
  • 电脑图片打印不出来怎么办
  • windows8笔记本电脑
  • windows7的电脑
  • shell脚本spawn
  • nginx日志切割原理
  • css网站布局实录
  • 微信和qq时间格式不一样
  • 安卓广播的作用
  • js正则表达式gi
  • python scripy
  • cocos2dx:C++层通过JniHelper调用JAVA层代码进而调用Android手机应用接口
  • python3解析json
  • 动态效果怎么设置
  • python动态加载py
  • JavaScript的removeChild()函数用法详解
  • python安装心得
  • jquer选择器
  • 西安12345官网登录入口二维码
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设