Калькулятор - прекрасная задача для начинающего программиста. Она помогает понять основы работы с арифметическими и строковыми операциями.
Если Вы ещё не сделали свой калькулятор, то советую закрыть этот пробел вместе с этим уроком.
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.onLoad window.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> |