дополнение не работает в калькуляторе javascript, который я делаю - PullRequest
1 голос
/ 05 февраля 2020

Я делаю это приложение для калькулятора, все работало нормально, пока я не попытался добавить функцию вычитания в программу, поэтому, например, если я вычисляю 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;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...