課程
/前端開發(fā)
/HTML/CSS
/DatePicker組件開發(fā)
月份向前翻,到2016 就不行了,這么回事呢
2017-04-18
源自:DatePicker組件開發(fā) 5-2
正在回答
會(huì)飛的四腳蛇說得對(duì),代碼一開始寫的時(shí)候這里判斷有bug。
求老鐵們能幫忙解決下,謝謝了
if( !year && !month){.....}永遠(yuǎn)不會(huì)執(zhí)行???
難道我打開的瀏覽器姿勢(shì)不對(duì)?麻煩輸入代碼運(yùn)行一下先。
你確定理解 && 和 || 的用法??jī)蓚€(gè)都是短路操作。
&& :第一個(gè)運(yùn)算數(shù)的值為真則返回第二個(gè)運(yùn)算數(shù)的值,否則返回第一個(gè)運(yùn)算數(shù)的值。
if( !year && !month),除了第一次,其他都是短路操作,直接返回 !year的值,即false. !month 根本不會(huì)執(zhí)行;
|| :第一個(gè)運(yùn)算數(shù)的值為真則返回第一個(gè)運(yùn)算數(shù)的值,否則返回第二個(gè)運(yùn)算數(shù)的值。
if (typeof year==='undefined'|| typeof month==='undefined') ,先檢查typeof year==='undefined'再檢查 typeof month==='undefined',除了第一次是短路操作,其他每次都要在檢查typeof month==='undefined'。從效率來講你的方法限定死了參數(shù)檢查,代碼冗余!?。?!無謂的運(yùn)算是可以優(yōu)化的。
在說if(!year || !month)為什么就不行呢,因?yàn)?year 除了第一次運(yùn)行是true,其他基本都是false。除了第一次,這個(gè)條件判斷總是返回 !month 的值,當(dāng) month為0時(shí) !month--> !0--> true,會(huì)執(zhí)行這個(gè)條件判斷后面的語句,即返回當(dāng)前月份的數(shù)據(jù)。
結(jié)論:if( !year && !month){.......} 優(yōu)于if (typeof year==='undefined'|| typeof month==='undefined'){......} ;
慕萊塢1975833
if (typeof year==='undefined'|| typeof month==='undefined') { ? ?var today = new Date(); ? ?year = today.getFullYear(); ? ?month = today.getMonth() + 1;}
使用typeof檢查才正確,使用這個(gè)if(?!year?&&?!month){.....}永遠(yuǎn)不會(huì)執(zhí)行,因?yàn)槊看吸c(diǎn)的時(shí)候不會(huì)出現(xiàn)年份為0,但是月份會(huì)出現(xiàn)0,!0===true,所以你往前切換的時(shí)候才會(huì)bug,望采納
會(huì)飛的四腳蛇
其實(shí)是老師的代碼有點(diǎn)小錯(cuò)誤。
翻到2017-1,再點(diǎn)month就變?yōu)?,
根據(jù)老師datepicker.getMonthData的定義,參數(shù)判斷
?if(!year?||?!month) { ????var?today?=?new?Date(); ????year?=today.getFullYear(); ????month?=today.getMonth()?+?1; }
改為
if(?!year?&&?!month){.....}
就可以了。
舉報(bào)
使用原生JS完成一個(gè)日期選擇器(datepicker)組件的開發(fā)
1 回答這里為什么總是會(huì)報(bào)錯(cuò)?
2 回答為什么要設(shè)置td寬度為14%呢?
1 回答這里為什么用break
1 回答為什么在datepick.init的時(shí)候 datepick.render();沒有傳參數(shù)呢
1 回答這個(gè)程序我用eclipse中的jsp來寫為什么下面的日歷部分不顯示呢?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2017-04-20
會(huì)飛的四腳蛇說得對(duì),代碼一開始寫的時(shí)候這里判斷有bug。
2018-05-29
求老鐵們能幫忙解決下,謝謝了
2017-04-19
if( !year && !month){.....}永遠(yuǎn)不會(huì)執(zhí)行???
難道我打開的瀏覽器姿勢(shì)不對(duì)?麻煩輸入代碼運(yùn)行一下先。
你確定理解 && 和 || 的用法??jī)蓚€(gè)都是短路操作。
&& :第一個(gè)運(yùn)算數(shù)的值為真則返回第二個(gè)運(yùn)算數(shù)的值,否則返回第一個(gè)運(yùn)算數(shù)的值。
if( !year && !month),除了第一次,其他都是短路操作,直接返回 !year的值,即false. !month 根本不會(huì)執(zhí)行;
|| :第一個(gè)運(yùn)算數(shù)的值為真則返回第一個(gè)運(yùn)算數(shù)的值,否則返回第二個(gè)運(yùn)算數(shù)的值。
if (typeof year==='undefined'|| typeof month==='undefined') ,先檢查typeof year==='undefined'再檢查 typeof month==='undefined',除了第一次是短路操作,其他每次都要在檢查typeof month==='undefined'。從效率來講你的方法限定死了參數(shù)檢查,代碼冗余!?。?!無謂的運(yùn)算是可以優(yōu)化的。
在說if(!year || !month)為什么就不行呢,因?yàn)?year 除了第一次運(yùn)行是true,其他基本都是false。除了第一次,這個(gè)條件判斷總是返回 !month 的值,當(dāng) month為0時(shí) !month--> !0--> true,會(huì)執(zhí)行這個(gè)條件判斷后面的語句,即返回當(dāng)前月份的數(shù)據(jù)。
結(jié)論:if( !year && !month){.......} 優(yōu)于if (typeof year==='undefined'|| typeof month==='undefined'){......} ;
2017-04-19
if (typeof year==='undefined'|| typeof month==='undefined') {
? ?var today = new Date();
? ?year = today.getFullYear();
? ?month = today.getMonth() + 1;
}
使用typeof檢查才正確,使用這個(gè)if(?!year?&&?!month){.....}永遠(yuǎn)不會(huì)執(zhí)行,因?yàn)槊看吸c(diǎn)的時(shí)候不會(huì)出現(xiàn)年份為0,但是月份會(huì)出現(xiàn)0,!0===true,所以你往前切換的時(shí)候才會(huì)bug,望采納
2017-04-19
其實(shí)是老師的代碼有點(diǎn)小錯(cuò)誤。
翻到2017-1,再點(diǎn)month就變?yōu)?,
根據(jù)老師datepicker.getMonthData的定義,參數(shù)判斷
改為
就可以了。