亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JS實現可針對算術表達式求值的計算器功能示例

2019-11-19 13:03:15
字體:
來源:轉載
供稿:網友

本文實例講述了JS實現可針對算術表達式求值的計算器功能。分享給大家供大家參考,具體如下:

HTML部分:

<div> <div id="in">  <input name="in" type="text"  class="clsin" id="input" value="" readonly="readonly" />  <input type="button" name="=" value="=" onClick="exp_result()"/> </div> <div id="num"> <input type="button" name="seven" value="7" onClick="test(this);"/> <input type="button" name="8" value="8" onClick="test(this);"/> <input type="button" name="9" value="9" onClick="test(this)"/> <input type="button" name="/" value="/" onClick="test(this)"/> <!--span id="showValue"></span--> <br /> <input type="button" name="4" value="4" onClick="test(this)"/> <input type="button" name="5" value="5" onClick="test(this)" /> <input type="button" name="6" value="6" onClick="test(this)"/>  <input type="button" name="*" value="*" onClick="test(this)"/> <br /> <input type="button" name="1" value="1" onClick="test(this);"/> <input type="button" name="2" value="2" onClick="test(this);"/> <input type="button" name="3" value="3" onClick="test(this);"/>  <input type="button" name="-" value="-" onClick="test(this);"/> <br /> <input type="button" name="0" value="0"   onClick="test(this);"/> <input type="button" name="+/-" value="("  onClick="test(this);"/> <input type="button" name="." value=")"   onClick="test(this);"/> <input type="button" name="+" value="+"   onClick="test(this);"/> </div></div>

CSS部分:

/* CSS Document */body{ /*  padding-right:40%;   padding-left:40%;*/   text-align:center;}div{  background-color:orange;  height:300px;  width:300px;  margin-left:auto;  margin-right:auto;  margin-bottom:auto;  margin-top:50px;  border-style: groove;  border-color: Green;/*  margin-top:auto;*/}#in{    position:relative;    margin-left:20px;    margin-top:10px;    height:27px;    width:260px;    background:red;    top:40px  }.clsin  {    height:27px;    width:200px;    background-color:#FFF;  }#num{    position:relative;    margin-left:20px;    margin-top:45px;    height:150px;    width:250px;    background-color:green;    text-align:left;  }#num input  {    margin-right:10px;    margin-top:10px;    width:35px;  }

js部分:

