返回顶部
首页 > 资讯 > 前端开发 > JavaScript >利用JS实现加减简易计算器
  • 953
分享到

利用JS实现加减简易计算器

2024-04-02 19:04:59 953人浏览 薄情痞子
摘要

目录前言实现思路前言 这个题目前一周左右在小红书刷到,想着就去就做一下,第一版因为思路不清晰,没有完整的实现功能。后来忙着改论文,就一直拖到现在。想着回去在看看这篇,发现已经找不到

前言

这个题目前一周左右在小红书刷到,想着就去就做一下,第一版因为思路不清晰,没有完整的实现功能。后来忙着改论文,就一直拖到现在。想着回去在看看这篇,发现已经找不到了。

实现思路

记录错误思路:

window.onload = function() {
    //实现一个简易的计算器
    //点击上面的按钮,要输入到输入框中
    btns = document.querySelectorAll('button')
    input = document.querySelector('input')
        //   var f = parseInt(2) + parseInt(8)
        // console.log(f);
    var arr = ''
        //对arr以+或者-为分隔符
    var arr1 = ''
    var arr2 = ''
    var a = ''
    var b = ''
        //判断arr里面是否有+,-来选择是加法还是减法
        //实现加法
    function add(a, b) {
 
        var c = parseInt(a) + parseInt(b)
        return c
 
    }
    // 实现减法
    function jian(a, b) {
        var c = parseInt(a) - parseInt(b)
        return c
    }
    for (i = 0; i < btns.length; i++) {
        btns[i].addEventListener('click', function() {
            var r = this.innerhtml
            arr = arr + r
            input.value = arr
            console.log(arr);
            if (r == '=') {
                var panduan = arr.indexOf('+')
                var puand2 = arr.indexOf('-')
                if (panduan != -1 && puand2 == -1) {
                    arr1 = arr.split('+')
                    arr2 = arr1[1].split('=')
                    a = arr1[0]
                    b = arr2[0]
                    console.log(a)
                    console.log(b)
                    var result = add(a, b)
                    console.log(result);
                    input.value = arr + result
                } else if (panduan == -1 && puand2 != -1) {
                    arr1 = arr.split('-')
                    arr2 = arr1[1].split('=')
                    a = arr1[0]
                    b = arr2[0]
                    console.log(a)
                    console.log(b)
                    var result = jian(a, b)
                    console.log(result);
                    input.value = arr + result
                }
 
            } else if (r == 'C') {
                input.value = ''
            }
 
        })
    }
    //当按下+ = 实现加法   按下- = 实现减法  c 清空
 
    //只能实现两个数的相减或者相加且需要提前把思路想好,再动,而不是想一步实现一步
}

重新整理思路后实现功能:

参考下方代码那么只需要获得输入等号之前的字符串,就可以实现计算功能

方法是先分离出运算数和运算符,然后按照先算乘除后算加减的方式最后得出结果

 const nums = []
let input = '3+20*1/4*2-2'
const operate1 = ['*', '/']
const operate2 = ['+', '-']
const calc1 = (str) => {
    let result = 0
    let n = 0
    for (let i = 0; i < str.length; i++) {
        const element = str[i];
        if (operate1.indexOf(element) != -1 || operate2.indexOf(element) != -1) {
            if (element == '*') {
                result = nums[n] * nums[n + 1]
                input = input.replace(nums[n] + '*' + nums[n + 1], '' + result)
                console.log(nums[n] + '*' + nums[n + 1], result)
                nums.splice(n, 2, result)
                console.log(input, 'input')
 
                n--
            } else if (element == '/') {
                result = nums[n] / nums[n + 1]
                input = input.replace(nums[n] + '/' + nums[n + 1], '' + result)
                console.log(nums[n] + '/' + nums[n + 1], result)
                nums.splice(n, 2, result)
                console.log(input, 'input2')
                n--
            }
            console.log(nums, 'nums')
            n++
        }
    }
    return result
}
const calc2 = (str) => {
    let result = 0
    let n = 0
    for (let i = 0; i < str.length; i++) {
        const element = str[i];
        if (operate1.indexOf(element) != -1 || operate2.indexOf(element) != -1) {
            if (element == '+') {
                result = nums[n] + nums[n + 1]
                input = input.replace(nums[n] + '+' + nums[n + 1], '' + result)
                console.log(nums[n] + '+' + nums[n + 1], result)
                nums.splice(n, 2, result)
                n--
            } else if (element == '-') {
                result = nums[n] - nums[n + 1]
                input = input.replace(nums[n] + '-' + nums[n + 1], '' + result)
                console.log(nums[n] + '-' + nums[n + 1], result)
                nums.splice(n, 2, result)
                n--
            }
            console.log(nums, 'nums2')
            n++
        }
    }
    return result
}
const getNums = (str) => {
    str.replace(/(\d+)\1*/g, (item1, item2) => {
        nums.push(parseFloat(item2))
    })
}
let result = 0
getNums(input)
result = calc1(input)
console.log(result)
result = calc2(input)
console.log(result)

