用js实现简单计算器方法

用js实现简单计算器方法

<style>
  .div1 {
    width: 208px;
    height: 308px;
    margin: auto;
    border: 2px solid #000000;
    font-size: 0;
  }
  .div2 {
    width: 208px;
    height: 100px;
    font-size: 20px;
  }
  .div1 span {
    display: inline-block;
    width: 50px;
    height: 50px;
    font-size: 20px;
    line-height: 50px;
    text-align: center;
    border: 1px solid #cccccc;
  }
</style>

<div class="div1">
  <div class="div2"></div>
  <span>7</span>
  <span>8</span>
  <span>9</span>
  <span>+</span>
  <span>4</span>
  <span>5</span>
  <span>6</span>
  <span>-</span>
  <span>1</span>
  <span>2</span>
  <span>3</span>
  <span>*</span>
  <span>0</span>
  <span>c</span>
  <span>=</span>
  <span>/</span>
</div>
<script>
  // 写一个计算器  0,1,2,3,4,5,6,7,8,9,+,-,*,/,C,=
  // 执行初始化函数
  init();
  // 创建初始化函数
  function init() {
    //   根据选择器获取标签中找到的.div1
    var div1 = document.querySelector(".div1");
        // 根据选择器获取页面中的所有span
    var spans = document.querySelectorAll("span");
    // 利用for循环给每个span添加点击事件
    for (i = 0; i < spans.length; i++) {
      spans[i].addEventListener("click", clickHandler);
    }
  }
//   创建点击事件要执行的函数
  function clickHandler(e) {
    //   根据选择器获取要找的元素.div2
    var div2 = document.querySelector(".div2");
    if (e.target.textContent) {
        // 如果被点击元素是c时
      if (e.target.textContent === "c") {
        //   则设置div2中的所有内容清空
        div2.textContent = null;
        // 如果被点击元素是=时
      } else if (e.target.textContent === "=") {
        //   则把内容转换为字符串
        var obj = String(div2.textContent);
        // 打印字符串
        console.log(obj)
        if (obj) {
            // 查找字符串中有没有+
          if (obj.indexOf("+")!==-1) {
            //   console.log(obj.split("+")[1])
            // 如果有则把+号两边转换为数值计算两边想加的结果
            div2.textContent =
              (Number(obj.split("+")[0]) + Number(obj.split("+")[1]));
          }
        //   查找字符串中有没有-
          if (obj.indexOf("-")!==-1) {
            console.log(obj.split("-")[1])
            // console.log(obj.split("-")[1]);
            // 如果有则把-两边转换为数值计算两边相减的直
            div2.textContent =
            (Number(obj.split("-")[0]) - Number(obj.split("-")[1]));
          }
        //   查找字符中有没有*
          if (obj.indexOf("*")!==-1) {
            console.log(obj.split("*")[1]);
            // 如果有则计把*两边转换为数值计算两边相乘的结果
             div2.textContent =
             (Number(obj.split("*")[0]) * Number(obj.split("*")[1]));
          }
        //   查找字符串中有没有/
          if (obj.indexOf("/")!==-1) {
            console.log(obj.split("/")[1]);
            // 如果有则把/两边转换为数值计算两边相除的结果
            div2.textContent =
            (Number(obj.split("/")[0]) / Number(obj.split("/")[1]));
          }
        }
      } else {
        //   把每次点击的内容添加在div2中
        div2.textContent += e.target.textContent;
      }
    }
  }
</script>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值