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

  • 中国移动宽带怎么查看附近移动营业厅(中国移动宽带怎么退订)

    中国移动宽带怎么查看附近移动营业厅(中国移动宽带怎么退订)

  • 华为nova7pro显示屏上hd如何取消(华为nova7pro显示2G)

    华为nova7pro显示屏上hd如何取消(华为nova7pro显示2G)

  • 怎么一键删除抖音喜欢的视频(怎么一键删除抖音私信聊天记录)

    怎么一键删除抖音喜欢的视频(怎么一键删除抖音私信聊天记录)

  • 耳机要转动线才有声音(耳机要转动线才能充电吗)

    耳机要转动线才有声音(耳机要转动线才能充电吗)

  • 抖音直播平台抽多少(抖音直播平台抽奖必中软件)

    抖音直播平台抽多少(抖音直播平台抽奖必中软件)

  • 淘宝和天猫一样吗(淘宝和天猫一样吗?)

    淘宝和天猫一样吗(淘宝和天猫一样吗?)

  • 已取消网页导航的解决方法(赛尔号登录器已取消网页导航)

    已取消网页导航的解决方法(赛尔号登录器已取消网页导航)

  • 魅族17跟17pro区别(魅族17和17pro)

    魅族17跟17pro区别(魅族17和17pro)

  • 蓝牙耳机红灯亮什么意思(蓝牙耳机红灯亮表示)

    蓝牙耳机红灯亮什么意思(蓝牙耳机红灯亮表示)

  • 骁龙765比730强多少(骁龙765和730g哪个好吗吧)

    骁龙765比730强多少(骁龙765和730g哪个好吗吧)

  • 华为海思是什么意思(华为海思是什么时候成立的)

    华为海思是什么意思(华为海思是什么时候成立的)

  • 知乎访问别人主页有记录吗(知乎访问别人主页安全吗)

    知乎访问别人主页有记录吗(知乎访问别人主页安全吗)

  • 荣耀9x插耳机没反应(华为荣耀9x耳机插孔用不了)

    荣耀9x插耳机没反应(华为荣耀9x耳机插孔用不了)

  • ipad可以边充边玩吗(ipad可以边充电边玩吗安全吗)

    ipad可以边充边玩吗(ipad可以边充电边玩吗安全吗)

  • 办5g套餐需要换卡吗(办5g套餐需要换5g卡吗)

    办5g套餐需要换卡吗(办5g套餐需要换5g卡吗)

  • ipad画画的软件叫什么(适合ipad画画的软件)

    ipad画画的软件叫什么(适合ipad画画的软件)

  • 视听资料和电子数据的区别(视听资料和电子数据的关系)

    视听资料和电子数据的区别(视听资料和电子数据的关系)

  • 快手小店必须要有淘宝店吗(快手小店必须要营业执照吗)

    快手小店必须要有淘宝店吗(快手小店必须要营业执照吗)

  • 西文空格怎么删除(西文空格删除怎么删)

    西文空格怎么删除(西文空格删除怎么删)

  • 荣耀9x多少寸(荣耀9X多少寸的)

    荣耀9x多少寸(荣耀9X多少寸的)

  • 腾讯王卡包括拼多多吗(腾讯王卡包含)

    腾讯王卡包括拼多多吗(腾讯王卡包含)

  • 抖音怎么加快图片播放速度(抖音图片怎么加速度播放)

    抖音怎么加快图片播放速度(抖音图片怎么加速度播放)

  • mac连着wifi能开热点吗(mac 连上wifi)

    mac连着wifi能开热点吗(mac 连上wifi)

  • 我是谜麦克风怎么开启(我是谜怎么旁听)

    我是谜麦克风怎么开启(我是谜怎么旁听)

  • qq聊天图标都有哪些(qq聊天图标什么意思)

    qq聊天图标都有哪些(qq聊天图标什么意思)

  • 如何知道手机号被屏蔽(如何知道手机号绑定了哪些软件)

    如何知道手机号被屏蔽(如何知道手机号绑定了哪些软件)

  • 杜鹃花的养殖方法和注意事项(杜鹃花的养殖方法和修剪)

    杜鹃花的养殖方法和注意事项(杜鹃花的养殖方法和修剪)

  • libev & libevent简介  IntelIOT  博客园

    libev & libevent简介 IntelIOT 博客园

  • 出口退税调整后退税率包括什么档次
  • 代扣个税的会计分录怎么做
  • 增值税专用发票有效期是多长时间
  • 材料入库结转成本的会计分录怎么写
  • 未开票收入缴纳增值税怎么冲减补开发票
  • 个人独资企业法人可以变更吗?
  • 企业股权无偿转让不缴增值税
  • 公司现金支付管理办法
  • 成品油经销企业开具的成品油电子专用发票
  • 成本类与费用类科目哪些区别
  • 快递行业的收入与成本
  • 增值税期末留抵税额的账务处理
  • 营改增之前固定资产可以抵扣吗
  • 公司增值税发票有限额吗
  • 什么时候计入其他综合收益什么时候计入投资收益
  • 什么科目呀
  • 调整固定资产原值减少
  • 出租房产免收租金合法吗
  • 什么收入不需要交税0税
  • 增值税发票和收据的区别
  • 管理费用金额多做了,如何减少
  • Win10升级win11是激活状态吗?
  • 华为手机屏幕下的三个功能键设置方法
  • 其他应收款会计科目
  • 进项税和销项税怎么算
  • 支付水费现金流量
  • 车辆理赔过程中,赔付款给谁
  • 工业园租金大概是多少
  • PHP:preg_match()的用法_PCRE正则函数
  • win10记事本怎么改字体颜色
  • avgserv9.exe是什么进程 avgserv9进程的详细介绍
  • 建造合同完工百分比法
  • 个体工商户如何给员工交社保
  • servlet工作原理和生命周期
  • 购入电脑可以入成本里吗
  • 后端三件套
  • 违法汽车查询
  • 销售建材行业
  • css page-break-after
  • 企业将存款汇往异地银行
  • 垃圾处置费的收费标准
  • 个人所得税经营所得税申报表A表
  • 织梦产品详情页相关产品推荐调用代码
  • mongodb数据库查询用多少存储
  • mongodb查询工具
  • 生产企业免抵退税实例
  • 折旧汇总分配周期参数设定完成可以更改吗
  • 发票可以去做原始凭证吗
  • 货到票未到的会计分录怎么做
  • sql2008降级2005
  • 增值税留抵税额是什么意思
  • 哪些情况属于
  • 无资产可执行啥意思
  • 建筑公司支付给农民工的工资需要取得发票吗
  • 生产车间制造产品领用材料45000元,领用车间一半消耗
  • 产品包装设计费属什么费用
  • 预缴的所得税怎么申请退税
  • 个体户减免税额怎么填
  • 进项税额大于销项税月末结转
  • 允许税前扣除的税金及附加包括哪些
  • 小规模附加税减半征收什么时候开始
  • mysql 5.7.16 winx64安装配置方法图文教程
  • 不用鲁大师
  • 海尔电脑优盘启动键
  • 要使用windows
  • linux 定时运行
  • 删除隐藏文件命令
  • javascript 引入
  • 图文详解地理图册电子版
  • linux运维是必死之路
  • css 3
  • perl 正则表达式 保留原有字符
  • eevee引擎
  • 怎么检测python
  • nodejs mysql orm
  • shell中括号的作用
  • 国家税务局发票查询
  • 无偿使用的房屋装修如何摊销
  • 无锡国税电子发票怎么开
  • 在深圳月薪8000是什么水平
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设