Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.06.2019, 22:47
Аспирант
Отправить личное сообщение для DarkPhoenix Посмотреть профиль Найти все сообщения от DarkPhoenix
 
Регистрация: 11.05.2019
Сообщений: 30

Условия для калькулятора
window.addEventListener("DOMContentLoaded", function() {
  var calculator = document.querySelector(".calculator"),
      screen = document.querySelector(".screen");
  var methods = {
    firstNumber: 0,
    secondNumber: 0,
    "+": function() {
      return this.firstNumber += this.secondNumber
    },
    "-": function() {
      return this.firstNumber -= this.secondNumber
    },
    "*": function() {
      return this.firstNumber *= this.secondNumber
    },
    "/": function() {
      return this.firstNumber /= this.secondNumber
    },
    out: function(firstNumber) {
      screen.innerHTML = firstNumber
    },
    fix: function(firstNumber) {
      return (this[firstNumber] * 100 | 0) / 100
    },
    cur: 0,
  res: function(firstNumber) {
    if (firstNumber == +firstNumber)
      if (!this.cur) {
        this.firstNumber = +(this.firstNumber + "" + firstNumber);
        this.out(this.fix("firstNumber"));
      }
      else {
        this.secondNumber = +(this.secondNumber + "" + firstNumber);
        this.out(this.fix("firstNumber") + this.cur + this.fix("secondNumber"));
      }
      else if (firstNumber == "c") {
          this.secondNumber = this.firstNumber = this.cur = 0;
          this.out(0);
      }
      else if (this.cur) {
        if (!this.secondNumber && this.cur == "/") {
          this.out("error");
          return
        }
        !this.secondNumber && this.cur != "*" && (this.secondNumber = this.firstNumber);
        this[this.cur]();
        this.out(this.fix("firstNumber"));
        this.secondNumber = 0;
        this.cur = firstNumber == "=" ? 0 : firstNumber
      }
      else if (firstNumber != "=") {
        this.out(this.fix("firstNumber") + firstNumber);
        this.cur = firstNumber
      }
    }
  };
  calculator.addEventListener("click", function(event) {
    var cls = event.target.classList;
      if (cls && cls.contains("button")) {
        val = event.target.value;
        methods.res(val)
      }
    })
});


Нашел на просторах. Оформил html, css. Уж обрадовался что работает! А нет. Если ввести например 8+0, результат 16. А от любого числа отнять 0, будет 0. Где тут ошибка? Зато на 0 делить нельзя.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Условия использования localStorage для двух окон/вкладок одного браузера _Alex9_ Events/DOM/Window 3 05.06.2016 13:45
SEOCRM - бесплатные инструменты для оптимизаторов, интернет-маркетологов и владельце SeoCRM Оффтопик 0 23.05.2016 11:59
Посоветуйте как улучшить код для работы с history api [ jquery + js + history api ] Geo Ваши сайты и скрипты 0 12.01.2014 00:41
Cookie для меню аккордион и для div Lastedl jQuery 1 03.12.2013 04:55
Условия для ajax или слишком умная ссылка tren12 AJAX и COMET 4 15.05.2012 11:05