计算机

在老师的带领下完成了这个简单的计算器,这是一个神奇的过程,计算器的基本功能都是有的。虽然是个简单的计算器,但对初学者来说,还是需要强大的逻辑判断能力,里面有很多的条件,作为开发者要不断的寻找设计里的bug,不断地完善用户的需求,而这些都需要清晰的逻辑推理和判断。

<!DOCTYPE html>

<html>

<head lang="en">

    <meta charset="UTF-8">

    <title>计算器</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=[];  //定义一个数组存储输入的值

    var label=false;

    for(var i=0;i<buttonal.length;i++){

        buttonal [i].onclick=addclick;

        function addclick(){

            //输入为数字或者为“.”

            if(!isNaN(this.innerHTML) || this.innerHTML=="."){

                //文本框初值不为0

                label = true;

                if(textal.value!== "0"){

                    //文本框中含有“.”

                    if(textal.value.indexOf(".")!==-1){

                        //处理点重复的问题  文本框里面有点 不上去点(用户按的数字 得加  用户按的是点 不加)

                        //输入"."时

                        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;

                  }

                }

            }

            //非数字

            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?"除数不能为零":result;

                            //console.log(res.join(""));

                            res=[];

                            break;

                  case "del":

                            //从后往前一个一个的减数字  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){

        //清屏之前存储用户按的值

      // 确认一个条件  用户是连续按符号  还是数字+符号

        if(!label){  //连续两次按符号时

            res[res.length-1]=mini.innerHTML ;  //第二次按的符号替代第一次的

        }

        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>

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容