Сделал мини аналог самого просто калькулятора, и проблема в кнопке "."(demicial)
, а точнее в ее функции нажатия demicialPress()
, дело в том что там есть кусок кода
if (MemoryNewNumber) {
localMemoryCurrentNumber = '0.';
MemoryNewNumber = false;
}
и вот когда я нажимаю эту кнопку она работает, хотя MemoryNewNumber
по умолчанию false
, те кто знает почему так, не могли бы вы мне объяснить в чем дело.
window.onload = function() {
var numbers = document.querySelectorAll('.btn-number'),
operations = document.querySelectorAll('.btn-operation'),
clears = document.querySelectorAll('.btn-clear'),
display = document.getElementById('display'),
decimal = document.getElementById('btn-decimal'),
MemoryCurrentNumber = 0,
MemoryNewNumber = false,
MemoryPandingOperation = '';
function searchCurrentElem(variable, funName) {
for (var i = 0; i < variable.length; i++) {
var CurrentElem = variable[i];
CurrentElem.addEventListener('click', function(e) {
funName(e.target.textContent);
});
};
};
searchCurrentElem(numbers, numberPress);
searchCurrentElem(clears, clearPress);
searchCurrentElem(operations, operationPress);
decimal.addEventListener('click', decimalPress);
function decimalPress(cell) {
var localDecimalMemory = display.value;
if (MemoryNewNumber) {
localDecimalMemory = '0.';
MemoryNewNumber = false;
} else {
if (localDecimalMemory.indexOf('.') === -1) {
localDecimalMemory += '.';
};
display.value = localDecimalMemory;
};
};
function numberPress(symbol) {
if (MemoryNewNumber) {
display.value = symbol;
MemoryNewNumber = false;
} else {
if (display.value === '0') {
display.value = symbol;
} else {
display.value += symbol;
};
};
};
function operationPress(op) {
var localOperationMemory = display.value;
if (MemoryNewNumber && MemoryPandingOperation !== '=') {
display.value = MemoryCurrentNumber;
} else {
MemoryNewNumber = true;
if (MemoryPandingOperation === '+') {
MemoryCurrentNumber += parseFloat(localOperationMemory);
} else if (MemoryPandingOperation === '-') {
MemoryCurrentNumber -= parseFloat(localOperationMemory);
} else if (MemoryPandingOperation === '/') {
MemoryCurrentNumber /= parseFloat(localOperationMemory);
} else if (MemoryPandingOperation === '*') {
MemoryCurrentNumber *= parseFloat(localOperationMemory);
} else {
MemoryCurrentNumber = parseFloat(localOperationMemory);
};
display.value = MemoryCurrentNumber;
MemoryPandingOperation = op;
};
};
function clearPress(btnClear) {
if (btnClear == 'ce') {
display.value = '0';
} else if (btnClear == 'c') {
display.value = '0';
MemoryCurrentNumber = 0;
MemoryPandingOperation = '';
};
};
};
#calc {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 500px;
height: 700px;
background-color: pink;
border-radius: 20px;
padding: 20px;
display: grid;
grid-template-rows: 0.7fr 1fr;
grid-row-gap: 20px;
}
#display {
width: 100%;
height: 100%;
border: none;
outline: none;
background-color: white;
color: black;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
font-size: 70px;
display: flex;
text-align: right;
padding-left: 20px;
padding-right: 20px;
}
#calc_display {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
#calc__clock-face {
display: inherit;
grid-template-columns: 1fr 1fr 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr 1fr 1fr;
grid-column-gap: 5px;
grid-row-gap: 5px;
}
.calc__btn {
border: none;
outline: none;
background-color: #fff;
color: #000;
font-size: 25px;
font-weight: 500;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
text-transform: uppercase;
transition: 0.3s;
}
.btn-operation:hover {
background-color: skyblue;
}
.btn-clear:hover {
background-color: goldenrod;
}
.btn-number:hover {
background-color: darkgrey;
}
#btn-decimal:hover {
background-color: greenyellow;
}
.calc__btn:nth-of-type(10) {
grid-row-start: 5;
grid-row-end: 6;
grid-column-start: 1;
grid-column-end: 3;
border-bottom-left-radius: 10px;
}
.calc__btn:nth-of-type(11) {
grid-row-start: 1;
grid-row-end: 2;
grid-column-start: 1;
grid-column-end: 2;
}
.calc__btn:nth-of-type(12) {
grid-row-start: 1;
grid-row-end: 2;
grid-column-start: 2;
grid-column-end: 3;
}
.calc__btn:nth-of-type(13) {
grid-row-start: 1;
grid-row-end: 2;
grid-column-start: 4;
grid-column-end: 5;
}
.calc__btn:nth-of-type(14) {
grid-row-start: 1;
grid-row-end: 2;
grid-column-start: 3;
grid-column-end: 4;
}
.calc__btn:nth-of-type(15) {
grid-row-start: 2;
grid-row-end: 3;
grid-column-start: 4;
grid-column-end: 5;
}
.calc__btn:nth-of-type(16) {
grid-row-start: 3;
grid-row-end: 4;
grid-column-start: 4;
grid-column-end: 5;
}
.calc__btn:nth-of-type(17) {
grid-row-start: 4;
grid-row-end: 6;
grid-column-start: 4;
grid-column-end: 5;
border-bottom-right-radius: 10px;
}
.calc__btn:nth-of-type(17):hover {
background-color: red;
}
<div id="calc">
<div id="calc_display">
<input id="display" type="text" name="display" placeholder="0000000000" disabled value="0">
</div>
<div id="calc__clock-face">
<button class="calc__btn btn-number">1</button>
<button class="calc__btn btn btn-number">2</button>
<button class="calc__btn btn-number">3</button>
<button class="calc__btn btn-number">4</button>
<button class="calc__btn btn-number">5</button>
<button class="calc__btn btn-number">6</button>
<button class="calc__btn btn-number">7</button>
<button class="calc__btn btn-number">8</button>
<button class="calc__btn btn-number">9</button>
<button class="calc__btn btn-number">0</button>
<button class="calc__btn btn-clear" id="ce">ce</button>
<button class="calc__btn btn-clear" id="c">c</button>
<button class="calc__btn btn-operation">*</button>
<button class="calc__btn btn-operation">/</button>
<button class="calc__btn btn-operation">+</button>
<button class="calc__btn btn-operation">-</button>
<button class="calc__btn btn-operation">=</button>
<button class="calc__btn" id="btn-decimal">.</button>
</div>
</div>
Также прилагаю ссылку на CodePen С готовым cacl https://codepen.io/Kraken_boon/pen/jvWxBZ
Вы же в else
добавляете точку к текущему значению, если ее там нет.
} else {
if (localDecimalMemory.indexOf('.') === -1) {
localDecimalMemory += '.';
};
display.value = localDecimalMemory;
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Сутьформа,сначала выпадающий список(юр лица,физ лица)в зависимости от выбора, ниже появляются соответствующие выбору поля(физ
Вопрос, как передать значение свойства потомкам? В качестве примера, мне нужно чтобы все потомки сохранили контекст, однако это не сводится...
Проблема - нужно удалить комментарий с текущим ID по клику на DeleteНе могу связать ID комментария и функцию удаления