str_exp=""; //存放表達式function test(obj)   //數字 運算符 btn  click{    str_exp+=obj.value;    document.getElementById("input").value=str_exp;}function compare( ch1, ch2)         //比較運算符ch1和ch2優先級{  array1=new Array('+','-','*','/','(',')','@');  array20=new Array('>','>','<','<','<','>', '>');  array21=new Array( '>','>','<','<','<','>','>');  array22=new Array( '>','>','>','>','<','>','>');  array23=new Array('>','>','>','>','<','>','>');  array24=new Array('<','<','<','<','<','=',' ');  array25=new Array('>','>','>','>',' ','>','>');  array26=new Array( '<','<','<','<','<',' ','=');  array2=new Array(array20,array21,array22,array23,array24,array25,array26);//  b[7][7]={'>','>','<','<','<','>','>',  // +//        '>','>','<','<','<','>','>',   // -//        '>','>','>','>','<','>','>',   // *//        '>','>','>','>','<','>','>',   // ///        '<','<','<','<','<','=',' ',   // (//         '>','>','>','>',' ','>','>',  // )//         '<','<','<','<','<',' ','=' }; // @  for(var i=0;ch1!=array1[i];i++);  for(var j=0;ch2!=array1[j];j++);  return array2[i][j];}function operate(a,preop,b)  //計算a?b的值{ // var num1=parseInt(a,10); // var num2=parseInt(b,10);  var num1=parseFloat(a);  var num2=parseFloat(b);//  alert("a:"+num1+preop+"b:"+num2);  switch(preop)  {  case'+':return(num1+num2);break;  case'-':return(num1-num2);break;  case'*':return(num1*num2);break;  case'/':return(num1/num2);break;//  default: cout<<"erro"<<endl;return 0;  }}function isNum( ch)                //判斷讀取ch是否為操作數{  if(ch=='+'||ch=='-'||ch=='*'||ch=='/'||ch=='('||ch==')'||ch=='@')    return 0;  else    return 1;}function extend(str)    //將開始一定情況下‘-'轉換為'(0-1)*',從而支持負數{   var str1=new Array();   if(str.charAt(0)=='-')   {     str1+="(0-1)*";   }   else   {    str1+=str.charAt(0);   }   for(var i=1;i<str.length;i++)   {     if(str.charAt(i)=='-'&&str.charAt(i-1)=='(')     {      str1+="(0-1)*";     }     else     str1+=str.charAt(i);   }   return str1;}function divided(str)  //分離表達式中操作數與操作符存放到返回值中{ var str2=extend(str);// alert(str2); var str_temp=new Array(); var j=0; var expTemp; var expPre; for(var i=0;i<str2.length;i++) {  // alert(str2.charAt(i));   expTemp="";   expTemp=str2.charAt(i);   if(i==0)   str_temp[0]=expTemp;   if(i>0)   {   expPre=str2.charAt(i-1); ///////////////////////!!   if(isNum(expTemp)&&isNum(expPre))  //判斷前后連續取到的是否都是數字字符,是則拼接   {    str_temp[j-1]+=expTemp;    j--;   }    else    {     str_temp[j]=expTemp;    }   }   j++; } return str_temp;}function exp_result(){  str_exp=str_exp+'@';  str=divided(str_exp);  numArray=new Array();  //存放操作數  symbolArray =new Array();//存放操作符  symbolArray.push('@'); //  numArray.push('@');// alert(str.length);  for(var i=0;str[i]!='@'||symbolArray[symbolArray.length-1]!='@';i++)  {//    alert(str[i]);//    alert(symbolArray[symbolArray.length-1]);    if(isNum(str[i]))    { //     alert("Num push:"+str[i]);     numArray.push(str[i]);    }    else    { //    alert("symbol:"+str[i]);    preop=symbolArray[symbolArray.length-1];  //取棧頂元素    switch(compare(preop,str[i]))    {      case'<':symbolArray.push(str[i]);break;      case'=':symbolArray.pop();break;      case'>':b=numArray.pop();a=numArray.pop();preop=symbolArray.pop(); //取兩操作數與之前操作符運算          numArray.push(operate(a,preop,b)); //計算結果入棧         // str.push(str[i]); //當前操作符入棧          i--;   //繼續與之前的操作符比較          break;    }    }  }  if(isNaN(numArray[0]))  {   alert("算術表達式輸入有誤!!");  }  else  alert("結果為:"+numArray[0]);  str_exp="";  document.getElementById("input").value=str_exp;}

運行效果如下圖所示:

感興趣的朋友可以使用在線HTML/CSS/JavaScript前端代碼調試運行工具http://tools.VeVB.COm/code/WebCodeRun測試上述代碼運行效果。

PS:這里再為大家推薦幾款計算工具供大家進一步參考借鑒:

在線一元函數(方程)求解計算工具:
http://tools.VeVB.COm/jisuanqi/equ_jisuanqi

科學計算器在線使用_高級計算器在線計算:
http://tools.VeVB.COm/jisuanqi/jsqkexue

在線計算器_標準計算器:
http://tools.VeVB.COm/jisuanqi/jsq

