我有3个变量,我正在进行测试,我是javascript的新手,我正在努力将if / else语句转换为交换机以获得更好的代码。但是我需要一些关于如何这样做的指导,因为我有3天,每月,每年。任何帮助将非常感激。 if((day!=''|| month!=''|| year!='')){
if(day!='' && month =='' && year ==''){
var day = d.setDate(d.getDate()+ parseInt(day));
}else if(day!='' && month!='' && year ==''){
var month =d.setDate(d.getMonth()+1+ parseInt(month));
var day = d.setDate(d.getDate()+ parseInt(day));
}else if(day!='' && month!='' && year!=''){
var year =d.setDate(d.getFullYear()+ parseInt(year));
var month =d.setDate(d.getMonth()+1+ parseInt(month));
var day = d.setDate(d.getDate()+ parseInt(day));
}else if(day!='' && year!='' && month ==''){
var year =d.setDate(d.getFullYear()+ parseInt(year));
var day = d.setDate(d.getDate()+ parseInt(day));
}else if(month!='' && year!='' && day ==''){
var year =d.setDate(d.getFullYear()+ parseInt(year));
var month =d.setDate(d.getMonth()+1+ parseInt(month));
}else if(month!='' && day =='' && year ==''){
var month =d.setDate(d.getMonth()+1+ parseInt(month));
}else if(year!='' && day =='' && month ==''){
var year =d.setDate(d.getFullYear()+ parseInt(year));
}
}
答案 0 :(得分:0)
欢迎!你想要实现什么目标?目前,你的逻辑被打破了。例如,如果“day”不为空,则第一个“if”子句将触发,但测试“day”的其他子句都不为空...
答案 1 :(得分:0)
一些问题和评论:
您应该单独处理修改,因为您无需测试每个组合。年,月和日调整的影响可以独立应用。
您正在调用错误的方法来调整月份和/或年份
这些方法返回时间戳,因此您不应将结果分配给年,月或日变量。调用将突变d
变量,这显然是您所需要的。
可以使用统一+
虽然月份编号基于零,但是当day
变量应该添加多个月时,添加1个额外值是没有意义的。请放弃+ 1
。
所以你可以简化如下:
if (year !== '') d.setFullYear(d.getFullYear() + +year);
if (month !== '') d.setMonth(d.getMonth() + +month);
if (day !== '') d.setDate(d.getDate() + +day);