用流星制作计算器

Making a calculator in meteor

本文关键字:计算器 流星      更新时间:2023-09-26

我正在自学如何使用HTML/CSS/JavaScript编码。我用的是氮气。io作为我的IDE和使用流星。我试图跟随并使用计算器教程,但我决定最好只是尝试自己制作一个简单的计算器。然而,我不确定如何使按钮相互通信,所以当用户按下"1"+"1"时,它出现为"2"。我会把我的代码下面,如果有人能解释给我,这将是非常感激。非常感谢:)

现在我有按钮显示在网页上,但我不能让它们相互通信。

calculator.html

<template name="calculator">
    <div class="row">
    <div class="col-lg-4 col-lg-offset-4 col-md-4 col-md-offset-4 col-sm-4 col-sm-offset-4 col-xs-4 col-xs-offset-4">
      <div class="row">
        <div class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
          <button id="button1" class="btn {{button1class}} buttonKeypad">1 </button>
        </div>
        <div class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
          <button id="button2" class="btn {{button2class}} buttonKeypad">2</button>
        </div>
        <div class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
          <button id="button3" class="btn {{button3class}} buttonKeypad">3</button>
        </div>
        <div class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
          <button id="buttonPlus" class="btn btn-warning buttonKeypad">+</button>
        </div>
      </div>
      <div class="row">
        <div class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
          <button id="button4" class="btn {{button4class}} buttonKeypad">4</button>
        </div>
        <div class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
          <button id="button5" class="btn {{button5class}} 

等等,直到buttonKeypad 9。

calculator.js

if (Meteor.isClient) {
  Session.set("string", "");
  Session.set("button1class", "btn-default");
  Session.set("button2class", "btn-default");
  Session.set("button3class", "btn-default");
  Session.set("button4class", "btn-default");
  Session.set("button5class", "btn-default");
  Session.set("button6class", "btn-default");
  Session.set("button7class", "btn-default");
  Session.set("button8class", "btn-default");
  Session.set("button9class", "btn-default");
  Session.set("submitclass", "btn-warning");
Template.calculator.helpers( {
   "string" : function () { return Session.get("string")},
"button1class" : function () { return Session.get("button1class")},
"button2class" : function () { return Session.get("button2class")},
"button3class" : function () { return Session.get("button3class")},
"button4class" : function () { return Session.get("button4class")},
"button5class" : function () { return Session.get("button5class")},
"button6class" : function () { return Session.get("button6class")},
"button7class" : function () { return Session.get("button7class")},
"button8class" : function () { return Session.get("button8class")},
"button9class" : function () { return Session.get("button9class")},
});

Template.calculator.events( {
    "click button": function() {
      Session.set("button1class", "btn-default");
      Session.set("button2class", "btn-default");
      Session.set("button3class", "btn-default");
      Session.set("button4class", "btn-default");
      Session.set("button5class", "btn-default");
      Session.set("button6class", "btn-default");
      Session.set("button7class", "btn-default");
      Session.set("button8class", "btn-default");
      Session.set("button9class", "btn-default");
    },
    });

Template.calculator.events( {
  "click #button1" : function() {
  Session.set("button1class", "btn-primary");
  Session.set("string", Session.get("string")+"1");
  },
  "click #button2" : function() {
  Session.set("button2class", "btn-primary");
  Session.set("string", Session.get("string")+"2");
  },
  "click #button3" : function() {
  Session.set("button3class", "btn-primary");
  Session.set("string", Session.get("string")+"3");
  },
  "click #button4" : function() {
  Session.set("button4class", "btn-primary");
  Session.set("string", Session.get("string")+"4");
  },
  "click #button5" : function() {
  Session.set("button5class", "btn-primary");
  Session.set("string", Session.get("string")+"5");
  },
  "click #button6" : function() {
  Session.set("button6class", "btn-primary");
  Session.set("string", Session.get("string")+"6");
  },
  "click #button7" : function() {
  Session.set("button7class", "btn-primary");
  Session.set("string", Session.get("string")+"7");
  },
  "click #button8" : function() {
  Session.set("button8class", "btn-primary");
  Session.set("string", Session.get("string")+"8");
  },
  "click #button9" : function() {
  Session.set("button9class", "btn-primary");
  Session.set("string", Session.get("string")+"9");
  },
  });

首先,你的代码比它需要的复杂得多。你不需要所有这些会话变量来设置计算器按钮的样式,你只需要使用css类。(例如,:hover表示鼠标悬停,:active表示正在点击的按钮)。

如果你的计算器没有括号,生活就很简单了。当用户输入一系列数字时,将它们放入缓冲区并显示在屏幕上。一旦用户接触到操作数(+-*/),那么将缓冲区(例如会话变量)与操作数一起保存。允许用户输入更多的数字。当它们到达=或一个新的操作数时,计算挂起的操作。显示结果