最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Something Wrong With The Calculator - Stack Overflow

programmeradmin7浏览0评论

i'm coding a calculator by using html, css and javascript. majority of my buttons work except when i push a number, then push add, divide, minus or times, then try and push a number, the numbers do not want to work. im not to sure where i am going wrong. here is my javascript code

it has something to do with my input code i believe as the codes was working before the bit of the code was change around

function equivalentCheck() { //This allows the last value to remain in view until other buttons are pressed
    if(parseInt(document.getElementById('equivalent').value)){
        document.getElementById('equivalent') = 0;
        document.getElementById('result').value = 0;
    }
}

function input(x) {
    equivalentCheck();

    let y = parseFloat(document.getElementById('result').value);
    if(document.getElementById('decimalVar').value == 0) {
        x += y * 10; //Multiply the text input and add the value of x.

        document.getElementById('result').value = x; //Return x to the text output
    } 
    else {//If decimal is true
        let decimalCount = parseInt(document.getElementById('decimalVar').value);

        if(decimalCount == 1) {
            x *= 1/10; //We are using math to place the decimal point.
            y += x;
            document.getElementById('result').value = y;
        }
        else {
            document.getElementById('result').value += x;
        }

        decimalCount++;

        document.getElementById('decimalVar').value = decimalCount;

    }
}

function decimalPoint() {
    if(document.getElementById('decimalVar').value == 0){//This Prevents Multiple Decimal
        document.getElementById('decimalVar').value = 1;
    }
    if (parseInt(document.getElementById('operation').value)) {//If This Is An Empty String,It Wil Return False  
        document.getElementById('result').value = 0;
    }
}

function operandCheck() {
    if(document.getElementById('operand').value == ""){
        
        document.getElementById('operand').value = document.getElementById('result').value;
        document.getElementById('equivalent').value = 1;
    } else {
        operatorCheck();
    }
}

    function operatorCheck() {
        let a = parseFloat(document.getElementById('operand').value);
        let b = parseFloat(document.getElementById('result').value);

        switch (parseInt(document.getElementById('operation').value)) {
            case 1: //addition
                a += b;
                break;

            case 2: //subraction
                a -= b;
                break;

            case 3: //multiplcation
                a *= b;
                break;

            case 4: //division
                a /= b;
        }


        document.getElementById('operand').value = a;
        document.getElementById('result').value = a;
        document.getElementById('equivalent').value = 1;

    }

function operators(x) {
    switch(x) {
        case 1:
            document.getElementById('operation').value = 1;//Addition
            break;
        case 2:
            document.getElementById('operation').value = 2;//Subtraction
            break;
        case 3:
            document.getElementById('operation').value = 3; //Multiplcation
            break;
        case 4:
            document.getElementById('operation').value = 4; //Division
            break;
        default:
    }

    operandCheck();
}

function equals() {
    operators(parseInt(document.getElementById('operation').value));
    document.getElementById('result').value = document.getElementById('operand').value;
    document.getElementById('operand').value ="";
    document.getElementById('equivalent').value = 1;
}

function allClear(){
    document.getElementById('result').value = 0;
    document.getElementById('operand').value = "";
    document.getElementById('operation').value = 0;
    document.getElementById('equivalent').value = 0;
}

function plusminus(){
    let x = parseFloat(document.getElementById('result').value);
    x *= -1;
    document.getElementById('result').value = x;
}

function percent() {
    let x = parseFloat(document.getElementById('result').value);
    x *= 0.01;
    document.getElementById('result').value = x;
}

function square() {
    let x = parseFloat(document.getElementById('result').value);
    x *= x;
    document.getElementById('result').value = x;
}

i'm coding a calculator by using html, css and javascript. majority of my buttons work except when i push a number, then push add, divide, minus or times, then try and push a number, the numbers do not want to work. im not to sure where i am going wrong. here is my javascript code

it has something to do with my input code i believe as the codes was working before the bit of the code was change around

function equivalentCheck() { //This allows the last value to remain in view until other buttons are pressed
    if(parseInt(document.getElementById('equivalent').value)){
        document.getElementById('equivalent') = 0;
        document.getElementById('result').value = 0;
    }
}

