js代码借助函数eval制作简易计算器

之前我们实现一些简易的计算器功能,是通过判断运算符来实现简单的一元运算,但是eval这个函数可以将包含数字和运算符的字符串进行计算,得出运算结果。

1.先写html+css代码,做出一个计算器样子。

CSS样式代码:

<style>//计算器样式
      table {
        border-collapse: collapse;
        font-size: 20px;
        margin: 50px auto;
      }
      td {
        text-align: center;
        width: 60px;
        height: 40px;
        border: 2px solid #cccccc;
        background-color: rgb(50, 126, 241);
      }
      input {
        border: none;
        outline: none;
        background-color: white;
        height: 30px;
        width: 240px;
      }
      table tr:nth-child(1) {
        height: 40px;
      }
      td:hover {
        opacity: 0.7;
        cursor: pointer;
      }
      tr:nth-child(1) td:hover {
        opacity: 1;
      }
    </style>

HTML代码:

<table>
      <caption>
        傻瓜式计算器
      </caption>
      <tr>
        <td colspan="4"><input type="text" disabled /></td>//第一个tr里面放置input元素,并且禁止写入
      </tr>
      <tr>
        <td colspan="2" class="clear">清空</td>
        <td colspan="2" class="del">退格</td>
      </tr>
      <tr>
        <td>7</td>
        <td>8</td>
        <td>9</td>
        <td>+</td>
      </tr>
      <tr>
        <td>4</td>
        <td>5</td>
        <td>6</td>
        <td>-</td>
      </tr>
      <tr>
        <td>1</td>
        <td>2</td>
        <td>3</td>
        <td>*</td>
      </tr>
      <tr>
        <td>0</td>
        <td>.</td>
        <td class="equal">=</td>
        <td>/</td>
      </tr>
    </table>

这里特意将清空、退格、和等于这几个添加了class类,是因为这几个按键是需要区别对待的,不属于输入数字和运算符的范围。

2.接下来就是script代码,大致思路就是获取td的一个伪数组,然后给每一个添加事件侦听,通过事件侦听来执行相应的代码

1)通过获取点击的td的class的属性值来判断,如果没有class类,e.tatget.getAttribute("class")的值就是undefined,判断为false,此时就是数字,小数点和运算符等被点击

2)获取的e.tatget.getAttribute("class")是"clear"的话,代表清空input,令input.value="";

3)获取的e.tatget.getAttribute("del")是"clear"的话,代表退格input,则将input.value的值从头复制到倒数第二个为止,重新赋给input.value;

4)获取的e.tatget.getAttribute("del")是"equal"的话,代表计算input,将input.value字符串进行计算,返回计算结果给input.value进行显示。

<script>
      var input = document.querySelector("input");//显示框
      var clear = document.querySelector(".clear");//清空
      var del = document.querySelector(".del");//退格
      var equal = document.querySelector(".equal");//等于
      var tds = document.querySelectorAll("td");//获取td元素的伪数组
      init();
      function init() {
        for (var i = 1; i < tds.length; i++) {//这里i从1开始,是因为第一个td不是按键,里面是input元素,因此要剔除
          tds[i].addEventListener("click", clickHandler);//给每个td添加一个事件侦听
        }
      }
      function clickHandler(e) {
        e.stopPropagation();//阻止冒泡
        if (!e.target.getAttribute("class")) {//当不具有class属性的td被点击时
          input.value += this.textContent;//this表示点击的那个td,this.textContext表示td里面的数字或运算符号
        } else if (e.target.getAttribute("class") === "clear") {//当清空键被点击时,让显示框显示为空
          input.value = "";
        } else if (e.target.getAttribute("class") === "del") {//当退格键被点击时,先将显示框里的字符串赋给str,再取str的0-倒数第二位复制,再赋给input.value显示
          var str = input.value;
          input.value = str.slice(0, str.length - 1);
        } else if (e.target.getAttribute("class") === "equal") {//当等于键被点击时,将字符串给eval函数进行计算,结果再赋给input.value进行显示。
          input.value = eval(input.value);
        }
      }
    </script>

原文地址:https://www.cnblogs.com/shenyunfeng123/p/12641601.html

时间: 2024-08-15 08:59:08

js代码借助函数eval制作简易计算器的相关文章

js制作简易计算器(-)

前言:初学js,老师要求做一个简易计算器,目前只实现了能够计算,很多约束没有有做,待完善.仅作为自己的学习记录. <!doctype html> <html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>简易计算器<

制作简易计算器封装类

Calculator.java: /** * @Title:Calculator.java * @Package:com.you.model * @Description:封装计算的数值类 * @author:Youhaidong(游海东) * @date:2014-6-15 下午10:40:34 * @version V1.0 */ package com.you.model; import java.io.Serializable; /** * 类功能说明 * 类修改者 修改日期 * 修改说

制作简易计算器处理结果Servlet

ResultServlet.java: package com.you.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http

Xcode 制作简易计算器

#import "ViewController.h" #import "jsq.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UILabel *label; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; jsqq = [[jsq alloc] init]; //初始

JS的全局函数eval解析JSON字符串函数

JavaScript eval() 函数 定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 语法 eval(string) 参数 描述 string 必需.要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句. 返回值 通过计算 string 得到的值(如果有的话). 说明 该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回.因此请不要为 eval() 函数传递 String

用VS制作简易计算器(WPF)

在VS中实现简易计算器的制作,最终实现计算器如下图所示: 窗口代码如下: <Window x:Class="我的简易计算器.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schema

C# Windows form制作简易计算器

在经过一段时间的C#学习后,试着做了一个计算器的小工程. 计算器的界面如上图,包含基本的+.-.*./运算以及1/x运算和清零功能.代码如下: 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using

制作简易计算器处理过程Servlet

CalculationServlet.java: package com.you.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet

C#Windows Form简易计算器实现(上)

第一次写博客,来分享一个简易计算器的代码.作为一名准程序员,就是要多写代码才能孰能生巧.重视基础知识才能飞的更快更高以及更稳. 代码可能会写的很糟糕,不完美不安全之处希望发现的越多越好 c#编写计算器带窗口的,对于新手来说是如何建立窗体以及实现按钮的响应事件吧!那么,首先来探索下窗口是怎么实现的吧! 步骤1:新建项目→C#windows窗体应用程序→新建解决方案 此时你会发现有两个名称,一个是解决方案名称,一个是项目名称.对于小程序来说其实没什么区别.但对于大点的程序最好就要区别开了.解决方案就