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

  • 萤石摄像头被别人绑定了怎么解绑(萤石摄像头被别人添加)

    萤石摄像头被别人绑定了怎么解绑(萤石摄像头被别人添加)

  • iqoo8怎么打开nfc(iQOO8怎么打开空调)

    iqoo8怎么打开nfc(iQOO8怎么打开空调)

  • 华为怎么截屏长图(华为怎么截屏长图模式)

    华为怎么截屏长图(华为怎么截屏长图模式)

  • 超级qq为什么没有了(超级qq在哪里)

    超级qq为什么没有了(超级qq在哪里)

  • 微信怎么设置人脸识别登录(微信怎么设置人脸)

    微信怎么设置人脸识别登录(微信怎么设置人脸)

  • 苹果耳机r是左还是右(苹果耳机r是左耳右耳吗)

    苹果耳机r是左还是右(苹果耳机r是左耳右耳吗)

  • 苹果xr长度多少cm(苹果xr手机长宽厚是多少)

    苹果xr长度多少cm(苹果xr手机长宽厚是多少)

  • 苹果手机多少天可以免费换新(苹果手机多少天内可以换新机)

    苹果手机多少天可以免费换新(苹果手机多少天内可以换新机)

  • 路由器动态DNS要不要开(路由器动态dns要自动还是手动)

    路由器动态DNS要不要开(路由器动态dns要自动还是手动)

  • oppoa92s电池多少毫安(oppoa92电池多少毫安)

    oppoa92s电池多少毫安(oppoa92电池多少毫安)

  • 华为p40支持智能遥控吗(华为p40支持智能感应支付吗)

    华为p40支持智能遥控吗(华为p40支持智能感应支付吗)

  • 微信其他应用打开没有qq(微信其他应用打开在哪里设置)

    微信其他应用打开没有qq(微信其他应用打开在哪里设置)

  • 钉钉加好友可以看到对方的所有信息吗(钉钉加好友可以看到职位信息吗)

    钉钉加好友可以看到对方的所有信息吗(钉钉加好友可以看到职位信息吗)

  • 超6类和7类网线的区别(超6类和7类网线哪个好)

    超6类和7类网线的区别(超6类和7类网线哪个好)

  • 为什么微信视频不带美颜(为什么微信视频总是黑屏)

    为什么微信视频不带美颜(为什么微信视频总是黑屏)

  • 华为后面的标签能撕吗(华为后面的标签怎么取消)

    华为后面的标签能撕吗(华为后面的标签怎么取消)

  • word设置为独立一节(word设置独立页脚)

    word设置为独立一节(word设置独立页脚)

  • 耕升显卡为什么便宜(最新的显卡型号)

    耕升显卡为什么便宜(最新的显卡型号)

  • 激萌老年妆变化怎么拍(老年妆视频教程)

    激萌老年妆变化怎么拍(老年妆视频教程)

  • word无法启动转换器(word无法启动转换器recovr32)

    word无法启动转换器(word无法启动转换器recovr32)

  • 微云上传视频要会员吗(微云上传视频收费吗)

    微云上传视频要会员吗(微云上传视频收费吗)

  • 华为mate20设置微信锁(华为mate20微信怎么设置密码锁屏)

    华为mate20设置微信锁(华为mate20微信怎么设置密码锁屏)

  • vue中父组件异步数据通过props方式传递给子组件,子组件接收不到的问题(vue父组件引入子组件)

    vue中父组件异步数据通过props方式传递给子组件,子组件接收不到的问题(vue父组件引入子组件)

  • 傅里叶级数、狄利克雷收敛定理、周期延拓(傅里叶级数狄利克雷判别法)

    傅里叶级数、狄利克雷收敛定理、周期延拓(傅里叶级数狄利克雷判别法)

  • 版税是什么意思
  • 税务登记证号是纳税人识别号吗?
  • 城镇土地使用税的征税范围有哪些
  • 去年的电费可以在今年入账分录
  • 发票未到怎么暂估入账
  • 政府项目如何进项目
  • 税控系统技术维护费可以抵扣吗
  • 高新技术企业所得税减免怎么算
  • 成品油跨月发票红字冲销步骤
  • 合法的扣税凭证图片
  • 融资租赁营改增时间
  • 应税服务零税率是什么
  • 结转以前的其他业务成本如何做会计分录呢?
  • 合同没签定金可以退的吗
  • 银行收到对方付款的会计分录
  • 商场交的房租押金可以退吗
  • 城镇土地使用税的计税依据
  • 个人承担的社保算工资吗
  • 被辞退还有退休金吗
  • 营改增对固定资产的影响
  • 高新技术企业退税比例是多少
  • 开票含税和不含税怎么切换视频讲解
  • 购买国债利息收入计入利润总额吗
  • 中标费用由哪方出
  • 借方和贷方是什么意思银行存款
  • 支票付款的弊端
  • 仓库的账怎么做
  • macos big sur如何
  • 什么是盈余公积和资本公积
  • 事业单位采购管理办法
  • 利润为负数怎么调
  • 一般纳税人怎么算税
  • office2016安全模式
  • 差额征税通俗理解
  • win11有什么升级
  • 最多人用的操作系统
  • PHP:zip_entry_compressionmethod()的用法_Zip函数
  • 常用的前端大屏软件
  • 展开双翅的绯红之花
  • 移民美国怎样加入医疗保险
  • 生育津贴有什么补贴
  • 收费公路通行费补费平台 APP
  • 个税申报失败如何修复
  • 销售费用期末余额
  • flex布局实战
  • 微信小店api
  • 顺风车没有发票可以税前扣除吗
  • 新个税累计预扣怎么算
  • 金融债券利息收入免企业所得税吗
  • 个人所得税两处或两处以上工资、薪金所得纳税申报表
  • 代缴纳房产税
  • 其他应付款计入资产负债表哪个科目
  • 财政补贴收入怎么做账
  • 金税四期对企业的好处
  • 出售子公司股权给其他公司
  • 起征点和免征额都是税收优惠形式
  • 利息收入填在汇算清缴哪里
  • 平行结转分步法各步骤的费用
  • 溢价收购股权所得税税率
  • 纳税实务的涉税业务分几类
  • 银行存款日记账与银行对账单之间的核对属于
  • 公司利润太高了怎么办
  • windowns vista
  • linux 文件执行
  • 让xp系统自动修复软件
  • movie是什么文件
  • win7系统中怎样没有智能卡服务
  • win10英文版系统怎么完全改为中文
  • 图文详解地理图册电子版
  • perl读取文件内容
  • angularjs2
  • android中启动service的方法有
  • js中concat的用法
  • javascript常用类型
  • java教程
  • 基于javascript的毕业设计
  • 收集什么比较好
  • jquery点击按钮修改表格数据
  • 浙江省网上税务局申报
  • 云南省国家税务局APP
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设