window.onload = function() {
    //实现加减法-清除功能
    //等于之后即运算出结果后,按c或者 数字键就会重新输入或者清零
    //实现多个数的加减法
 
    //1、给每个按钮绑定相应的事件
    var numbers = document.querySelectorAll('.number')
    var ad = document.querySelector('.add')
    var minu = document.querySelector('.minus')
    var equa = document.querySelector('.equa')
    var clr = document.querySelector('.cl')
    var input = document.querySelector('input')
    var str = ''
    var flag = 1
    var b = []
    var btns = document.querySelectorAll('button')
 
    for (i = 0; i < numbers.length; i++) {
        numbers[i].addEventListener('click', fnnumber)
    }
    minu.addEventListener('click', fnminu)
    ad.addEventListener('click', fnadd)
 
    equa.addEventListener('click', fnequa)
    clr.addEventListener('click', fncl)
 
    //实现按下按钮的时候,改变按钮的border颜色,思考的是,那弹起要怎么恢复颜色呢??----通过一个定时器来改变
    for (m = 0; m < btns.length; m++) {
        btns[m].addEventListener('click', function() {
            this.style.borderColor = 'orange'
            var _this = this //改变this的指向
            setTimeout(function() {
                //  console.log(this);//这里面的this指向的是全局的this,window对象,所以如果要使用外层的this,需要改变this的指向
                console.log(_this);
                _this.style.borderColor = ''
            }, [200])
        })
    }
    //2、定义函数
 
 
    function fnnumber() {
        if (flag == 1 || flag == 0) {
            str = str + this.innerHTML
            input.value = str
            flag = 0
        }
 
    }
 
    function fnadd() {
        if (flag == 0) {
            flag = 1
            input.value = str + this.innerHTML
            str = str + this.innerHTML
            b.push(str)
            console.log(b);
            console.log(str);
        }
 
    }
 
    function fnminu() {
        if (flag == 0) {
            flag = 1
            input.value = str + this.innerHTML
            str = str + this.innerHTML
            b.push(str)
            console.log(b);
        }
    }
    var result
    var nums = []
    const operate2 = ['+', '-']
 
    function fnequa() {
        if (flag == 0) {
            flag = 2
            input.value = str + this.innerHTML
            str = str + this.innerHTML
            b.push(str)
            result = b[b.length - 1]
            console.log(b);
            console.log(typeof(result)); // 12+34-23= 此时 还是一个字符串型   怎么把里面的加减等于的数据提取出来  //现在的问题就是要计算这个结果,因为是一个字符串,所以需要先分理处运算数和运算符再进行相应的计算
            let finalresult = 0
            getNums(result)
            finalresult = calc2(result)
            console.log(finalresult)
            input.value = str + finalresult
        }
    }
 
    function fncl() {
        if (flag == 2) {
            input.value = ''
            str = ''
            b = []
            flag = 1
            nums = []
        }
 
    }
    const calc2 = (str) => {
        let finalresult = 0
        let n = 0
        for (let i = 0; i < str.length; i++) {
            const element = str[i];
            if (operate2.indexOf(element) != -1) {
                if (element == '+') {
                    finalresult = nums[n] + nums[n + 1]
                    result = result.replace(nums[n] + '+' + nums[n + 1], '' + finalresult)
                    console.log(nums[n] + '+' + nums[n + 1], finalresult)
                    nums.splice(n, 2, finalresult)
                    n--
                } else if (element == '-') {
                    finalresult = nums[n] - nums[n + 1]
                    result = result.replace(nums[n] + '-' + nums[n + 1], '' + finalresult)
                    console.log(nums[n] + '-' + nums[n + 1], finalresult)
                    nums.splice(n, 2, finalresult)
                    n--
                }
                console.log(nums, 'nums2')
                n++
            }
        }
        return finalresult
    }
    const getNums = (str) => {
        str.replace(/(\d+)\1*/g, (item1, item2) => {
            nums.push(parseFloat(item2))
        })
    }
 
}

HTML代码

<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <meta Http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="comput.CSS" rel="external nofollow" >
    <script src="comput2.js"></script>
 
</head>
 
<body>
    <div class="box">
        <button class="number">1</button>
        <button class="number">2</button>
        <button class="number">3</button>
        <button class="number">4</button>
        <button class="add">+</button>
        <button class="minus">-</button>
        <button class="equa">=</button>
        <button class="cl">C</button>
    </div>
    <input type="text">
</body>
 
</html>

缺点:没有考虑前置加法和前置减法,。一开始只能先输入数字

以上就是利用JS实现加减简易计算器的详细内容,更多关于JS计算器的资料请关注编程网其它相关文章!

--结束END--

本文标题: 利用JS实现加减简易计算器

