【实践】js实现简易的四则运算计算器

最近看了一个大神推荐的某公司面试程序员的js 面试题,题目是用js 做一个计算器于是跟着大神的思想自己做了一下

ps:功能还没有完善好毕竟自己还是一只菜鸟还在不断学习中。

闲话不多说先上css代码

<style type="text/css">
     *{
         padding: 0px;
         margin: 0px;
         border: 0px;
     }
     .wrapper{
         border: 5px solid #000;
         width: 300px;
         height: 400px;
         margin: 0 auto;
     }
     #screen,#result{
         width: 100%;
         height: 80px;
        border:1px solid red;
    }
    .allbtn input{
       display: inline-block;
       float: left;
       width: 75px;
       height: 47px;
       border: 1px solid #ccc;
    }
    #zeroWidth{
        width: 150px;
    }
    </style>

html代码:

这里我用了input标签把每一个计算器按键都做成了按钮,当按下按钮的时候获取按钮的value值从而运行计算

id为 screen的div 是显示整个表达式的容器

id 为result 的div 是显示最后结果的容器

id为 allbtn的div 下面包裹着所有的运算符以及数字按钮

<body>
    <div class="wrapper">
      <div id="screen"></div>
      <div id="result"></div>
      <div id="allbtn" class="allbtn">
            <input type="button" name="AC" id="clearall" value="AC">
            <input type="button" id="clear" name="clear" value="C">
            <input type="button" name="yushu" value="%">
            <input type="button" class ="calc" name="chu" value="/">
            <input type="button" class="num" name="seven" value="7">
            <input type="button" class="num" name="eight" value="8">
            <input type="button" class="num" name="nine" value="9">
            <input type="button" class="calc" name="chu" name="cheng" value="*">
            <input type="button" class="num" name="four" value="4">
            <input type="button" class="num" name="five" value="5">
            <input type="button" class="num" name="six" value="6">
            <input type="button" class="calc" name="chu" name="reduce" value="-">
            <input type="button" class="num" name="one" value="1">
            <input type="button" class="num" name="two" value="2">
            <input type="button" class="num" name="three" value="3">
            <input type="button" class="calc" name="chu" name="sum" value="+">
            <input class="num" id="zeroWidth" type="button" name="zero" value="0">
            <input type="button" class="num" name="point" value=".">
            <input type="button" id="finish" name="equal" value="=">
      </div>
    </div>

下面是js 代码

js 代码最核心的部分就是四则运算了

<script type="text/javascript">
      window.onload = function(){
        var saveResult = new Array();//建立运算结果的数组
        var show = "";//显示屏显示的表达式
        var number = "";//定义一个临时变量 用来储存每一个整数
        var screen = document.getElementById(‘screen‘);//获取负责显示表达式的div
        var resultScreen = document.getElementById(‘result‘);//获取负责显示结果的div
          var allbtn = document.getElementById(‘allbtn‘);//获取按钮的外包裹层
          var input = allbtn.getElementsByTagName(‘input‘);//获取所有按钮
          var finish = document.getElementById(‘finish‘);//获取 "=" 按钮
          var clear = document.getElementById(‘clear‘);//获取清除按钮
          var clearall = document.getElementById(‘clearall‘);//获取 "AC" 按钮
          var numArray = new Array();//储存数字数组
          var calcArray = new Array();//储存运算符数组
        var a = 0;//循环初始化变量
        var b = 0;//循环初始化变量
        var flag = false;//判断是否按过等于符号

        //获取所有数字按钮
        for (var i = 0; i < input.length; i++) {
            if(input[i].className == "num"){
                numArray.push(input[i]);
            }
        }
        console.log(numArray);

        //获取所有操作符按钮
        for (var j = 0; j < input.length; j++) {
            if(input[j].className == "calc"){
                calcArray.push(input[j]);
            }
        }
        console.log(calcArray);
        //--------------------------------------准备工作完成--------------------------------------
        //
        //
        //
        //
        //--------------------------------------以下是操作部分------------------------------------------

        //数字键点击事件
        for (var x = 0; x < numArray.length; x++) {
            numArray[x].onclick = function(){
                if (flag == true) {
                    saveResult.splice(0,saveResult.length);
                    number = "";
                    show = "";
                    flag = false;
                }
                var value = this.getAttribute("value");
                show += value;
                screen.innerHTML = show;
                number += value;
                console.log("点击数字的时候x的值为:" + number);

            }

        }

        //运算符点击事件
        for (var y = 0; y < calcArray.length; y++) {
            calcArray[y].onclick = function(){
                var value = this.getAttribute("value");
                show += value;
                screen.innerHTML = show;
                saveResult.push(number);
                //运算符一点击x变量里面的值就会存进去数组里面
                //这样确保数字能够保持完整性
                saveResult.push(value);
                number = "";//然后清空变量number 下次再次存入数字
                console.log(saveResult);
            }
        }

        //等于符号点击事件
        finish.onclick = function(){
           saveResult.push(number);
           number = "";
           while(a < saveResult.length){

                 if(saveResult[a] == "*"){
                      var result = parseFloat(saveResult[a - 1]) * parseFloat(saveResult[a + 1]);
                      saveResult.splice(a-1,3,result);
                      a = 0;
                 }else if(saveResult[a] == "/"){
                      var result = parseFloat(saveResult[a - 1]) / parseFloat(saveResult[a + 1]);
                      saveResult.splice(a-1,3,result);
                      a = 0;
                 }
              a++;

           }

           while(b < saveResult.length){

                 if(saveResult[b] == "+"){
                      var result = parseFloat(saveResult[b - 1]) + parseFloat(saveResult[b + 1]);
                      saveResult.splice(b-1,3,result);
                      b = 0;
                 }else if(saveResult[b] == "-"){
                      var result = parseFloat(saveResult[b - 1]) - parseFloat(saveResult[b + 1]);
                      saveResult.splice(b-1,3,result);
                      b = 0;
                 }
              b++;

           }
           resultScreen.innerHTML = saveResult;
           flag = true;
           console.log("最终数组输出" + saveResult);

      }

      //AC 按钮点击事件
      clearall.onclick = function(){
          saveResult.splice(0,saveResult.length);
        number = "";
        show = "";
        screen.innerHTML = "";
      }
    }

    </script>