function input(x) {
    equivalentCheck();

    let y = parseFloat(document.getElementById('result').value);
    if(document.getElementById('decimalVar').value == 0) {
        x += y * 10; //Multiply the text input and add the value of x.

        document.getElementById('result').value = x; //Return x to the text output
    } 
    else {//If decimal is true
        let decimalCount = parseInt(document.getElementById('decimalVar').value);

        if(decimalCount == 1) {
            x *= 1/10; //We are using math to place the decimal point.
            y += x;
            document.getElementById('result').value = y;
        }
        else {
            document.getElementById('result').value += x;
        }

        decimalCount++;

        document.getElementById('decimalVar').value = decimalCount;

    }
}

function decimalPoint() {
    if(document.getElementById('decimalVar').value == 0){//This Prevents Multiple Decimal
        document.getElementById('decimalVar').value = 1;
    }
    if (parseInt(document.getElementById('operation').value)) {//If This Is An Empty String,It Wil Return False  
        document.getElementById('result').value = 0;
    }
}

function operandCheck() {
    if(document.getElementById('operand').value == ""){
        
        document.getElementById('operand').value = document.getElementById('result').value;
        document.getElementById('equivalent').value = 1;
    } else {
        operatorCheck();
    }
}

    function operatorCheck() {
        let a = parseFloat(document.getElementById('operand').value);
        let b = parseFloat(document.getElementById('result').value);

        switch (parseInt(document.getElementById('operation').value)) {
            case 1: //addition
                a += b;
                break;

            case 2: //subraction
                a -= b;
                break;

            case 3: //multiplcation
                a *= b;
                break;

            case 4: //division
                a /= b;
        }


        document.getElementById('operand').value = a;
        document.getElementById('result').value = a;
        document.getElementById('equivalent').value = 1;

    }

function operators(x) {
    switch(x) {
        case 1:
            document.getElementById('operation').value = 1;//Addition
            break;
        case 2:
            document.getElementById('operation').value = 2;//Subtraction
            break;
        case 3:
            document.getElementById('operation').value = 3; //Multiplcation
            break;
        case 4:
            document.getElementById('operation').value = 4; //Division
            break;
        default:
    }

    operandCheck();
}

function equals() {
    operators(parseInt(document.getElementById('operation').value));
    document.getElementById('result').value = document.getElementById('operand').value;
    document.getElementById('operand').value ="";
    document.getElementById('equivalent').value = 1;
}

function allClear(){
    document.getElementById('result').value = 0;
    document.getElementById('operand').value = "";
    document.getElementById('operation').value = 0;
    document.getElementById('equivalent').value = 0;
}

function plusminus(){
    let x = parseFloat(document.getElementById('result').value);
    x *= -1;
    document.getElementById('result').value = x;
}

function percent() {
    let x = parseFloat(document.getElementById('result').value);
    x *= 0.01;
    document.getElementById('result').value = x;
}

function square() {
    let x = parseFloat(document.getElementById('result').value);
    x *= x;
    document.getElementById('result').value = x;
}
Share Improve this question asked Mar 20 at 21:01 V. M. EntV. M. Ent 91 bronze badge 4
  • 2 Welcome to SO! Please edit your question to include a minimal reproducible example, including the relevant html. – mykaf Commented Mar 20 at 21:05
  • 2 "the numbers do not want to work": what does that mean? – trincot Commented Mar 20 at 21:22
  • Consider using valueAsNumber instead of value? – evolutionxbox Commented Mar 20 at 21:32
  • 1 Showing your JavaScript code is not enough. You need at least HTML, and a minimum of CSS. – Mister Jojo Commented Mar 20 at 22:23
Add a comment  | 

1 Answer 1

Reset to default 0

I think the problem is with your equivalentCheck function. You are assigning 0 to equivalent rather than assigning 0 to the value of equivalent, change like this:

function equivalentCheck() { 
 if(parseInt(document.getElementById('equivalent').value)){ 
    document.getElementById('equivalent').value = 0;
    document.getElementById('result').value = 0;
 }
}
发布评论

评论列表(0)

  1. 暂无评论