本文链接: https://lsjlt.com/news/150143.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 利用JS实现加减简易计算器
    目录前言实现思路前言 这个题目前一周左右在小红书刷到,想着就去就做一下,第一版因为思路不清晰,没有完整的实现功能。后来忙着改论文,就一直拖到现在。想着回去在看看这篇,发现已经找不到...
    99+
    2024-04-02
  • 使用JS实现简易计算器
    使用JS完成简易计算器,供大家参考,具体内容如下 要求:输入的值只能是数字,使用正则表达式 onchange():值改变时执行事件 onblur():鼠标移出时执行事件 <...
    99+
    2024-04-02
  • 原生js实现简易计算器
    本文实例为大家分享了js实现简易计算器的具体代码,供大家参考,具体内容如下 最近,博主闲来无聊,就没事用js写了个简易计算器(博主是搞后端的,不是前端>_<)。其实,感觉...
    99+
    2024-04-02
  • JS怎么实现简易计算器
    这篇文章主要介绍了JS怎么实现简易计算器的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JS怎么实现简易计算器文章都会有所收获,下面我们一起来看看吧。 一、题目描述 用户在弹...
    99+
    2024-04-02
  • js实现一个简易的计算器
    利用原生js实现一个简易的计算器(附详细注释),供大家参考,具体内容如下 <!DOCTYPE html> <html lang="en"> <...
    99+
    2024-04-02
  • JavaScript实现简易加法计算器
    本文实例为大家分享了JavaScript实现加法计算器的具体代码,供大家参考,具体内容如下 具体要求: 1.页面布局: 2.还需要在点击计算按钮之后在页面上显示计算结果 具体实现...
    99+
    2024-04-02
  • Java利用栈实现简易计算器功能
    利用栈实现一个简易计算器(Java实现),供大家参考,具体内容如下 一、思路分析 当我们输入一个类似于“7*2+100-5+3-4/2”的简单中缀表达式时,我...
    99+
    2024-04-02
  • java实现简单的加减乘除计算器
    本文实例为大家分享了java实现加减乘除计算器的具体代码,供大家参考,具体内容如下 代码 import java.awt.*; import java.awt.event.*;...
    99+
    2024-04-02
  • js制作简易计算器
    本文实例为大家分享了js制作简易计算器的具体代码,供大家参考,具体内容如下 要制作一个如图所示的简易计算器,首先要建立一个表单,制作出如图所示的样子。 <table bo...
    99+
    2024-04-02
  • Java怎么利用栈实现简易计算器功能
    这篇文章主要介绍了Java怎么利用栈实现简易计算器功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java怎么利用栈实现简易计算器功能文章都会有所收获,下面我们一起来看看吧。一、思路分析当我们输入一个类似于“...
    99+
    2023-06-30
  • js实现简易计数器功能
    本文实例为大家分享了js实现简易计数器功能的具体代码,供大家参考,具体内容如下 实现简易计数器 可进行三个操作,开始计数,暂停计数,复位操作 (使用计时函数事件) <html&...
    99+
    2022-11-13
    js 计数器
  • C#实现简易的计算器
    本文实例为大家分享了C#实现简易的计算器的具体代码,供大家参考,具体内容如下 1 题目描述 (1)Form1窗体设计界面如下: (2)运算类型的下列列表中包括:加法、减法、乘法、除...
    99+
    2024-04-02
  • jQuery实现简易的计算器
    本文实例为大家分享了jQuery实现简易的计算器的具体代码,供大家参考,具体内容如下 布局如下: css代码 #d1{     width: 400px;     height: ...
    99+
    2024-04-02
  • iOS实现简易的计算器
    本文实例为大家分享了iOS实现简易的计算器的具体代码,供大家参考,具体内容如下 初步接触视图,制作了一个简易的计算器,基本上简单的计算是没有问题的,不是很完美,可能还有一些bug,再...
    99+
    2024-04-02
  • C++实现加减乘除计算器
    本文实例为大家分享了C++实现加减乘除计算器的具体代码,供大家参考,具体内容如下 #include <iostream> #include <conio.h>...
    99+
    2024-04-02
  • Android Studio实现简易计算器设计
    本文实例为大家分享了Android Studio实现简易计算器的具体代码,供大家参考,具体内容如下 一、题目 1、如图所示(实际设计,类似此界面样式即可,全屏时,按钮将会纵向拉伸),...
    99+
    2024-04-02
  • 微信小程序实现简易加法计算器
    本文实例为大家分享了微信小程序实现加法计算器的具体代码,供大家参考,具体内容如下 wxml <!--pages/cal/cal.wxml--> <view cla...
    99+
    2024-04-02
  • Android实现简易计算器(可以实现连续计算)
    发一个库存程序,好像是几个礼拜之前写的吧,是一个用安卓实现的简易的计算器,写这个小程序之前,看了很多人写的计算器,觉得使用一个 EditText,并将它设置为不可编写,是比较好...
    99+
    2022-06-06
    Android
  • 基于JavaScript实现简易计算器
    本文实例为大家分享了JavaScript实现简易计算器的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html lang="en"&g...
    99+
    2024-04-02
  • Android实现简易计算器功能
    本项目为大家分享了Android实现计算器功能的具体代码,供大家参考,具体内容如下 项目介绍 练手项目。能实现加减乘除及括号运算。 开发思路 界面布局  1.界面布...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作