/
maxxon
/
web-static-labs
Обзор
Документация
Войти
/
maxxon
/
web-static-labs
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
html/lab5/task5/script.js
131 строка
4 KB
Dasha_10
изменения
27 окт 2025, 07:57
27 окт 2025, 07:57
f3e9b7b
Код
Авторство
О чём код?
document.addEventListener('DOMContentLoaded', () => { const display = document.getElementById('display'); let current = '0'; let prev = null; let operator = null; let resetDisplay = false; function updateDisplay() { display.textContent = current; } function inputDigit(digit) { if (resetDisplay || current === '0') { current = digit; resetDisplay = false; } else { current += digit; } updateDisplay(); } function inputDot() { if (resetDisplay) { current = '0.'; resetDisplay = false; } else if (!current.includes('.')) { current += '.'; } updateDisplay(); } function clearAll() { current = '0'; prev = null; operator = null; resetDisplay = false; updateDisplay(); } function handleOperator(nextOperator) { if (operator && !resetDisplay) { calculate(); } else { prev = parseFloat(current); } operator = nextOperator; resetDisplay = true; } function sqrt() { let num = parseFloat(current); if (num < 0) { current = 'Ошибка'; } else { current = String(Math.sqrt(num)); } resetDisplay = true; updateDisplay(); } function log() { let num = parseFloat(current); if (num <= 0) { current = 'Ошибка'; } else { current = String(Math.log10(num)); } resetDisplay = true; updateDisplay(); } function pow() { prev = parseFloat(current); operator = 'pow'; resetDisplay = true; } function calculate() { let result; const curr = parseFloat(current); if (operator === 'pow') { result = Math.pow(prev, curr); } else { switch (operator) { case '+': result = prev + curr; break; case '−': result = prev - curr; break; case '×': result = prev * curr; break; case '÷': if (curr === 0) { current = 'Ошибка'; updateDisplay(); operator = null; prev = null; resetDisplay = true; return; } result = prev / curr; break; default: return; } } current = String(result); operator = null; prev = null; resetDisplay = true; updateDisplay(); } document.querySelector('.buttons').addEventListener('click', (e) => { if (!e.target.matches('button')) return; if (e.target.classList.contains('number')) { inputDigit(e.target.textContent); } else if (e.target.classList.contains('dot')) { inputDot(); } else if (e.target.classList.contains('operator')) { handleOperator(e.target.textContent); } else if (e.target.classList.contains('equal')) { calculate(); } else if (e.target.classList.contains('clear')) { clearAll(); } else if (e.target.classList.contains('sqrt')) { sqrt(); } else if (e.target.classList.contains('log')) { log(); } else if (e.target.classList.contains('pow')) { pow(); } }); updateDisplay(); });