今天写了一个根据选择的生日自动选择年龄段的功能
代码如下:
$('.pSetBaseBirth').change(function(){ //选择时间自动计算年龄段 var nowDate = new Date().getTime(),//当前毫秒数 nowyear = $('#birthYear').val(),//选择的年份 nowMonth = $('#birthMonth').val(),//选择的月份
nowDay = $('#birthDay').val(),//选择的日期 oldDate = (new Date(nowyear+'/'+nowMonth+'/'+nowDay)).getTime(),//计算出生日的毫秒数 age = (nowDate-oldDate)/31557600000,//算出当前 ageSelect = $('#ageSelect'); if(age<=14){ ageSelect.val('901') }else if(age<=19){ ageSelect.val('902') }else if(age<=25){ ageSelect.val('903') }else if(age<=30){ ageSelect.val('904') }else if(age<=35){ ageSelect.val('905') }else if(age<=40){ ageSelect.val('906') }else if(age<=45){ ageSelect.val('907') }else if(age<=50){ ageSelect.val('908') }else if(age<=55){ ageSelect.val('909') }else if(age<=60){ ageSelect.val('9010') }else if(age<=65){ ageSelect.val('9011') }else if(age<=70){ ageSelect.val('9012') }else if(age<=75){ ageSelect.val('9013') }else if(age<=80){ ageSelect.val('9014') }else if(age<=85){ ageSelect.val('9015') }else if(age<=90){ ageSelect.val('9016') }else if(age<=95){ ageSelect.val('9017') }else if(age<=100){ ageSelect.val('9018') }; });
在写判断的时候,我尝试用switch case语句来写,这样可以少些很多if()语句,并且方便阅读,代码也美观
如下:
switch(age)
{
case age<14:ageSelect.val('901');
break;
case age<19:ageSelect.val('902');
break;
case age<25:ageSelect.val('903');
break;
......
default:....
}
当测试的时候发现不管age的值是多少,只走default的方法,说明其他的判断结果都是false,然后就开始翻文档,各种百度,发现几乎所有的switch例子都是这样写的:
switch(n){
case 1:...;
case 2:...;
。。。
}
修改代码测试发现
switch(age)
{
case 14:ageSelect.val('901');
break;
case 15:ageSelect.val('902');
break;
case 16:ageSelect.val('903');
break;
......
default:....
}
这样就运行正确,得出结论,case判断是只能是判断一个具体的值,不能判断一个范围,所以还是改回了书写麻烦的if()语句switch语句虽然书写方便直观,但是不灵活,本文到此结束。