简体   繁体   English

JS表格计算器

[英]JS form calculator

i made this simple calculator as my very first project in JS.我做了这个简单的计算器作为我在 JS 中的第一个项目。 I was at one course, where they told me, that programmers are 'lazy' so they are trying to write as less code as possible.我在一门课程上,他们告诉我,程序员很“懒惰”,所以他们试图编写尽可能少的代码。 And there is comes my question.我的问题来了。 I think that my calculator is really long on code.我认为我的计算器的代码真的很长。 I would like to know, if there is any way to acomplish this with less code.我想知道,是否有任何方法可以用更少的代码来完成。 Thank you for your time and have a good day:)谢谢你的时间,祝你有美好的一天:)

function result() {
    var amount = parseInt(document.getElementById("number").value);
    var size = document.getElementById("velikost").value;
    var color = document.getElementById("barva").value;
    var price;
    
    if(amount <= 19) {
        if((size == 1) && (color == 1)) {
            price = 2.5
        }
        else if ((size == 1) && (color == 2)) {
            price = 3
        }
        else if ((size == 1) && (color == 3)) {
            price = 9.9
        }
        else if ((size == 1) && (color == 4)) {
            price = 10.9
        }
        else if ((size == 2) && (color == 1)) {
            price = 3.9
        }
        else if ((size == 2) && (color == 2)) {
            price = 4.5
        }
        else if ((size == 2) && (color == 3)) {
            price = 28.9
        }
        else if ((size == 2) && (color == 4)) {
            price = 29.9
        } }
    else if((amount > 19) &&(amount <= 49)) {
        if((size == 1) && (color ==1)) {
            price = 1.6
        }
        else if((size == 1) && (color ==2)) {
            price = 2.2
        }
        else if((size == 1) && (color ==3)) {
            price = 8.9
        }
        else if((size == 1) && (color ==4)) {
            price = 9.9
        }
        else if((size == 2) && (color ==1)) {
            price = 3.3
        }
        else if((size == 2) && (color ==2)) {
            price = 4.1
        }
        else if((size == 2) && (color ==3)) {
            price = 17.9
        }
        else if((size == 2) && (color ==4)) {
            price = 19.9
        }
    }
    else if((amount > 49) &&(amount <=99)){
        if((size == 1) && (color ==1)) {
            price = 1.4
        }
        if((size == 1) && (color ==2)) {
            price = 2
        }
        if((size == 1) && (color ==3)) {
            price = 6.9
        }
        if((size == 1) && (color ==4)) {
            price = 8.9
        }
        if((size == 2) && (color ==1)) {
            price = 3
        }
        if((size == 2) && (color ==2)) {
            price = 3.8
        }
        if((size == 2) && (color ==3)) {
            price = 12.9
        }
        if((size == 2) && (color ==4)) {
            price = 15.9
        }
    }
    else if ((amount > 99) && (amount <= 499)) {
        if((size == 1) && (color ==1)) {
            price = 1.2
        }
        if((size == 1) && (color ==2)) {
            price = 1.8
        }
        if((size == 1) && (color ==3)) {
            price = 4.9
        }
        if((size == 1) && (color ==4)) {
            price = 6.9
        }
        if((size == 2) && (color ==1)) {
            price = 2.6
        }
        if((size == 2) && (color ==2)) {
            price = 3.4
        }
        if((size == 2) && (color ==3)) {
            price = 9.9
        }
        if((size == 2) && (color ==4)) {
            price = 12.9
        }
    }
    else if ((amount > 499) && (amount <= 999)) {
        if((size == 1) && (color ==1)) {
            price = 1.1
        }
        if((size == 1) && (color ==2)) {
            price = 1.6
        }
        if((size == 1) && (color ==3)) {
            price = 3.9
        }
        if((size == 1) && (color ==4)) {
            price = 4.9
        }
        if((size == 2) && (color ==1)) {
            price = 2.4
        }
        if((size == 2) && (color ==2)) {
            price = 3.2
        }
        if((size == 2) && (color ==3)) {
            price = 6.9
        }
        if((size == 2) && (color ==4)) {
            price = 7.9
        }
    }
    else if ((amount > 999)) {
        if((size == 1) && (color ==1)) {
            price = 1
        }
        if((size == 1) && (color ==2)) {
            price = 1.5
        }
        if((size == 1) && (color ==3)) {
            price = 2.9
        }
        if((size == 1) && (color ==4)) {
            price = 3.9
        }
        if((size == 2) && (color ==1)) {
            price = 2.2
        }
        if((size == 2) && (color ==2)) {
            price = 2.9
        }
        if((size == 2) && (color ==3)) {
            price = 4.9
        }
        if((size == 2) && (color ==4)) {
            price = 5.9
        }
    }

document.getElementById("vysledek").innerHTML=amount * price;   
}  

You could create an object like this.您可以像这样创建 object。 Small example just to show usecase:只是为了展示用例的小例子:

const amountLt19 = {
  size: {
    1: {
      color: {
        1: 2.5,
        2: 3,
        3: 9.9
      }
    }
  }
}

const objSize = amountLt19[size];
const price = objSize && objSize[color]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2025 STACKOOM.COM