我在JavaScript开关语句中做错了什么?

我在JavaScript开关语句中做错了什么?,javascript,switch-statement,Javascript,Switch Statement,下面我有各种输入字段,我在最终结果中根据初始收入值计算月收益和年收益 我试图做的是添加单选按钮来选择天气,他们插入的值是每周、每月等 我举了一个例子,我需要用户用复选框来决定收入的第一个值 function computeBudget() { var income = document.getElementById('income').value; switch(rate) { case weekly:

下面我有各种输入字段,我在最终结果中根据初始收入值计算月收益和年收益

我试图做的是添加单选按钮来选择天气,他们插入的值是每周、每月等

我举了一个例子,我需要用户用复选框来决定收入的第一个值

function computeBudget() {        
        var income = document.getElementById('income').value;
        switch(rate) {
            case weekly:
                this.add((.value * 52) / 12);
                break;
            case biWeekly:
                this.add((.value * 26) / 12);
                break;
        }

        var grocery_expenses = document.getElementById('grocery_expenses').value;
        var car_insurance = document.getElementById('car_insurance').value;
        var home_mortgage = document.getElementById('home_mortgage').value;
        var home_utilities = document.getElementById('home_utilities').value;
        var life_insurance = document.getElementById('life_insurance').value;


        var monthgain = (income - grocery_expenses - car_insurance - home_mortgage - home_utilities -life_insurance).toFixed(2);
        monthgain = monthgain.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
        document.getElementById('monthgain').innerHTML = "Monthly Net Gain = $"+monthgain ;

        var yeargain = ((income - grocery_expenses - car_insurance - home_mortgage - home_utilities -life_insurance) * 12).toFixed(2);
        yeargain = yeargain.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
        document.getElementById('yeargain').innerHTML = "Yearly Net Gain = $"+ yeargain;
    }

尝试向大小写值添加引号,如:

switch(rate) {
        case "weekly": // added quotes
            this.add((.value * 52) / 12);
            break;
        case "biWeekly": // added quotes
            this.add((.value * 26) / 12);
            break;
    }

您需要创建一个周乘数变量,该变量将保存周的转换值

然后,您需要打开单选按钮的值,并为您想要处理的每个情况创建一个案例

例如:

var weekMultiplier = 0;
switch(rate) // a string value representing the type
{
    case "weekly":
        weekMultiplier = 1;
        break;
    case "biWeekly":
        weekMultiplier = 0.5;
        break;
    case "monthly":
        weekMultiplier = 0.25;
        break;
}
var weeklyIncome = income * weekMultiplier;
var weeklyCarInsurance = document.getElementById('car_insurance').value * weekMultiplier;
然后用这个乘数乘以你的输入。如果尚未转换为周值,则对要包含在计算中的每个值执行此操作

例如:

var weekMultiplier = 0;
switch(rate) // a string value representing the type
{
    case "weekly":
        weekMultiplier = 1;
        break;
    case "biWeekly":
        weekMultiplier = 0.5;
        break;
    case "monthly":
        weekMultiplier = 0.25;
        break;
}
var weeklyIncome = income * weekMultiplier;
var weeklyCarInsurance = document.getElementById('car_insurance').value * weekMultiplier;
现在你可以减去它们

var weeklyGain = weeklyIncome - weeklyCarInsurance;
并乘以所需格式的增益:

var monthlyGain = weeklyGain * 4;
var yearlyGain = weeklyGain * 52;

收入值是否也会根据单选按钮发生变化?是否可以按周/月计算?是否应按切换收入?否应根据单选按钮计算收入值,然后当我看到他每个月总共储蓄了多少时,它将与我使用年度计算时的结果一致。那么利率变量是什么?你觉得呢,value*52有什么作用?看起来像是语法错误。对不起,他们输入的内容应该附在单选按钮上,因此,如果我每2个月收到一次支票,我会在输入字段中输入4000,然后选中2个月单选按钮,该按钮将在趋势结果中计算,以显示我每月和每年有多少额外的储蓄。有没有一种方法可以使用名称=收入的分组输入,因为我是被建议的这在另一个网站上,但似乎没有改变结果。。如果失败了,我会按照你描述的方式重写代码,谢谢你的老板!您可以将weekMultiplier值放置在每个单选按钮的值中。然后可以省略switch语句并从中获取乘数