Я делаю это приложение для калькулятора, все работало нормально, пока я не попытался добавить функцию вычитания в программу, поэтому, например, если я вычисляю 7 + 3, он не возвращает 10, он всегда возвращает последнее набранное число , но это происходит только когда я нажимаю ввод, но когда я нажимаю плюс на клавиатуре, вывод становится правильным, с другой стороны, вычитание работает просто отлично, даже если я нажимаю ввод, см. codepen , который я сделал, чтобы увидеть Проблема, попробуйте добавить любые 2 цифры и нажмите Enter, затем обновите sh страницу и попробуйте добавить любые два числа, затем нажмите плюс на клавиатуре.
Я думаю, что вся проблема остается в этой функции enter (), но IDK в чем проблема, в любом случае вот код:
function enter() {
document.addEventListener("keyup", function(e) {
if (plusBtn) {
if(e.keyCode == "13") {
getTotal()
input.value = input.value.substring(0, input.value.length - input.value.length);
ptag.style.marginLeft = "11%";
ptag.style.color = "#fff";
}
}
if (subBtn) {
if(e.keyCode == "13") {
getSub()
input.value = input.value.substring(0, input.value.length - input.value.length);
ptag.style.marginLeft = "11%";
ptag.style.color = "#fff";
}
}
})
}
enter();
function plusBtn() {
document.addEventListener("keyup", function(e) {
if (/[+]/g.test(e.key)) {
addNclear()
}
})
}
plusBtn();
function subBtn() {
document.addEventListener("keyup", function(e) {
if (/[-]/g.test(e.key)) {
subNclear();
}
})
}
subBtn();
function addNclear() {
getTotal();
input.value = input.value.substring(0, input.value.length - input.value.length);
}
function subNclear() {
getSub();
input.value = input.value.substring(0, input.value.length - input.value.length);
}
var pTotal,
sTotal,
d = 0,
p = 0,
x = 0,
y = 0,
num = input.value,
re1 = new RegExp("0"),
re2 = new RegExp("0");
input.addEventListener("keyup", function() {
re1 = input.value;
re2 = input.value;
});
function getTotal() {
if (re1 % 1 == 0) {
if (pTotal === undefined) {
pTotal = parseInt(re1);
} else {
pTotal += parseInt(re1);
}
ptag.textContent = pTotal;
} else {
d += Math.floor(re1);
p += getValue(re1);
if (p >= 24) {
p -= 24;
++d;
}
if (p < 10) {
pTotal = d + p / 10;
} else {
pTotal = d + p / 100;
}
if (p % 10 === 0) {
// var test = total.toString().padEnd(total.length + 1) + "0";
ptag.textContent = pTotal.toFixed(2);
} else {
ptag.textContent = pTotal;
}
}
}
function getSub() {
if (re2 % 1 == 0) {
if (sTotal === undefined) {
sTotal = parseInt(re2);
} else {
sTotal -= parseInt(re2);
}
ptag.textContent = sTotal;
} else {
x += Math.floor(re2);
y += getValue(re2);
if (y >= 24) {
y -= 24;
--x;
}
if (y < 10) {
sTotal = x - y / 10;
} else {
sTotal = x - y / 100;
}
if (y % 10 === 0) {
// var test = sTotal.toString().padEnd(sTotal.length + 1) + "0";
ptag.textContent = sTotal.toFixed(2);
} else
{
ptag.textContent = sTotal;
}
}
}