/
maxxon
/
web-static-labs
Обзор
Документация
Войти
/
maxxon
/
web-static-labs
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
html/lab4/task1/script.js
87 строк
3 KB
Dasha_10
изменения
13 окт 2025, 08:23
13 окт 2025, 08:23
f98d6df
Код
Авторство
О чём код?
'use strict'; const $ = (id) => document.getElementById(id); const readNumber = (el) => { const raw = el.value.trim(); // убираем пробелы в конце и начале return raw === '' ? NaN : Number(raw); }; // Функция вычисления результата const calc = (a, op, b, logBase) => { switch (op) { case '+': return a + b; case '-': return a - b; case '*': return a * b; case '/': return b === 0 ? NaN : a / b; case 'sqrt': return Math.sqrt(a); case 'log': return Math.log(a) / Math.log(logBase); default: return NaN; } }; document.addEventListener('DOMContentLoaded', () => { const operatorEl = $('operator'); const operand1El = $('operand1'); const operand2El = $('operand2'); const logBaseEl = $('logBase'); const doCalcEl = $('doCalc'); const resultEl = $('result'); const roundEl = $('round'); operatorEl.addEventListener('change', () => { const selectedOp = operatorEl.value; if (selectedOp === 'sqrt' || selectedOp === 'log') { operand2El.disabled = true; } else { operand2El.disabled = false; } if (selectedOp === 'log') { logBaseEl.style.display = 'inline'; // показать поле для основания логарифма } else { logBaseEl.style.display = 'none'; // скрыть поле } }); doCalcEl.addEventListener('click', () => { const a = readNumber(operand1El); const b = readNumber(operand2El); const op = operatorEl.value; const logBase = readNumber(logBaseEl); if (Number.isNaN(a)) { resultEl.textContent = 'Введите первый операнд'; return; } if ((op === '+' || op === '-' || op === '*' || op === '/') && Number.isNaN(b)) { resultEl.textContent = 'Введите второй операнд'; return; } if (op === '/' && b === 0) { resultEl.textContent = 'Деление на ноль невозможно'; return; } if (op === 'log' && Number.isNaN(logBase)) { resultEl.textContent = 'Введите основание логарифма'; return; } const res = calc(a, op, b, logBase); if (Number.isNaN(res)) { resultEl.textContent = 'Не удалось вычислить'; } else { let resultToDisplay = res; if (roundEl.checked) { resultToDisplay = res.toFixed(3); } resultEl.textContent = resultToDisplay; } }); });