DDR爱好者之家 Design By 杰米
适合初学者参考的简易计算器,里面没有太多的难以理解的方法,使用的是最基础的JS语法解决式子的运算问题,同时处理了式子中的运算优先级。
实现思路
1、通过绑定点击事件实现待计算式子的输入
2、遍历原式子,读取式子中乘除运算符的位置
3、优先处理乘除取余运算
4、处理加减运算
5、返回结果
代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <!-- 计算器 --> <style> .work2{ width: 500px; margin-top: 50px; } h2{ color: #333; } #work2Article1{ width: 100%; height: 200px; background: #cccccc; font-size: 20px; } #work2Article2{ width: 100%; height: 400px; background: #cccccc; } #work2Article2 button{ width: 24.1%; height: 20%; color: #333; background: #999; } .work2 button{ font-size: 20px; } </style> <section class="work2"> <h2>计算器</h2> <article id="work2Article1"> </article> <article id="work2Article2"> <button id="work2BtnCle">AC</button> <button id="work2BtnDel">×</button> <button id="work2BtnRem">%</button> <button id="work2BtnDiv">/</button> <button id="work2Btn7">7</button> <button id="work2Btn8">8</button> <button id="work2Btn9">9</button> <button id="work2BtnMul">*</button> <button id="work2Btn4">4</button> <button id="work2Btn5">5</button> <button id="work2Btn6">6</button> <button id="work2BtnSub">-</button> <button id="work2Btn1">1</button> <button id="work2Btn2">2</button> <button id="work2Btn3">3</button> <button id="work2BtnAdd">+</button> <button id="work2BtnNull">未开发</button> <button id="work2Btn0">0</button> <button id="work2BtnPoi">.</button> <button id="work2BtnEqu">=</button> </article> </section> <script> var num = "0"; //输入的原式 var res = 0 ; //结果 var work2Article1 = document.getElementById('work2Article1'); var work2BtnCle = document.getElementById('work2BtnCle'); var work2BtnDiv = document.getElementById('work2BtnDiv'); var work2BtnDel = document.getElementById('work2BtnDel'); var work2BtnRem = document.getElementById('work2BtnRem'); var work2BtnMul = document.getElementById('work2BtnMul'); var work2BtnSub = document.getElementById('work2BtnSub'); var work2BtnAdd = document.getElementById('work2BtnAdd'); var work2BtnNull = document.getElementById('work2BtnNull'); var work2BtnPoi = document.getElementById('work2BtnPoi'); var work2BtnEqu = document.getElementById('work2BtnEqu'); var work2Btn1 = document.getElementById('work2Btn1'); var work2Btn2 = document.getElementById('work2Btn2'); var work2Btn3 = document.getElementById('work2Btn3'); var work2Btn4 = document.getElementById('work2Btn4'); var work2Btn5 = document.getElementById('work2Btn5'); var work2Btn6 = document.getElementById('work2Btn6'); var work2Btn7 = document.getElementById('work2Btn7'); var work2Btn8 = document.getElementById('work2Btn8'); var work2Btn9 = document.getElementById('work2Btn9'); var work2Btn0 = document.getElementById('work2Btn0'); // 初始化 work2BtnCle.onclick = function () { num = "0" ; work2Article1.innerText=`${num}`; } work2BtnDel.onclick = function () { // 判断原式长度,长度为1时变为0 if(num.length==1){ num = '0' ; work2Article1.innerText=num; // 否则减去最后一位 }else{ num = num.substring(0,num.length-1); work2Article1.innerText=num; } } // 运算符点击事件 work2BtnDiv.onclick = function () { num += "/" work2Article1.innerText=num; } work2BtnRem.onclick = function () { num += "%" ; work2Article1.innerText=`${num}`; } work2BtnMul.onclick = function () { num += "*" ; work2Article1.innerText=`${num}`; } work2BtnAdd.onclick = function () { num += "+" ; work2Article1.innerText=`${num}`; } work2BtnNull.onclick = function () { alert('下次一定开发出来'); } work2BtnPoi.onclick = function () { num += "." ; work2Article1.innerText=`${num}`; } work2BtnSub.onclick = function () { num += "-" ; work2Article1.innerText=`${num}`; } // 数字点击事件 work2Btn1.onclick =function(){ if( num == "0" ){ num = "1"; }else{ num += "1" ; } work2Article1.innerText=`${num}`; } work2Btn2.onclick =function(){ if( num == "0" ){ num = "2"; }else{ num += "2" ; } work2Article1.innerText=`${num}`; } work2Btn3.onclick =function(){ if( num == "0" ){ num = "3"; }else{ num += "3" ; } work2Article1.innerText=`${num}`; } work2Btn4.onclick =function(){ if( num == "0" ){ num = "4"; }else{ num += "4" ; } work2Article1.innerText=`${num}`; } work2Btn5.onclick =function(){ if( num == "0" ){ num = "5"; }else{ num += "5" ; } work2Article1.innerText=`${num}`; } work2Btn6.onclick =function(){ if( num == "0" ){ num = "6"; }else{ num += "6" ; } work2Article1.innerText=`${num}`; } work2Btn7.onclick =function(){ if( num == "0" ){ num = "7"; }else{ num += "7" ; } work2Article1.innerText=`${num}`; } work2Btn8.onclick =function(){ if( num == "0" ){ num = "8"; }else{ num += "8" ; } work2Article1.innerText=`${num}`; } work2Btn9.onclick =function(){ if( num == "0" ){ num = "9"; }else{ num += "9" ; } work2Article1.innerText=`${num}`; } work2Btn0.onclick =function(){ if( num == "0" ){ num = "0"; }else{ num += "0" ; } work2Article1.innerText=`${num}`; } work2BtnEqu.onclick = function () { // num = Number(num); //检测运算符号的位置 function obtainSymbol(){ var num1 = []; var o = 0 ; for(var i = 0 ; i<=num.length ; i++){ if(num.charAt(i)=='+'){ num1[o] = i ; o++; }else if(num.charAt(i)=='-'){ num1[o] = i ; o++; }else if(num.charAt(i)=='*'){ num1[o] = i ; o++; }else if(num.charAt(i)=='/'){ num1[o] = i ; o++; }else if(num.charAt(i)=='%'){ num1[o] = i ; o++; } } return num1 ; } var res1 = 0 ; //计算结果 var numStar = num ; //重新获取原式子 // 检测乘除取余运算 var num1 = obtainSymbol(); console.log(num1); // 检测除了第一个符号之外的乘除取余运算 for( var w = 0 ; w <= num1.length ; w++ ){ if(w != 0){ if( num.charAt(num1[w]) == '*' || num.charAt(num1[w]) == '/' || num.charAt(num1[w]) == '%' ){ if(w != num1.length-1){ switch(num.charAt(num1[w])){ case '*': var l =Number(num.substring(num1[w-1],num1[w]))*Number(num.substring(num1[w]+1,num1[w+1])) ; console.log(l); num = num.substring(0,num1[w-1]+1) + l + num.substring(num1[w+1]) ; break; case '/': var l =Number(num.substring(num1[w-1],num1[w]))*Number(num.substring(num1[w]+1,num1[w+1])) ; num = num.substring(0,num1[w-1]+1) + l + num.substring(num1[w+1]) ; break; case '%': var l =Number(num.substring(num1[w-1],num1[w]))*Number(num.substring(num1[w]+1,num1[w+1])) ; num = num.substring(0,num1[w-1]+1) + l + num.substring(num1[w+1]) ; break; } }else if(w == num1.length-1 ){ switch(num.charAt(num1[w])){ case '*': var l =Number(num.substring(num1[w-1]+1,num1[w])) * Number(num.substring(num1[w]+1)) ; num = num.substring(0,num1[w-1]+1) + l ; break; case '/': var l =Number(num.substring(num1[w-1]+1,num1[w])) / Number(num.substring(num1[w]+1)) ; num = num.substring(0,num1[w-1]+1) + l ; break; case '%': var l =Number(num.substring(num1[w-1]+1,num1[w])) % Number(num.substring(num1[w]+1)) ; num = num.substring(0,num1[w-1]+1) + l; break; } } num1 = 0 ; num1 = obtainSymbol(); w -= 1; } } } // 从第一位运算符开始运算 for(var k = 0 ; k < num1.length ; k++){ if(k==0){ switch(num.charAt(num1[k])){ case '+': res1 += Number(num.substring(0,num1[k])) + Number(num.substring(num1[k]+1,num1[k+1])) ; break; case '-': res1 += Number(num.substring(0,num1[k])) - Number(num.substring(num1[k]+1,num1[k+1])) ; break; case '*': res1 += Number(num.substring(0,num1[k])) * Number(num.substring(num1[k]+1,num1[k+1])) ; break; case '/': res1 += Number(num.substring(0,num1[k])) / Number(num.substring(num1[k]+1,num1[k+1])) ; break; case '%': res1 += Number(num.substring(0,num1[k])) % Number(num.substring(num1[k]+1,num1[k+1])) ; break; } }else{ switch(num.charAt(num1[k])){ case '+': if(k==num1.length-1){ res1 += Number(num.substring(num1[k]+1)) ; }else{ res1 += Number(num.substring(num1[k]+1,num1[k+1])); }break; case '-': if(k==num1.length-1){ res1 -= Number(num.substring(num1[k]+1)) ; }else{ res1 -= Number(num.substring(num1[k]+1,num1[k+1])); }break; case '*': if(k==num1.length-1){ res1 *= Number(num.substring(num1[k]+1)) ; }else{ res1 *= Number(num.substring(num1[k]+1,num1[k+1])); }break; case '/': if(k==num1.length-1){ res1 /= Number(num.substring(num1[k]+1)) ; }else{ res1 /= Number(num.substring(num1[k]+1,num1[k+1])); }break; case '%': if(k==num1.length-1){ res1 %= Number(num.substring(num1[k]+1)) ; }else{ res1 %= Number(num.substring(num1[k]+1,num1[k+1])); }break; } } } work2Article1.innerText=`${numStar}=${res1}`; } </script> </body> </html>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米
暂无评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
2024年11月24日
2024年11月24日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]