用JS写一个计算器

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>JS简单计算器</title></head><style type="text/css">table{    text-align:center;}input#input{    text-align:right;    background:#fff;    border:1px solid #ccc;    width:150px;}input{    width:150px;    height:30px;}#textfield4{    width:300px;}</style><body><table width="80%" border="1" cellpadding="5" cellspacing="0" bordercolor="#ccc">  <tr>    <td colspan="4" align="right">直观显示计算效果:      <input name="textfield1" type="text" id="textfield1" value="0" size="25" maxlength="100" readonly="" />      <span id="fuhao"> </span>      <input name="textfield2" type="text" id="textfield2" size="25" maxlength="100" readonly="" />      <span id="eq"> = </span>      <input name="textfield3" type="text" id="textfield3" size="25" maxlength="100" readonly="" /></td></tr></table><br /><table width="80%" border="1" cellpadding="5" cellspacing="0" bordercolor="#ccc">  <tr>    <td colspan="4" align="right">    一般的计算器显示效果:      <input id="textfield4" type="text" value="0" size="100" maxlength="100"  readonly=""/></td></tr></table><br /><table width="80%" border="1" cellpadding="5" cellspacing="0" bordercolor="#ccc" id="btn_div">    <tr>    <td width="25%" ><input type="button" name="Submit" value="0" id="zero" /></td>    <td width="25%" ><input type="button" name="Submit2" value="1" id="one"/></td>    <td width="25%" ><input type="button" name="Submit3" value="2" id="two" /></td>    <td width="25%" ><input type="button" name="Submit20" value="删除" id="del" /></td>  </tr>  <tr>    <td ><input type="button" name="Submit4" value="3" id="three"/></td>    <td ><input type="button" name="Submit5" value="4" id="four"/></td>    <td ><input type="button" name="Submit6" value="5"id="five" /></td>    <td ><input type="button" name="Submit19" value="重置" id="reset"/></td>  </tr>  <tr>    <td ><input type="button" name="Submit7" value="6" id="six"/></td>    <td ><input type="button" name="Submit8" value="7" id="seven"/></td>    <td ><input type="button" name="Submit9" value="8" id="eight"/></td>    <td ><input type="button" name="Submit18" value="." id="dot" /></td>  </tr>    <tr>    <td ><input type="button" name="Submit10" value="9" id="nine"/></td>    <td ><input type="button" name="Submit11" value="+" id="add"/></td>    <td ><input type="button" name="Submit12" value="-" id="sub"/></td>    <td ><input type="button" name="Submit17" value="绝对值"id="abs" /></td>  </tr>  <tr>    <td ><input type="button" name="Submit13" value="%" id="mod"/></td>    <td ><input name="Submit14" type="button" value="×" id="cheng"/></td>    <td ><input type="button" name="Submit15" value="÷" id="chu"/></td>    <td ><input type="button" name="Submit16" value="=" id="deng"/></td>  </tr></table><p>  <script type="text/javascript">    var EventUtil = {//建新对象         addHandler:function(element,type,func){//添加事件            if(element.addEventListener){                element.addEventListener(type,func,false);            }else if(element.attachEvent){                element.attachEvent("on"+ type,func);            }else{                element["on"+ type] = func;            }              },         getEvent:function(event){//获取Event对象             return event?event:window.event;                  },         getTarget:function(event){//获得事件目标             return event.target || event.srcElement;         },         preventDefault:function(event){//阻止事件的默认行为            if(event.preventDefault){                return event.preventDefault();//非IE            }else{                event.returnValue = false;//IE            }         },         removeHandler:function(element,type,func){//取消事件            if(element.removeEventListener){                element.removeEventListener(type,func,false);            }else if(element.detachEvent){                element.detachEvent("on"+ type,func);            }else{                element["on"+ type] = null;            }         },         stopPropagation:function(event){//取消事件的冒泡             if(event.stopPropagation){                event.stopPropagation();//非IE            }else{                event.cancelBubble = true;//IE            }         }    };    var input4 = document.getElementById("textfield4"),        input1 = document.getElementById("textfield1"),        input2 = document.getElementById("textfield2"),        input3 = document.getElementById("textfield3"),        f_span = document.getElementById("fuhao"),        fuhao = "",//记录算数符号        fuhao1 = "",        str1 = "",        str2 = "",        str3 = "",        str5 ="",        clk = 0,//计算次数        reg1 = /^-?[1-9]\d*\.?\d*$/,//除以0开头的数字的格式        reg2 = /^-?0(?!\d)\.?\d*$/,//以0开头的小数,0后面不能跟数字,(?!\d)表示0后面不跟数字,但是不占位,用[^\d]就不行,它无论如何会匹配一个字符0..123也匹配。        reg3 = /^-?0{2,}/,//0出现2次或者更多        reg4 = /^-$/,//负号重复2次或者更多        str4 = false,//判断计算符号是否被点击        input4_str="";//input4.value;    var clickNum = function(){         var value = this.value;

        if(!str4){//算数符号未点击,此时输入的数字赋值给str1            if(/[0-9]|\./.test(value)){//只允许输入数字和小数点                if(clk == 2){                    str1 = "";//点击=号后如果直接点击数字按钮则清空STR1,str2,重新开始一个新的计算                    str2 = "";                    clk = 0;                }                if(reg1.test(str1+value) || reg2.test(str1 + value)){//判断输入的数字格式                    if(!reg3.test(str1 + value )){//不能连续输入多个0                        str1 += value;//赋值到数值1                        input4.value = str1;                        input1.value = str1;                    }                }            }        }else{//算数符号已点击,此时赋值给str2            if(/[0-9]|\./.test(value)){                if(reg1.test(str2+value) || reg2.test(str2 + value)){//判断输入的数字格式                    if(!reg3.test(str2 + value )){//不能连续输入多个0                        str2 += value;//赋值到数值1                        input4.value = str2;                        input2.value = str2;                    }                }            }        }        if(value == "绝对值"){            if(input4.value != ""){                str5 = input4.value;                str5 = str5 - 0;                str5 = Math.abs(str5);                input4.value = str5;                input3.value = str5;            }        }        if(/[%+×÷-]/.test(value) && str2 == ""){//判断输入的值为算数符号加减乘除时要做的事            if(str1 != "" && str1 !="-"){//str1不为空和不是只有负号的时候                str4 = true;//算数符号已经点击                //clk=1;                fuhao = value;                fuhao1 = fuhao;                f_span.innerHTML = fuhao1;            }else{                if(reg4.test(str1 + value)){//负号不能输入多次                    str1 = value;                    //alert(str1);                    input4.value = str1;//str1允许输入负号一次                    input1.value = str1;                }            }                    }        if(/[%+×÷-]/.test(value) && str2 != ""){//当str2不为空的时候,输入符号就相当于做等号=操作;            if(clk == 0){                //alert(123);                //fuhao1 = value;                str1 = str1 - 0;//转换为数字                str2 = str2 - 0;                switch(fuhao1){//判断输入的符号执行相应的计算                        case "+":                            input4.value = str1+str2;                            input3.value = str1 + str2;                            break;                        case "-":                            input4.value = str1-str2;                            input3.value = str1-str2;                            break;                        case "×":                            input4.value = str1*str2;                            input3.value = str1*str2;                            break;                        case "÷":                            if(str2 == 0){                                 input4.value = "除数不能为0";                                break;                            }else{                                input4.value = str1/str2;                                    input3.value = str1/str2;                                break;                            }                        case "%":                            input4.value = str1%str2;                            input3.value = str1%str2;                            break;                                    }                //str1 = input4.value;//把结果赋值给str1,方便继续计算                //alert(str1);                //input1.value = str1;                str2 = "";//清空str2                input2.value = "";                str4 = false;//设置符号点击初始化                clk = 1;        }        if(clk == 1 || clk == 2){            str1 = input4.value;//再次计算的时候,把结果赋值给str1            input1.value = str1;            str2 = "";            input2.value = str2;            fuhao1 = value;            f_span.innerHTML = fuhao1;            clk = 0;            str4 = true;        }    }        if(value == "="){ //点击等号执行                        if(str1 != "" && str2 !=""){//str1与str2不为空时才执行,否则不执行                str1 = str1 - 0;//转换为数字                str2 = str2 - 0;                switch(fuhao1){//判断输入的符号执行相应的计算                        case "+":                            input4.value = str1+str2;                            input3.value = str1 + str2;                            break;                        case "-":                            input4.value = str1-str2;                            input3.value = str1-str2;                            break;                        case "×":                            input4.value = str1*str2;                            input3.value = str1*str2;                            break;                        case "÷":                            if(str2 == 0){                                 input4.value = "除数不能为0";                                break;                            }else{                                input4.value = str1/str2;                                input3.value = str1/str2;                                break;                            }                        case "%":                            input4.value = str1%str2;                            input3.value = str1%str2;                            break;                        }                }                //str1 = input4.value;//把结果赋值给str1,方便继续计算                //input1.value = str1;                //alert(1);                //str2 = "";//清空str2                str4 = false;//设置符号点击初始化                clk = 2;                //fuhao = "";        }        if(value == "重置"){            str1 = "";            str2 = "";            str4 = false;            fuhao = "";            input4.value = 0;            clk = 0;            input1.value = "";            input2.value = "";            f_span.innerHTML = "";            input3.value = "";        }        if(value == "删除"){            if(str1 == ""){                str4 = false;            }            if(fuhao1 =="" && str1!=""){                //alert(12);                str1 += "";                str1 = str1.substring(0,str1.length-1);                input1.value = str1;                input4.value = str1;            }            if(str2 == "" && fuhao1 != ""){                fuhao1 = "";                f_span.innerHTML = fuhao1;                str4 = false;                //alert(str1);            }            if(input3.value == "" && str2 != ""){                //alert(1);                str2 +="";                str2 = str2.substring(0,str2.length-1);                //alert(str2);                input2.value = str2;                input4.value = str2;                str4 = true;            }            if(input3.value != ""){                input3.value = input3.value.substring(0,input3.value.length-1);                    input4.value = input3.value;                        }        }    }    var box = document.getElementById("btn_div");    var inputArr = box.getElementsByTagName("input");    for(i=0;i<inputArr.length;i++){        EventUtil.addHandler(inputArr[i],"click",clickNum);    }</script></p></body></html>  注:源自百度,仅供参考
时间: 2024-11-08 01:48:48

用JS写一个计算器的相关文章

用JS写一个计算器(兼容手机端)

先看成果:1.PC端2. 首先确立html,有哪些东西我们要知道.布局大概的样子在心里有个数 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"><title>瑞雪的计算器</t

分享:计算机图形学期末作业!!利用WebGL的第三方库three.js写一个简单的网页版“我的世界小游戏”

这几天一直在忙着期末考试,所以一直没有更新我的博客,今天刚把我的期末作业完成了,心情澎湃,所以晚上不管怎么样,我也要写一篇博客纪念一下我上课都没有听,还是通过强大的度娘完成了我的作业的经历.(当然作业不是百度来的,我只是百度了一些示例代码的意思,怎么用!算了,越解释万一越黑呢!哈哈O(∩_∩)O哈哈~) ----------------------------------------------------------------分界线------------------------------

利用面向对象写一个计算器

本文参考了程杰的<大话设计模式>,使用C#语言利用面向对象的模式来写一个计算器. 如果是我本人来写计算器,也就加减乘除的话,估计我会全部写进控制台里面,写4个if语句出来......或者我会利用switch,但是这样的效果都不好,有更好的方法,就是如下所示的代码啦: 先定义一个Operation类,主要实现运算框架: class Operation { public double Number1 { get; set;} public double Number2 { get; set; }

如何写一个计算器

考虑这样一个问题,给定一个字符串,"1+1+(3+4)-2*3+8/2",如何将它转化为如下形式, "1+1=2" "3+4=7" "2+7=9" "2*3=6" "9-6=3" "8/2=4" "3+4=7" 换句话说,就是如何将字符串按照四则运算计算出来,如何写一个计算器.拿java来举例,并且为了简单,我们只考虑个位数.这个过程大概分为这几个

前端用js写一个函数实现KB、MB、GB、TB单位转换

需求:用js写一个函数实现KB.MB.GB.TB单位转换 实现思路: 当函数参数值小于等于1000时,参数除以1000,即可得到最小单位kb,赋值给变量_integer:当_integer值大于1000时,kb值除以1000,即可得到mb,赋值给变量_integer:以此类推. 将单位保存在数组中, 将转换后的值与单位进行拼接即可得到转换后的单位. 代码展示: <!DOCTYPE html> <html lang="en"> <head> <m

HTML+JS 写一个 个人博客

HTML+JS 写一个 个人博客(初学版) HTML+JS 写一个 个人博客(初学版) 自己琢磨了两三天,算是把HTML入门了吧,然后就想着用这点知识写一个个人主页,然后一下午的时间写完了. 先不看代码,说说思路: 第一步:就是构思,一个网页的展示怎么才好看?!!站在一个老男人的角度,那远远是不能的,,, 1.标题 2.菜单栏(加个超链接) 3.展示页面(图片轮播) 第二步:小标题展示页面. 第三步:代码实现.(说了一堆废话)  代码 Jscript实现图片轮播.(很简单,一看就懂) <scri

用VBA写一个计算器

着急的 玩家 可以 跳过“============”部分 ======================================可以跳过的 部分   开始====================================================== 之所以 要有今天这样一篇博客是因为. 之前领导让找几组数据.从excel表格里面. 要求是 主号码 一致,副号码 一致,名称为 XXX 的 项目发生变化的数据 需要被找到. 这样的 项目 有 11个. 我找的真的是眼要花. 变动前

用PHP写一个计算器

本篇文章介绍了使用PHP+HTML+Javascript技术编写一个计算器的方法,希望对各位学习PHP开发的同学有帮助! 用PHP写一个计算器 <body> <?php if (!empty($_POST)) { $op=$_POST['point']; $sum1 = $_POST['sum1']; $sum2 = $_POST['sum2']; $sum = 0; if ($sum1 != '' && is_numeric($sum1) && $sum

今天学习了在一般处理程序中写一个计算器

今天看了看前面的javascript以及学习的jquery,感觉刚开始学习时间就赶得比较紧,练习是做啦,基础的知识都是知道的,但是在写一些小小的程序时间还是陌生,感觉练习的还是很不够的,其实怎么说那,想好好的学习还是把他们使用到项目中练习就会学习的更快些吧,然后我又做啦一个增删改查的一般处理程序,但是还没有总结好,现在就简单的先总结一个小小的计算器使用html和ashx来实现一下其功能,如下所示: 一.html样式 <script> //@Script; </script> <