Javascript实现基本运算器

发布时间 - 2026-01-11 02:21:26    点击率:

用Javascript实现一个基本的运算器,具体内容如下

使用表格布局,JS添加事件

<!DOCTYPE html>
<html>
<head lang="en">
 <meta charset="UTF-8">
 <title>计算器</title>
</head>
<style>
 *{
  margin: 0;
  padding: 0;
 }
 table{
  width:400px;
  height: 600px;
  border-collapse: collapse;
  margin: auto;
 }
 .trr{
  width: 400px;
  height: 100px;
 }
 .trr1{
  width: 400px;
  height: 50px;
 }
 .tdd{ width: 100px;
  height: 100px;
  border: 1px solid silver;
  text-align: center;
  line-height: 100px;

 }
 .btn{
  width: 100%;
  height: 100%;
  font-size: 2.5em;
 }
 .btn1{
  width: 100%;
  height: 100%;
  font-size: 2.5em;
 }
 .tdd1{
  width: 100px;
  height: 50px;
 }
 .text{
  height: 100%;
  font-size: 2.5em;
  text-align: right;
 }

</style>
<body>
<table>

 <tr class="trr text1">
  <td class="tdd" colspan="4"><input class="text" type="text" disabled value="0" /></td>
 </tr>

 <tr class="trr1">
  <td class="tdd1" colspan="2"><input class="btn1 btn" type="button" value="c"/></td>
  <td class="tdd1" colspan="2"><input class="btn1 btn" type="button" value="d"/></td>
 </tr>

 <tr class="trr">
  <td class="tdd"><input class="btn" type="button" value="7"/></td>
  <td class="tdd"><input class="btn" type="button" value="8"/></td>
  <td class="tdd"><input class="btn" type="button" value="9"/></td>
  <td class="tdd"><input class="btn" type="button" value="/"/></td>
 </tr>

 <tr class="trr">
  <td class="tdd"><input class="btn" type="button" value="4"/></td>
  <td class="tdd"><input class="btn" type="button" value="5"/></td>
  <td class="tdd"><input class="btn" type="button" value="6"/></td>
  <td class="tdd"><input class="btn" type="button" value="*"/></td>
 </tr>

 <tr class="trr">
  <td class="tdd"><input class="btn" type="button" value="1"/></td>
  <td class="tdd"><input class="btn" type="button" value="2"/></td>
  <td class="tdd"><input class="btn" type="button" value="3"/></td>
  <td class="tdd"><input class="btn" type="button" value="-"/></td>
 </tr>

 <tr class="trr">
  <td class="tdd"><input class="btn" type="button" value="0"/></td>
  <td class="tdd"><input class="btn" type="button" value="."/></td>
  <td class="tdd"><input class="btn" type="button" value="+"/></td>
  <td class="tdd"><input class="btn" type="button" value="="/></td>
 </tr>
</table>
<script>
 var obtn=document.getElementsByClassName("btn");
 var otext=document.getElementsByClassName("text")[0];
 var arr=[];//定义一个数组,向其中存入数字和运算符。

 for(var i=0;i<obtn.length;i++){
  obtn[i].onclick= function () { 
   if(!isNaN(this.value)||this.value=="."){ //this:代表鼠标点击的obtn
     if(otext.value.indexOf(".")==-1){ //消除重复"."的BUG  
      if(otext.value.length==0){ 
      if(this.value!="0"){       //----------------------
       otext.value+=this.value;     //|
      }            //|
      }            //|
      else if(otext.value.length==1&&otext.value=="0"){//|
      otext.value=this.value;      //|
      }            //|
      else if(otext.value.length==1&&otext.value!="0"){//初始状态时,若计算器屏幕为"0",
      otext.value+=this.value;      //实现输入一个非零数字的时候,计算器
      }            //上的数值替换为输入的非零值
      else if(otext.value.length>1){     //|
       otext.value+=this.value;      //|
      }            //--------------------
     }
     else
     {
      if(this.value!="."){ //消除重复"."的BUG
       if(otext.value.length==0){
        if(obtn[i].value!="0"){
        otext.value+=this.value;
       }
       }
       if(otext.value.length>=1){
        otext.value+=this.value;
       }            
      }
     }
   }
   if(this.value=="/"||this.value=="*"||this.value=="+"||this.value=="-"){


    if(otext.value!="0"&&otext.value!=""&&otext.value!="-"){ 
              //消除输入重复运算符的BUG,
     arr[arr.length]=otext.value;  //当输入一个运算符的时候,otext内的value值
     arr[arr.length]=this.value;   //为""(空),所以判断条件为若otext内的value值不为空
     otext.value="";      //则向数字中传值。
    }          //此时出现无法输入负数值运算的BUG


    else if(otext.value==""&&this.value=="-"){ //消除无法输入负数值运算的BUG
     otext.value=this.value;    //当点击运算符后otext的value值为空,
    }           //此时判断若this的值为"-",就替换进去。
    else if(otext.value=="0"&&this.value=="-"){//此时出现无法执行类似"3--3"的双减法运算BUG,
     otext.value=this.value;    //因为eval()无法识别有双减的字符串值。
    }           //若初始时,otext值为"0",并且this的值为
   }            //"-",则用"-"替换otext中的值。



   if(this.value=="="){
    if(otext.value.length>=1){      //--------------------
     var string="";        //|
      if(arr[arr.length-1]=="-"&&otext.value<0){ //→消除无法执行类似"3--3"的双减法运算的BUG
      arr[arr.length-1]="+";     //→当输入负数值的时候,判断arr数组中的
      otext.value=Math.abs(otext.value);  //→末尾值是否为"-",若为"-"则把其改为"+",
      }           //→并且让otext.value值取绝对值。
     arr[arr.length]=otext.value;     //|
     for(var i=0;i<arr.length;i++){    //|
      string+=arr[i];       //|
     }           //|把存入数组中的数字和运算符遍历存储到一个字符串中,
     otext.value=eval(string);     //|直接使用eval()方法就可以识别一个的字符串,执行
     arr=[];          //|该字符串中的运算
    }            //|
   }             //---------------------
   if(this.value=="c"){
    otext.value="0";
    arr=[];
   }
   if(this.value=="d"){
    otext.value=otext.value.substr(0,otext.value.length-1);//每一次删除otext中的末尾值
    if(otext.value==""){         //当把otext中的值删除完后,给
     otext.value="0";         //otext复值"0".
    }
   }
  }
 }
