Javascript.RU

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

Журнайл действий
Калькулятор имеет “журнал действий ”, в котором записываются все выполненные операции.
Калькулятор я осилил. Интернет, щепотка знаний, и немного везения.
Но тут ласт пункт. Не указано ни кол-во. записей, ничего. Думаю достаточно 1.
Вот сам кальк.
var keys = document.querySelectorAll('#calculator span');
var operators = ['+', '-', 'x', '÷'];
var decimalAdded = false;


for(var i = 0; i < keys.length; i++) {
  keys[i].onclick = function(e) {
    var input = document.querySelector('.screen');
    var inputVal = input.innerHTML;
    var btnVal = this.innerHTML;
    
    if(btnVal == 'C') {
      input.innerHTML = '';
      decimalAdded = false;
    }
    else if(btnVal == '=') {
      var equation = inputVal;
      var lastChar = equation[equation.length - 1];     
      equation = equation.replace(/x/g, '*').replace(/÷/g, '/');
      if(operators.indexOf(lastChar) > -1 || lastChar == '.')
        equation = equation.replace(/.$/, '');
      
      if(equation)
        input.innerHTML = eval(equation);
      decimalAdded = false;
    }
    else if(operators.indexOf(btnVal) > -1) {
      var lastChar = inputVal[inputVal.length - 1];
      if(inputVal != '' && operators.indexOf(lastChar) == -1) 
        input.innerHTML += btnVal;
      else if(inputVal == '' && btnVal == '-') 
        input.innerHTML += btnVal;
      if(operators.indexOf(lastChar) > -1 && inputVal.length > 1) {
        input.innerHTML = inputVal.replace(/.$/, btnVal);
      }
      decimalAdded =false;
    }
    else if(btnVal == '.') {
      if(!decimalAdded) {
        input.innerHTML += btnVal;
        decimalAdded = true;
      }
    }
    else {
      input.innerHTML += btnVal;
    }
    e.preventDefault();
  } 
}

<DOCTYPE! html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Calculator</title>
    <link rel="stylesheet" href="my.css">
  </head>
  <body>
   <div id="calculator">
	<div class="top">
		<span class="clear">C</span>
		<div class="screen"></div>
	</div>	
	<div class="keys">
		<span>7</span>
		<span>8</span>
		<span>9</span>
		<span class="operator">+</span>
		<span>4</span>
		<span>5</span>
		<span>6</span>
		<span class="operator">-</span>
		<span>1</span>
		<span>2</span>
		<span>3</span>
		<span class="operator">÷</span>
		<span>0</span>
		<span class="eval">=</span>
		<span class="operator">x</span>
	</div>
	</div>
  <script src="my.js"></script>
  </body>
</html>



Есть и CSS, но он вроде как не нужен тут.
Помогите кто знает как сделать этот журнал.
Спасибо всем кто ответит!
Ответить с цитированием
  #2 (permalink)  
Старый 13.06.2019, 17:28
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Смотрите строки 32 и 58
<DOCTYPE! html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Calculator</title>
    <link rel="stylesheet" href="my.css">
  </head>
  <body>
   <div id="calculator">
	<div class="top">
		<span class="clear">C</span>
		<div class="screen"></div>
	</div>	
	<div class="keys">
		<span>7</span>
		<span>8</span>
		<span>9</span>
		<span class="operator">+</span>
		<span>4</span>
		<span>5</span>
		<span>6</span>
		<span class="operator">-</span>
		<span>1</span>
		<span>2</span>
		<span>3</span>
		<span class="operator">÷</span>
		<span>0</span>
		<span class="eval">=</span>
		<span class="operator">x</span>
	</div>
	</div>
     <div id = "prot"></div>
  <script>
var keys = document.querySelectorAll('#calculator span');
var operators = ['+', '-', 'x', '÷'];
var decimalAdded = false;


for(var i = 0; i < keys.length; i++) {
  keys[i].onclick = function(e) {
    var input = document.querySelector('.screen');
    var inputVal = input.innerHTML;
    var btnVal = this.innerHTML;
    
    if(btnVal == 'C') {
      input.innerHTML = '';
      decimalAdded = false;
    }
    else if(btnVal == '=') {
      var equation = inputVal;
      var lastChar = equation[equation.length - 1];     
      equation = equation.replace(/x/g, '*').replace(/÷/g, '/');
      if(operators.indexOf(lastChar) > -1 || lastChar == '.')
        equation = equation.replace(/.$/, '');
      
      if(equation)
        input.innerHTML = eval(equation);
      document.querySelector("#prot").innerHTML += equation + "=" + input.innerHTML + "<br>";
      decimalAdded = false;
    }
    else if(operators.indexOf(btnVal) > -1) {
      var lastChar = inputVal[inputVal.length - 1];
      if(inputVal != '' && operators.indexOf(lastChar) == -1) 
        input.innerHTML += btnVal;
      else if(inputVal == '' && btnVal == '-') 
        input.innerHTML += btnVal;
      if(operators.indexOf(lastChar) > -1 && inputVal.length > 1) {
        input.innerHTML = inputVal.replace(/.$/, btnVal);
      }
      decimalAdded =false;
    }
    else if(btnVal == '.') {
      if(!decimalAdded) {
        input.innerHTML += btnVal;
        decimalAdded = true;
      }
    }
    else {
      input.innerHTML += btnVal;
    }
    e.preventDefault();
  } 
}
  </script>
  </body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 13.06.2019, 21:19
Аспирант
Отправить личное сообщение для DarkPhoenix Посмотреть профиль Найти все сообщения от DarkPhoenix
 
Регистрация: 11.05.2019
Сообщений: 30

Спасибо!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Высчитать сколько произошло действий за определённый участок времени SaM1001 Общие вопросы Javascript 6 15.05.2017 15:32
включение стандартных действий поля input fuegoalma Общие вопросы Javascript 1 31.08.2014 19:07
try/catch асинхронных действий Родзевич Олег AJAX и COMET 10 27.01.2012 12:52
Обработать несоклько действий DorianLeroy jQuery 2 31.08.2011 17:17
Объясните пожалуйста порядок действий lukingnu AJAX и COMET 9 26.03.2011 10:35