如题。需要根据出生日期输入框的值计算目前年龄(周岁)。已找到可根据出生日期计算周岁的代码(使用原生js编写,既下面代码中的functionjsGetAge(strBirthday)),但在采用JQuery编写的主控制js(search.js)中无法调用。代码如下所示:html文件:……(无关代码忽略)出生日期年龄岁search.js文件:functionjsGetAge(strBirthday) { varreturnAge; varstrBirthdayArr=strBirthday.split("-"); varbirthYear=strBirthdayArr[0]; varbirthMonth=strBirthdayArr[1]; varbirthDay=strBirthdayArr[2]; d=newDate(); varnowYear=d.getYear(); varnowMonth=d.getMonth()+1; varnowDay=d.getDate(); if(nowYear==birthYear) { returnAge=0;//同年则为0岁 } else { varageDiff=nowYear-birthYear;//年之差 if(ageDiff>0) { if(nowMonth==birthMonth){ vardayDiff=nowDay-birthDay;//日之差 if(dayDiff
2 回答
哈士奇WWW
TA贡献1799条经验 获得超6个赞
不好意思,经过仔细查看和修改,问题已经得到解决。在此总结一下以供其他人借鉴:1.functionjsGetAge(strBirthday)函数的位置没有问题,可写在$(document).ready(function(){}中或外部。2.问题产生的原因是我的页面同时加载了其他js,加载速度较慢,导致click函数无法快速加载,因此误以为没有效果。实际上是有效果的。3.大家不要直接使用这个根据生日日期计算周岁的函数,这个函数存在问题,没有对同年进行进一步检验就判定年龄为0周岁。修改后的计算周岁的函数://使用前提:参数strBirthday已经是正确格式的2007-02-09这样的日期字符串(年份必须是完整年份)functionjsGetAge(strBirthday) { varreturnAge; varstrBirthdayArr=strBirthday.split("-"); varbirthYear=strBirthdayArr[0]; varbirthMonth=strBirthdayArr[1]; varbirthDay=strBirthdayArr[2]; d=newDate(); varnowYear=d.getFullYear(); varnowMonth=d.getMonth()+1; varnowDay=d.getDate() if(nowYear==birthYear) { if(birthMonth returnAge=0;//同年月份为今月前,0岁 else if(birthMonth==nowMonth&&birthDay<=nowDay) returnAge=0;//同年同月日期为今天前0岁 else returnAge=-1;//同年同月但日为今天后或今月后,日期无效 } else { varageDiff=nowYear-birthYear;//年之差 if(ageDiff>0) { if(nowMonth==birthMonth) { vardayDiff=nowDay-birthDay;//日之差 if(dayDiff<0) { returnAge=ageDiff-1; } else { returnAge=ageDiff; } } else { varmonthDiff=nowMonth-birthMonth;//月之差 if(monthDiff<0) { returnAge=ageDiff-1; } else { returnAge=ageDiff; } } } else { returnAge=-1;//返回-1表示出生日期输入错误晚于今天 } } returnreturnAge;//返回周岁年龄}
添加回答
举报
0/150
提交
取消