</script>
</body>
</html>

计算器的”c”功能为清屏;”d”功能为删除一个数;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# js  # 运算器  # javascript写的简单的计算器  # 内容很多  # 方法实用  # 推荐  # 简易js代码实现计算器操作  # 用JS写的简单的计算器实现代码  # javascript-简单的计算器实现步骤分解(附图)  # js实现简单计算器  # 网页计算器 一个JS计算器  # js网页版计算器的简单实现  # 纯javascript代码实现计算器功能(三种方法)  # 功能很全的精品JS计算器  # 使用jsp调用javabean实现超简单网页计算器示例  # 运算符  # 值为  # 组中  # 遍历  # 完后  # 具体内容  # 大家多多  # 就可以  # 为空  # 则用  # 鼠标点击  # 若为  # 则把  # 中传  # 无法识别  # 字符串值  # height  # px  # border  # align 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 佛山网站制作系统,佛山企业变更地址网上办理步骤?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  Laravel如何使用Vite进行前端资源打包?(配置示例)  Java垃圾回收器的方法和原理总结  微信h5制作网站有哪些,免费微信H5页面制作工具?  Laravel如何实现用户密码重置功能?(完整流程代码)  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  Android自定义控件实现温度旋转按钮效果  如何快速重置建站主机并恢复默认配置?  Laravel如何使用Sanctum进行API认证?(SPA实战)  油猴 教程,油猴搜脚本为什么会网页无法显示?  网页设计与网站制作内容,怎样注册网站?  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  活动邀请函制作网站有哪些,活动邀请函文案?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  昵图网官网入口 昵图网素材平台官方入口  EditPlus中的正则表达式实战(6)  如何做网站制作流程,*游戏网站怎么搭建?  如何为不同团队 ID 动态生成多个“认领值班”按钮  如何快速查询域名建站关键信息?  魔方云NAT建站如何实现端口转发?  海南网站制作公司有哪些,海口网是哪家的?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制  Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  香港服务器WordPress建站指南:SEO优化与高效部署策略  如何快速登录WAP自助建站平台?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  js实现点击每个li节点,都弹出其文本值及修改  浅谈javascript alert和confirm的美化  高防服务器租用指南:配置选择与快速部署攻略  如何在云主机上快速搭建多站点网站?  轻松掌握MySQL函数中的last_insert_id()  JavaScript Ajax实现异步通信  Android okhttputils现在进度显示实例代码  使用Dockerfile构建java web环境  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  如何在腾讯云服务器上快速搭建个人网站?  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  如何在建站宝盒中设置产品搜索功能?  phpredis提高消息队列的实时性方法(推荐)  如何在IIS服务器上快速部署高效网站?  HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】  微信小程序制作网站有哪些,微信小程序需要做网站吗?  Laravel怎么使用artisan命令缓存配置和视图  Python文件操作最佳实践_稳定性说明【指导】