javascript-簡單的計算器實作步驟分解
知識要點:
1、數學運算「+,-,*,/」的使用
2、輸入內容的判斷,對於事件對象的來源的判斷
效果:
第一:分支計算部分沒有使用switch 語句,使用了名值對的形式。
<style> #calculate { line-height: 60px; text-align: center; background: #ccc; font-size: 16px; font-weight: bold; } #calculate tbody input{ width: 100%; height: 60px; background:#033; color: #fff; font: bold 16px/1em 'Microsoft yahei'; } #calculate tbody td{ width: 25%; background: #fff; } #calculate_outPut{ font-size: 20px; letter-spacing:2px; background:#fff; height: 40px; border: none; text-align: right; width: 100%; } </style> <table width="300" border="0" cellspacing="1" cellpadding="0" id="calculate"> <thead > <tr> <td colspan="4" align="right"><input id="calculate_outPut" value="0" disabled="disabled"></td> </tr> </thead> <tbody id="calculate_num"> <tr> <td><label> <input type="button" name="button" id="button" value="7" _type='num' /> </label></td> <td><input type="button" value="8" _type='num' /></td> <td><input type="button" value="9" _type='num' /></td> <td><input type="button" value="/" _type='op' /></td> </tr> <tr> <td><input type="button" value="4" _type='num' /></td> <td><input type="button" value="5" _type='num' /></td> <td><input type="button" value="6" _type='num' /></td> <td><input type="button" value="*" _type='op' /></td> </tr> <tr> <td><input type="button" value="1" _type='num' /></td> <td><input type="button" value="2" _type='num' /></td> <td><input type="button" value="3" _type='num' /></td> <td><input type="button" value="-" _type='op' /></td> </tr> <tr> <td><input type="button" value="0" _type='num' /></td> <td><input type="button" value="+/-" _type='+/-' /></td> <td><input type="button" value="." _type='.' /></td> <td><input type="button" value="+" _type='op' /></td> </tr> <tr> <td colspan="2" id="debug"><input type="button" value="backspace" _type='bs' /></td> <td><input type="button" value="C" _type='cls' /></td> <td><input type="button" value="=" _type='eval' /></td> </tr> </tbody> </table> <script> //计算对象 var operateExp={ '+':function(num1,num2){return num1+num2;}, '-':function(num1,num2){return num1-num2;}, '*':function(num1,num2){return num1*num2;}, '/':function(num1,num2){return num2===0?0:num1/num2;} } //计算函数 var operateNum=function(num1,num2,op){ if(!(num1&&num2))return; //保证num1,num2都为数字 num1=Number(num1); num2=Number(num2); //不存在操作符,返回num1; if(!op)return num1; //匹配运算公式 if(!operateExp[op])return 0; return operateExp[op](num1,num2); } //显示面板 var calculate_outPut=document.getElementById("calculate_outPut"); //操作面板 var calculate_num=document.getElementById("calculate_num"); var result=0;//计算结果 var isReset=false;//是否重新设置 var operation;//操作符 //设置显示屏的值 function setScreen(num){ calculate_outPut.value=num; } //获取显示屏的值 function getScreen(){ return calculate_outPut.value; } //添加点击事件 calculate_num.onclick=function(e){ var ev = e || window.event; var target = ev.target || ev.srcElement; if(target.type=="button"){ var mark=target.getAttribute("_type");//获取当前点击button的自定义的属性。 var value=target.value;//获取当前的值 var num=getScreen();//获取当前框的值 if(mark==='bs'){//退格键 if(num==0)return; var snum=Math.abs(num).toString(); if(snum.length<2) setScreen(0); else setScreen(num.toString().slice(0,-1)); } if(mark==='num'){//数字键 if(num==='0'||isReset){//有操作符或显示屏为0 setScreen(value); isReset=false; return; } setScreen(num.toString().concat(value)); } if(mark==="."){//小数点 var hasPoint=num.toString().indexOf(".")>-1; if(hasPoint){ if(isReset){ setScreen("0"+value); isReset=false; return; } return; } setScreen(num.toString().concat(value)); } if(mark==="+/-"){//正负号 setScreen(-num); } if(mark==="op"){//如果点击的是操作符则设计第一个操作数 if(isReset)return; isReset=true; if(!operation){ result=+num; operation=value; return; } result=operateNum(result,num,operation); setScreen(result); operation=value; } if(mark==="cls"){//清零 result=0; setScreen(result); isReset=false; } if(mark==="eval"){//计算 if(!operation)return; result=operateNum(result,num,operation); setScreen(result); operation=null; isReset=false; } } } </script> View Code
第二:物件事件的屬性的使用,取得點擊物件的類型。利用事件冒泡,捕捉事件,並對事件進行分類。
//计算对象 var operateExp={ '+':function(num1,num2){return num1+num2;}, '-':function(num1,num2){return num1-num2;}, '*':function(num1,num2){return num1*num2;}, '/':function(num1,num2){return num2===0?0:num1/num2;} }
calculate_num.onclick=function(e){ var ev = e || window.event; var target = ev.target || ev.srcElement; if(target.type=="button"){ var mark=target.getAttribute("_type");//获取当前点击button的自定义的属性。 var value=target.value;//获取当前的值 var num=getScreen();//获取当前框的值 if(mark==='bs'){//退格键 if(num==0)return; var snum=Math.abs(num).toString(); if(snum.length<2) setScreen(0); else setScreen(num.toString().slice(0,-1)); } if(mark==='num'){//数字键 if(num==='0'||isReset){//有操作符或显示屏为0 setScreen(value); isReset=false; return; } setScreen(num.toString().concat(value)); } if(mark==="."){//小数点 var hasPoint=num.toString().indexOf(".")>-1; if(hasPoint){ if(isReset){ setScreen("0"+value); isReset=false; return; } return; } setScreen(num.toString().concat(value)); } if(mark==="+/-"){//正负号 setScreen(-num); } if(mark==="op"){//如果点击的是操作符则设计第一个操作数 if(isReset)return; isReset=true; if(!operation){ result=+num; operation=value; return; } result=operateNum(result,num,operation); setScreen(result); operation=value; } if(mark==="cls"){//清零 result=0; setScreen(result); isReset=false; } if(mark==="eval"){//计算 if(!operation)return; result=operateNum(result,num,operation); setScreen(result); operation=null; isReset=false; } } }
var result=0;//计算结果 var isReset=false;//是否重新设置 var operation;//操作符
//设置显示屏的值 function setScreen(num){ calculate_outPut.value=num; } //获取显示屏的值 function getScreen(){ return calculate_outPut.value; }

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

本文討論了在瀏覽器中優化JavaScript性能的策略,重點是減少執行時間並最大程度地減少對頁面負載速度的影響。

本文討論了使用瀏覽器開發人員工具的有效JavaScript調試,專注於設置斷點,使用控制台和分析性能。

本文說明瞭如何使用源地圖通過將其映射回原始代碼來調試JAVASCRIPT。它討論了啟用源地圖,設置斷點以及使用Chrome DevTools和WebPack之類的工具。

Python和JavaScript開發者的薪資沒有絕對的高低,具體取決於技能和行業需求。 1.Python在數據科學和機器學習領域可能薪資更高。 2.JavaScript在前端和全棧開發中需求大,薪資也可觀。 3.影響因素包括經驗、地理位置、公司規模和特定技能。

本教程將介紹如何使用 Chart.js 創建餅圖、環形圖和氣泡圖。此前,我們已學習了 Chart.js 的四種圖表類型:折線圖和條形圖(教程二),以及雷達圖和極地區域圖(教程三)。 創建餅圖和環形圖 餅圖和環形圖非常適合展示某個整體被劃分為不同部分的比例。例如,可以使用餅圖展示野生動物園中雄獅、雌獅和幼獅的百分比,或不同候選人在選舉中獲得的投票百分比。 餅圖僅適用於比較單個參數或數據集。需要注意的是,餅圖無法繪製值為零的實體,因為餅圖中扇形的角度取決於數據點的數值大小。這意味著任何占比為零的實體

掌握了入門級TypeScript教程後,您應該能夠在支持TypeScript的IDE中編寫自己的代碼,並將其編譯成JavaScript。本教程將深入探討TypeScript中各種數據類型。 JavaScript擁有七種數據類型:Null、Undefined、Boolean、Number、String、Symbol(ES6引入)和Object。 TypeScript在此基礎上定義了更多類型,本教程將詳細介紹所有這些類型。 Null數據類型 與JavaScript一樣,TypeScript中的null