更多關于JavaScript相關內容還可查看本站專題:《JavaScript數學運算用法總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript數組操作技巧總結》、《JavaScript事件相關操作與技巧大全》、《JavaScript操作DOM技巧總結》及《JavaScript字符與字符串操作技巧總結

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久亚洲国产成人| 中文字幕在线亚洲| 日韩精品中文在线观看| 91精品国产91久久久久久久久| 成人a级免费视频| 久久人91精品久久久久久不卡| 26uuu国产精品视频| 亚洲美女久久久| 久热精品视频在线观看一区| 亚洲伊人一本大道中文字幕| 66m—66摸成人免费视频| 九九综合九九综合| 日韩中文字在线| 亚洲专区在线视频| 久久青草福利网站| 日本19禁啪啪免费观看www| 国产精品私拍pans大尺度在线| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲欧美日韩一区二区三区在线| 亚洲福利视频二区| 亚洲男女自偷自拍图片另类| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美精品aaa| 狠狠色香婷婷久久亚洲精品| 欧美小视频在线| 精品国产一区av| 琪琪亚洲精品午夜在线| 成人精品久久久| 国产一区二区动漫| 91在线精品视频| 欧美成人小视频| 91探花福利精品国产自产在线| 伊人精品在线观看| 国产成人精品久久二区二区91| 久久精品成人欧美大片| 久久久最新网址| 欧美日韩午夜视频在线观看| 久久99精品久久久久久琪琪| 亚洲精品国产综合久久| 欧洲成人在线视频| 精品动漫一区二区三区| 美女啪啪无遮挡免费久久网站| 久久激情视频免费观看| 久久婷婷国产麻豆91天堂| 国产女精品视频网站免费| 国产精品久久久久久av福利软件| 久久国产一区二区三区| 国产在线视频不卡| 国产精品欧美日韩一区二区| 欧美精品videos| 亚洲精品国产精品乱码不99按摩| 久久亚洲影音av资源网| 精品国模在线视频| 日本一区二区不卡| 亚洲free性xxxx护士hd| 正在播放亚洲1区| 欧美成人高清视频| 亚洲美女性视频| 一二美女精品欧洲| 欧美大片网站在线观看| 欧美孕妇与黑人孕交| 亚洲一区美女视频在线观看免费| 8050国产精品久久久久久| 国产精品福利在线| 久久成年人免费电影| 久久综合久久88| 亚洲自拍偷拍区| 欧美影院成年免费版| 日韩成人黄色av| 国模精品视频一区二区三区| 久久国产精品99国产精| 久久久国产精品亚洲一区| 亚洲永久在线观看| 亚洲a∨日韩av高清在线观看| 日韩大片免费观看视频播放| 日韩中文在线中文网在线观看| 亚洲男人天堂网站| 成人性生交xxxxx网站| 亚洲天堂久久av| 久久久久国产精品www| 国产亚洲欧美视频| 国产色婷婷国产综合在线理论片a| 国产一区二区三区在线观看网站| 日韩中文字幕免费视频| 国产午夜精品视频免费不卡69堂| 国产精品第七十二页| 欧美日韩裸体免费视频| 九九九热精品免费视频观看网站| 永久免费看mv网站入口亚洲| 国产在线视频91| 久久久精品亚洲| 久久中文字幕在线视频| 国产成人一区二区三区| 在线观看成人黄色| 国产成人免费91av在线| 2019中文字幕全在线观看| 日韩欧亚中文在线| 91人成网站www| 欧美丰满片xxx777| 国产精品日日做人人爱| 美女视频黄免费的亚洲男人天堂| 亚洲无亚洲人成网站77777| 久久久久久噜噜噜久久久精品| 黄网站色欧美视频| 亚洲成人激情视频| 激情成人中文字幕| 日韩av电影在线播放| 国产精品男人爽免费视频1| 日韩激情av在线播放| 亚洲欧美国产精品专区久久| 日韩av中文字幕在线免费观看| 欧美一区二粉嫩精品国产一线天| 成人在线激情视频| 色综合久综合久久综合久鬼88| 国产在线视频2019最新视频| 国产精品男女猛烈高潮激情| 亚洲人成啪啪网站| 亚洲日韩欧美视频一区| 欧美在线观看网站| 亚洲国产中文字幕久久网| 亚洲国产成人久久综合一区| 国产精品视频99| 亚洲乱亚洲乱妇无码| 热久久美女精品天天吊色| 色老头一区二区三区| 中国日韩欧美久久久久久久久| 日韩中文字幕在线观看| 亚洲综合在线播放| 51视频国产精品一区二区| 精品网站999www| 国产精品久久久久久久久久东京| 欧美成人在线免费视频| 亚洲国产精品女人久久久| 久久九九免费视频| 国产精品成人观看视频国产奇米| 日韩久久精品成人| 欧美性理论片在线观看片免费| 国产精品伦子伦免费视频| 欧美猛交ⅹxxx乱大交视频| 久久久久久久久亚洲| 亚洲天堂成人在线| 亚洲在线视频福利| 国产精品天天狠天天看| 国模极品一区二区三区| 精品高清一区二区三区| 亚洲国产精品人人爽夜夜爽| 国产精品白嫩美女在线观看| 91国产美女在线观看| 亚洲精品资源美女情侣酒店| 91在线免费网站| 成人中心免费视频| 俺去了亚洲欧美日韩| 国产精品一区二区三区免费视频| 国产精品国语对白| 午夜精品三级视频福利| 亚洲加勒比久久88色综合| 久久成人在线视频| 欧美电影在线播放| www.欧美精品一二三区| 精品久久久久久国产91| 久久视频这里只有精品| 国产精品视频白浆免费视频| 亚洲成人1234| 久久精品中文字幕|