Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.1k views
in Technique[技术] by (71.8m points)

switch statement - Javascript returning NaN when multiplying

I am trying to create a simple calculator and when I try to multiply i get NaN. Even if it's just a simple 2 * 3. Can somebody point out what I am doing wrong? There's is also no error in the console so I dont know why it's not multiplying properly. Any help is appreciated! Thank you in advance!

Edit** I added how I got first_set for all the operators.

Here is my code:

plus.addEventListener("click", function(){
    show.value += "+";
    operator = "+";

    first_set = show.value.slice(0,-1);
})
minus.addEventListener("click", function(){
    show.value += "-";
    operator = "-";

    first_set = show.value.slice(0,-1);
})
multi.addEventListener("click", function(){
    show.value += "*";
    operator = "*";

    first_set = show.value.slice(0,-1);
})
divide.addEventListener("click", function(){
    show.value += "/";
    operator = "/";

    first_set = show.value.slice(0,-1);
})
exp.addEventListener("click", function(){
    show.value += "^";
    operator = "^";

    first_set = show.value.slice(0,-1);
})

equals.addEventListener("click", function(){

    let a, b, answer;

    switch (operator){
        case "+":
            second_set = show.value.substring(show.value.indexOf("+"));
            a = parseFloat(first_set);
            b = parseFloat(second_set);
            answer = a + b;
            show.value = answer;
            break;
        case "-":
            second_set = show.value.substring(show.value.indexOf("-"));
            a = parseFloat(first_set);
            b = parseFloat(second_set);
            answer = a - b;
            show.value = answer;
            break;
        case "*":
            second_set = show.value.substring(show.value.indexOf("*"));
            a = parseFloat(first_set);
            b = parseFloat(second_set);
            answer = a*b;
            show.value = answer;
            break;
        case "/":
            second_set = show.value.substring(show.value.indexOf("/"));
            a = parseFloat(first_set);
            b = parseFloat(second_set);
            answer = a / b;
            show.value = answer;
            break; 
        case "^":
            second_set = show.value.substring(show.value.indexOf("^"));
            a = parseFloat(first_set);
            b = parseFloat(second_set);
            answer = Math.pow(a,b)
            show.value = answer;
            break; 
        default:
            show.value ="Error!";
    }
})```

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
等待大神答复

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...