js版實(shí)現(xiàn)計(jì)算器功能
本文實(shí)例為大家分享了js實(shí)現(xiàn)計(jì)算器功能的具體代碼,供大家參考,具體內(nèi)容如下
在老師的帶領(lǐng)下完成了這個(gè)簡(jiǎn)單的計(jì)算器,這是一個(gè)神奇的過(guò)程,計(jì)算器的基本功能都是有的。雖然是個(gè)簡(jiǎn)單的計(jì)算器,但對(duì)初學(xué)者來(lái)說(shuō),還是需要強(qiáng)大的邏輯判斷能力,里面有很多的條件,作為開(kāi)發(fā)者要不斷的尋找設(shè)計(jì)里的bug,不斷地完善用戶的需求,而這些都需要清晰的邏輯推理和判斷,我有點(diǎn)頭大了。
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>計(jì)算器</title> <style> *{ padding:0; margin:0; } table{ width:400px; margin:auto; border:1px solid silver; border-collapse: collapse;/*列與列的間距*/ } td { width: 100px; border: 1px solid #525252; } td input{ width:98.7%; height:60px; outline: none; text-align: right; font-size: 20px; background: rgba(251, 255, 227, 0.81); } td button{ width:100%; height:60px; font-size: 22px; background: rgba(223, 255, 243, 0.81); } </style> </head> <body> <table> <tr> <td colspan="4" ><input id="text" type="text" value="0" /></td> </tr> <tr> <td colspan="2"><button class="btn">del</button></td> <td colspan="2"><button class="btn">c</button></td> </tr> <tr> <td><button class="btn">9</button></td> <td><button class="btn">8</button></td> <td><button class="btn">7</button></td> <td><button class="btn">+</button></td> </tr> <tr> <td><button class="btn">6</button></td> <td><button class="btn">5</button></td> <td><button class="btn">4</button></td> <td><button class="btn">-</button></td> </tr> <tr> <td><button class="btn">3</button></td> <td><button class="btn">2</button></td> <td><button class="btn">1</button></td> <td><button class="btn">*</button></td> </tr> <tr> <td><button class="btn">0</button></td> <td><button class="btn">.</button></td> <td><button class="btn">=</button></td> <td><button class="btn">/</button></td> </tr> </table> <!--<span id="m">8</span>--> <script> /* var M=document.getElementById ("m"); console.log(M.innerHTML ); console.log(M.innerText);*/ //獲取按鈕 var buttonal=document.getElementsByClassName ("btn"); var textal=document.getElementById("text"); var res=[]; //定義一個(gè)數(shù)組存儲(chǔ)輸入的值 var label=false; for(var i=0;i<buttonal.length;i++){ buttonal [i].onclick=addclick; function addclick(){ //輸入為數(shù)字或者為“.” if(!isNaN(this.innerHTML) || this.innerHTML=="."){ //文本框初值不為0 label = true; if(textal.value!== "0"){ //文本框中含有“.” if(textal.value.indexOf(".")!==-1){ //處理點(diǎn)重復(fù)的問(wèn)題 文本框里面有點(diǎn) 不上去點(diǎn)(用戶按的數(shù)字 得加 用戶按的是點(diǎn) 不加) //輸入"."時(shí) if(this.innerHTML!== "."){ textal.value+=this.innerHTML; } } else{ textal.value+=this.innerHTML; } } //文本框初值為0 else{ if(this.innerHTML =="."){ textal.value="0"+this.innerHTML ; } else{ textal.value=this.innerHTML; } } } //非數(shù)字 else{ switch(this.innerHTML ) { case "+" :save(this); break; case "-" :save(this); break; case "/" :save(this); break; case "*":save(this); break; case "=": res.push(textal.value); var result=eval(res.join("")); if(result =="Infinity"){ remove_add ("remove"); } textal.value=result==Infinity?"除數(shù)不能為零":result; //console.log(res.join("")); res=[]; break; case "del": //從后往前一個(gè)一個(gè)的減數(shù)字 substr(start,count) substring(start,end) end不取 textal.value = textal.value.length==1 ? "0":textal.value.substr(0,textal.value.length-1); break; case "c": textal.value="0"; res=[]; remove_add("add"); break; } } } } function save(mini){ //清屏之前存儲(chǔ)用戶按的值 // 確認(rèn)一個(gè)條件 用戶是連續(xù)按符號(hào) 還是數(shù)字+符號(hào) if(!label){ //連續(xù)兩次按符號(hào)時(shí) res[res.length-1]=mini.innerHTML ; //第二次按的符號(hào)替代第一次的 } else{ res.push(textal.value ); res.push(mini.innerHTML ); } textal.value="0"; label=false; } //卸載除c以外的所有元素的事件 function remove_add(p){ for(var i=0;i<buttonal.length;i++){ if(p == "add"){ buttonal[i].onclick = addclick; } else{ if(buttonal[i].innerHTML!="c"){ buttonal[i].onclick = null; } } } } </script> </body> </html>
效果圖:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 基于HTML+JS實(shí)現(xiàn)簡(jiǎn)單的年齡計(jì)算器
- 原生JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)版計(jì)算器
- javascript實(shí)現(xiàn)計(jì)算器功能詳解流程
- JavaScript實(shí)現(xiàn)簡(jiǎn)單計(jì)算器小功能
- 原生js實(shí)現(xiàn)簡(jiǎn)易計(jì)算器
- 用javascript實(shí)現(xiàn)簡(jiǎn)單計(jì)算器
- javascript實(shí)現(xiàn)編寫(xiě)網(wǎng)頁(yè)版計(jì)算器
- JavaScript實(shí)例--實(shí)現(xiàn)計(jì)算器
相關(guān)文章
BootStrapTable 單選及取值的實(shí)現(xiàn)方法
學(xué)習(xí)bootstrapTable 一直沒(méi)有找到 單選框的選定的和取值的教程,接下來(lái)通過(guò)本文給大家分享BootStrapTable 單選及取值的實(shí)現(xiàn)方法,非常不錯(cuò),需要的朋友參考下2017-01-01transport.js和jquery沖突問(wèn)題的解決方法
這篇文章主要介紹了transport.js和jquery沖突問(wèn)題的解決方法,需要的朋友可以參考下2015-02-02JavaScript實(shí)現(xiàn)定時(shí)任務(wù)隊(duì)列的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何使用JavaScript實(shí)現(xiàn)一個(gè)基于一定時(shí)間間隔連續(xù)執(zhí)行任務(wù)隊(duì)列的功能,文中的示例代碼講解詳細(xì),需要的小伙伴可以參考下2023-11-11js實(shí)現(xiàn)網(wǎng)頁(yè)倒計(jì)時(shí)、網(wǎng)站已運(yùn)行時(shí)間功能的代碼3例
這篇文章主要介紹了js實(shí)現(xiàn)網(wǎng)頁(yè)倒計(jì)時(shí)、網(wǎng)站已運(yùn)行時(shí)間功能的代碼3例,需要的朋友可以參考下2014-04-04javascript 異步頁(yè)面查詢實(shí)現(xiàn)代碼(asp.net)
異步頁(yè)面查詢,其實(shí)與自動(dòng)完成時(shí)一樣的原理,根據(jù)用戶輸入的關(guān)鍵詞自動(dòng)的與數(shù)據(jù)庫(kù)中的匹配,并顯示出來(lái),提高用戶體驗(yàn),但主要搜索量大的話,增加服務(wù)器開(kāi)銷。2010-05-05一文詳解JavaScript中的replace()函數(shù)
replace方法的語(yǔ)法是stringObj.replace(rgExp, replaceText),其中stringObj是字符串(string),下面這篇文章主要給大家介紹了關(guān)于JavaScript中replace()函數(shù)的相關(guān)資料,需要的朋友可以參考下2023-01-01JS為什么說(shuō)async/await是generator的語(yǔ)法糖詳解
這篇文章主要給大家介紹了關(guān)于JS為什么說(shuō)async/await是generator的語(yǔ)法糖的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用JS具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07