第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

個(gè)人認(rèn)為是jquery中調(diào)用js的function產(chǎn)生的問(wèn)題,大家有什么建議么?

個(gè)人認(rèn)為是jquery中調(diào)用js的function產(chǎn)生的問(wèn)題,大家有什么建議么?

森林海 2023-04-26 21:17:20
如題。需要根據(jù)出生日期輸入框的值計(jì)算目前年齡(周歲)。已找到可根據(jù)出生日期計(jì)算周歲的代碼(使用原生js編寫(xiě),既下面代碼中的function jsGetAge(strBirthday)),但在采用JQuery編寫(xiě)的主控制js(search.js)中無(wú)法調(diào)用。代碼如下所示:html文件:<script type="text/javascript" src="js/jquery-1.8.2.min.js"></script> <script type="text/javascript" src="js/search.js"></script> ……(無(wú)關(guān)代碼忽略) 出生日期 <input name="info.birthday" type="text" id="birthday" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd'})" class="Wdate" /> 年齡 <input class="shortText" name="info.age" type="text" id="age" /> 歲search.js文件:function jsGetAge(strBirthday) {        var returnAge; var strBirthdayArr=strBirthday.split("-"); var birthYear = strBirthdayArr[0]; var birthMonth = strBirthdayArr[1]; var birthDay = strBirthdayArr[2]; d = new Date(); var nowYear = d.getYear(); var nowMonth = d.getMonth() + 1; var nowDay = d.getDate(); if(nowYear == birthYear) { returnAge = 0;//同年 則為0歲 } else { var ageDiff = nowYear - birthYear ; //年之差 if(ageDiff > 0) { if(nowMonth == birthMonth){ var dayDiff = nowDay - birthDay;//日之差 if(dayDiff < 0) {returnAge = ageDiff - 1;} else {returnAge = ageDiff ;} }else{ var monthDiff = nowMonth - birthMonth;//月之差 if(monthDiff < 0) {returnAge = ageDiff - 1;} else {returnAge = ageDiff ;} } } else {returnAge = -1;//返回-1 表示出生日期輸入錯(cuò)誤 晚于今天} } return returnAge;//返回周歲年齡} $(document).ready(function() { $("#age").click(function(){ alert(jsGetAge($("#birthday").val())) if($("#birthday").val()!=""){//由于采用日歷控件,可保證字符串格式正確 var age = jsGetAge($("birthday").val()) if(age>=0){ $("#age").val()=age $("#age").attr("readonly",true) }else{ $("#birthday").val()="" alert("出生日期不能晚于今天") } } }) })經(jīng)測(cè)試,alert(jsGetAge($("#birthday").val()))無(wú)法彈出對(duì)應(yīng)警告框,因此個(gè)人認(rèn)為是jquery中調(diào)用js的function產(chǎn)生的問(wèn)題。大家有什么解決方案嗎?謝謝。
查看完整描述

2 回答

?
慕田峪4524236

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊

不好意思,經(jīng)過(guò)仔細(xì)查看和修改,問(wèn)題已經(jīng)得到解決。在此總結(jié)一下以供其他人借鑒:
1.function jsGetAge(strBirthday)函數(shù)的位置沒(méi)有問(wèn)題,可寫(xiě)在$(document).ready(function() {}中或外部。
2.問(wèn)題產(chǎn)生的原因是我的頁(yè)面同時(shí)加載了其他js,加載速度較慢,導(dǎo)致click函數(shù)無(wú)法快速加載,因此誤以為沒(méi)有效果。實(shí)際上是有效果的。
3.大家不要直接使用這個(gè)根據(jù)生日日期計(jì)算周歲的函數(shù),這個(gè)函數(shù)存在問(wèn)題,沒(méi)有對(duì)同年進(jìn)行進(jìn)一步檢驗(yàn)就判定年齡為0周歲。
修改后的計(jì)算周歲的函數(shù):

//使用前提:參數(shù)strBirthday已經(jīng)是正確格式的2007-02-09這樣的日期字符串(年份必須是完整年份)function jsGetAge(strBirthday)
	{       
		var returnAge;		var strBirthdayArr=strBirthday.split("-");		var birthYear = strBirthdayArr[0];		var birthMonth = strBirthdayArr[1];		var birthDay = strBirthdayArr[2];
		
		d = new Date();		var nowYear = d.getFullYear();		var nowMonth = d.getMonth() + 1;		var nowDay = d.getDate()		
		if(nowYear == birthYear)
		{	
			if(birthMonth<nowMonth)
				returnAge=0;//同年月份為今月前,0歲
			else
				if(birthMonth==nowMonth && birthDay<=nowDay)
					returnAge = 0;//同年同月日期為今天前 0歲
				else 
					returnAge = -1;//同年同月但日為今天后或今月后,日期無(wú)效
		}		else
		{			var ageDiff = nowYear - birthYear ; //年之差
			if(ageDiff > 0)
			{				if(nowMonth == birthMonth)
				{					var dayDiff = nowDay - birthDay;//日之差
					if(dayDiff < 0)
					{
						returnAge = ageDiff - 1;
					}					else
					{
						returnAge = ageDiff ;
					}
				}				else
				{					var monthDiff = nowMonth - birthMonth;//月之差
					if(monthDiff < 0)
					{
						returnAge = ageDiff - 1;
					}					else
					{
						returnAge = ageDiff ;
					}
				}
			}			else
			{
				returnAge = -1;//返回-1 表示出生日期輸入錯(cuò)誤 晚于今天
			}
		}		return returnAge;//返回周歲年齡}


查看完整回答
反對(duì) 回復(fù) 2023-04-29
?
達(dá)令說(shuō)

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊

看到你的代碼里jsGetAge方法的計(jì)算邏輯實(shí)在太啰嗦,我就想來(lái)簡(jiǎn)化一下,所以得到第一個(gè)方法:

方法1 

function jsGetAge(strBirthday) {
	var yTime = 365*24*60*60*1000,
		bTime = new Date(strBirthday).getTime(),
		nTime = new Date().getTime();

	return Math.floor((nTime-bTime)/yTime);
}

alert(jsGetAge('1984-3-2'))

但這個(gè)方法存在一個(gè)BUG,因?yàn)椴⒉皇敲磕甓际?65天,所以這里算出來(lái)的年齡會(huì)有一定的差距;

于是我繼續(xù)改進(jìn)有了第二個(gè)方法:

方法二 

function jsGetAge(strBirthday) {
	var bDay = new Date(strBirthday),
		nDay = new Date(),
		nbDay = new Date(nDay.getFullYear(),bDay.getMonth(),bDay.getDate()),
		age = nDay.getFullYear() - bDay.getFullYear();	if (bDay.getTime()>nDay.getTime()) {return '日期有錯(cuò)'}
	return nbDay.getTime()<=nDay.getTime()?age:--age;
}

alert(jsGetAge('1984-3-2'))

這里增加了一個(gè)生日日期大于今天的錯(cuò)誤提示,通過(guò)計(jì)算今年生日和今天的時(shí)間差來(lái)判定由年份計(jì)算來(lái)的時(shí)間是否要減1;
經(jīng)過(guò)簡(jiǎn)單測(cè)試感覺(jué)邏輯上應(yīng)該沒(méi)問(wèn)題了。


查看完整回答
反對(duì) 回復(fù) 2023-04-29
  • 2 回答
  • 0 關(guān)注
  • 132 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)