这里说说四则元算:

本次实现四则元素的核心是使用数组,那怎么实现呢?遍历

我这里用了while 循环当然用for 也是可以的 核心的思想是 我先遍历一次数组 如果遍历到有元素是 * 或者 / 那么我就把它所在位置的前一个元素和后一个元素执行乘或除运算(前一个元素和后一个元素要用parseFloat转型方便日后有小数点运算)然后再用splice方法,把这三个元素替换成运算后的结果,然后自增变量 a重新赋值为0,再重新执行一次遍历如此类推直到没有了 * 或 / 号

之后再执行第二次遍历,方法也是如此最后把数组saveResult输出到 结果div 中

时间: 2024-12-25 07:06:04

【实践】js实现简易的四则运算计算器的相关文章

使用html+css+js实现简易计算器

使用html+css+js实现简易计算器, 效果图如下: html代码如下: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6

深入浅出数据结构C语言版(8)——后缀表达式、栈与四则运算计算器

在深入浅出数据结构(7)的末尾,我们提到了栈可以用于实现计算器,并且我们给出了存储表达式的数据结构(结构体及该结构体组成的数组),如下: //SIZE用于多个场合,如栈的大小.表达式数组的大小 #define SIZE 1000 //表达式的单个元素所使用的结构体 typedef struct elem { int num = 0; //若元素存储操作数则num为该操作数 char oper = '='; //若元素存储操作符则oper为该操作符 bool IsNum = false; //用于

JS实现一个简单的计算器

使用JS完成一个简单的计算器功能.实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除.效果如上: 第一步: 创建构建运算函数count(). 第二步: 获取两个输入框中的值和获取选择框的值. 提示:document.getElementById( id名 ).value 获取或设置 id名的值. 第三步: 获取通过下拉框来选择的值来改变加减乘除的运算法则. 提示:使用switch判断运算法则. 第四步:  通过 = 按钮来调用创建的函数,得到结果. 注意: 使用parseInt

十进制四则运算计算器代码,输入为字符串

转发个严蔚敏老师的<数据结构及应用算法教程>里的十进制四则运算计算器代码,实习生笔试遇到过不会写,特此做个记录. ************************** 文件:calculator.c ************************** #define NonEmpty 0#define PLUS -1 // '+'#define MINUS -2 // '-'#define ASTERISK -3 // '*' #define SLANT -4 // '/'#define M

【Android开发-4】进入实践,最喜欢折腾的计算器

前言:前面对项目文件有了感性认识,接下来我们就需要通过不断实践,对项目的文件有理性的认识.以前折腾Unity3d.IOS开发都是拿计算器开刀,所以这次Android开发实践也不例外,继续拿计算器折腾.通过本人总结,你通过折腾计算器,可以学习掌握到对文本.按钮.输入框控件的事件监听触发和一些控件读写操作,编程语言可以接触到字符串的分割.拼接.查找等方法使用,还有if-else,switch控制语句的使用:总之通过操作一款简单的计算器,可以基本熟悉该开发环境下的流程和编程语言的使用. 首先展示下折腾

使用node.js制作简易爬虫

最近看了些node.js方面的知识,就像拿它来做些什么.因为自己喜欢摄影,经常上蜂鸟网,所以寻思了一下,干脆做个简单的爬虫来扒论坛的帖子. 直接上代码吧. 1 var sys = require("sys"), 2 http = require("http"), 3 fs = require("fs"); 4 var url = "http://newbbs.fengniao.com/forum/forum_125.html"

html+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-

使用JS完成一个简单的计算器功能

使用JS完成一个简单的计算器功能.实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除. 提示:获取元素的值设置和获取方法为:例:赋值:document.getElementById("id").value = 1: 取值:var = document.getElementById("id").value: 任务 第一步: 创建构建运算函数count(). 第二步: 获取两个输入框中的值和获取选择框的值. 提示:document.getElement

原生JS实现简易轮播图

原生JS实现简易轮播图(渐变?) 最近做网页总是会用到轮播图,我就把之前写的轮播图单独拿出来吧,如果有...如果真的有人也需要也可以复制去用用啊..哈~.. window.onload = function() { var tab = 0; var loop_imgs = new Array("img/l1.jpg", "img/l2.jpg", "img/l3.jpg", "img/l4.jpg", "img/l5