jQuery提示getFullYear is not a function的解决办法

原创 Laughing  2017-10-22 22:07  阅读 258 次 评论 0 条

估计遇到这个问题的都是像我一样的小白吧。其实这个问题产生的原因很简单,因为我们在调用getFullYear()方法是不是一个Date对象

产生问题的代码

  1. $("#PostDateTime").val(Format($("#PostDateTime").val(),"yyyy-MM-dd"));  

Format()方法定义

  1. $("#PostDateTime").val(Format($("#PostDateTime").val(),"yyyy-MM-dd"));  
  2. /*日期格式化代码开始 */  
  3. function Format(now, mask) {  
  4.     var d = now;  
  5.     var zeroize = function(value, length) {  
  6.         if (!length) length = 2;  
  7.         value = String(value);  
  8.         for (var i = 0, zeros = ''; i < (length - value.length); i++) {  
  9.             zeros += '0';  
  10.         }  
  11.         return zeros + value;  
  12.     };  
  13.   
  14.     return mask.replace(/"[^"]*"|'[^']*'|\b(?:d{1,4}|m{1,4}|yy(?:yy)?|([hHMstT])\1?|[lLZ])\b/g, function($0) {  
  15.         switch ($0) {  
  16.             case 'd':  
  17.                 return d.getDate();  
  18.             case 'dd':  
  19.                 return zeroize(d.getDate());  
  20.             case 'ddd':  
  21.                 return ['Sun', 'Mon', 'Tue', 'Wed', 'Thr', 'Fri', 'Sat'][d.getDay()];  
  22.             case 'dddd':  
  23.                 return ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'][d.getDay()];  
  24.             case 'M':  
  25.                 return d.getMonth() + 1;  
  26.             case 'MM':  
  27.                 return zeroize(d.getMonth() + 1);  
  28.             case 'MMM':  
  29.                 return ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'][d.getMonth()];  
  30.             case 'MMMM':  
  31.                 return ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'][d.getMonth()];  
  32.             case 'yy':  
  33.                 return String(d.getFullYear()).substr(2);  
  34.             case 'yyyy':  
  35.                 return d.getFullYear();  
  36.             case 'h':  
  37.                 return d.getHours() % 12 || 12;  
  38.             case 'hh':  
  39.                 return zeroize(d.getHours() % 12 || 12);  
  40.             case 'H':  
  41.                 return d.getHours();  
  42.             case 'HH':  
  43.                 return zeroize(d.getHours());  
  44.             case 'm':  
  45.                 return d.getMinutes();  
  46.             case 'mm':  
  47.                 return zeroize(d.getMinutes());  
  48.             case 's':  
  49.                 return d.getSeconds();  
  50.             case 'ss':  
  51.                 return zeroize(d.getSeconds());  
  52.             case 'l':  
  53.                 return zeroize(d.getMilliseconds(), 3);  
  54.             case 'L':  
  55.                 var m = d.getMilliseconds();  
  56.                 if (m > 99) m = Math.round(m / 10);  
  57.                 return zeroize(m);  
  58.             case 'tt':  
  59.                 return d.getHours() < 12 ? 'am' : 'pm';  
  60.             case 'TT':  
  61.                 return d.getHours() < 12 ? 'AM' : 'PM';  
  62.             case 'Z':  
  63.                 return d.toUTCString().match(/[A-Z]+$/);  
  64.                 // Return quoted strings with the surrounding quotes removed  
  65.             default:  
  66.                 return $0.substr(1, $0.length - 2);  
  67.         }  
  68.     });  
  69. };  
  70. /**日期格式化代码结束**/  

解决办法

解决问题的方法是非常简单的,我们可以修改Format()方法,传入的参数新建一个Date对象,或者修改传入的参数,传入一个Date对象。例如我们修改传入的参数,修改后代码如下

  1. $("#PostDateTime").val(Format(new Date($("#PostDateTime").val()),"yyyy-MM-dd"));  
本文地址:https://www.lisen.me/jquery-tips-getfullyear-is-not-a-function-of-the-solution.html
版权声明:本文为原创文章,版权归 木子网 所有,欢迎分享本文,转载请保留出处!

发表评论


表情