Калькулятор - прекрасная задача для начинающего программиста. Она помогает понять основы работы с арифметическими и строковыми операциями.
Если Вы ещё не сделали свой калькулятор, то советую закрыть этот пробел вместе с этим уроком.
HTML:
Используется javascript-функции:
eval() - преобразует строку в javascript и выполняет его.
innerHTML - получает и присваивает внутренний HTML текст DOM-элементу (div, span, label и т.д.)
Используются CSS-свойства:
line-height - устанавливает высоту строки для текста. Текст выравнивается по центру этой высоты.
text-align - выравнивает текст по горизонтали (принимает значения: left,right,center)
resize - устанавливает возможно изменение размеров текстового поля (принимает значения: vertical, horizontal,both,none)
Спасибо за внимание.
1 2 3 4 5 | <div id="calc-wrap"> <div id="calc"> <textarea id=inputVal>0</textarea> </div></div> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | <script>// код начнёт выполняться после загрузки страницы// когда окно загрузится, сработает метод window.onLoadwindow.addEventListener('load', function OnWindowLoaded() { // набор кнопок var signs = [ '1', '2', '3', '+', '4', '5', '6', '-', '7', '8', '9', '/', '0', '=', '.', 'c' ]; // форма калькулятора var calc = document.getElementById('calc'); // текстовое поле с математическим выражением var textArea = document.getElementById('inputVal'); // Добавление кнопок к форме калькулятора signs.forEach(function (sign) { var signElement = document.createElement('div'); signElement.className = 'btn'; signElement.innerHTML = sign; calc.appendChild(signElement); }); // проходит по всем кнопкам калькулятора // добавляет обработчик на клик document.querySelectorAll('#calc-wrap .btn').forEach(function (button) { // Добавляем действие, выполняемое при клике на любую кнопку button.addEventListener('click', onButtonClick); }); // функция клика по кнопке калькулятора function onButtonClick(e) { // e - MouseEvent (содержит информацию о клике) if (e.target.innerHTML === 'c') { // Если нажата кнопка "с", то стирает все из текстового поля textArea.innerHTML = '0'; } else if (e.target.innerHTML === '=') { // Если нажата кнопка "=", то, приведя выражение // в текстовом поле к javascript, вычислить значение textArea.innerHTML = eval(textArea.innerHTML); } else if (textArea.innerHTML === '0') { // Если textarea содержит только "0", то // стереть "0" и записать // значения кнопки в текстовое поле textArea.innerHTML = e.target.innerHTML; } else { // Добавление значения кнопки в текстовое поле textArea.innerHTML += e.target.innerHTML; } }});</script> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | <style> .btn { width: 60px; height: 60px; background: #fc0; display: inline-block; text-align: center; line-height: 60px; user-select: none; } .btn:hover { background: #f70; color: #fff; } #calc-wrap { padding: 10px; width: 100%; text-align: center; background: #eee; } #calc { width: 240px; display: inline-block; } #inputVal { width: 100%; border: 0; font-size: 16px; resize: vertical; }</style> |