2016-04-10 106 views
1

我在更新数据的属性时,使用一个简单的导航动态变化的日期,一个小问题:jQuery的从当前日期添加日期。减去导航

这里是HTML:

<button id="prev" data-date="2016, 04, 10">Previous</button> 
<button id="next" data-date="2016, 04, 03">Next</button> 

这里的javascript :

function addDays(noOfDays, date) { 
     var origTimezoneOffset = date.getTimezoneOffset(); 
     date = new Date(date.getTime() + (noOfDays * (1000 * 60 * 60 * 24))); 
     var offsetDiff = (date.getTimezoneOffset() - origTimezoneOffset) * 60 * 1000; 
     date = new Date(date.getTime() + offsetDiff); 

     var month = (date.getMonth() + 1); 
     var day = (date.getDate()); 
     if (month < 10) { 
      month = '0' + month; 
     } 
     if (day < 10) { 
      day = '0' + day; 
     } 
     var formatted = date.getFullYear() + ', ' + month + ', ' + day; 
     return formatted; 
    } 

这里是onclick事件:

$("#prev, #next").on('click', function() { 
     var string = $(this).attr('data-date'); 

     if ($(this).attr('id') === "next") { 
      $(this).attr("data-date", addDays(7, new Date(string))); 
      $("#prev").attr('data-date', addDays(-7, new Date(string))); 
     } else { 
      $(this).attr('data-date', addDays(-7, new Date(string))); 
      $("#next").attr('data-date', addDays(7, new Date(string))); 
     } 
    }); 

一切正常,在FF和铬完美的罚款,但IE答Safari浏览器返回 的NaN,NaN的不同,NaN

我已经创建jsbin还有:https://jsbin.com/puvakivika/edit?html,js,output

回答

0

按照Date format您需要将字符串“转换2016年04月10日至2016/04/10“。

有关日期格式的详细信息请参见Parse

在你的情况,你需要使用一个简单的字符串替换:.replace(/,/克,“ - ”)

对于数据属性约,而不是使用.attr使用.data(key, value)

function addDays(noOfDays, date) { 
    var origTimezoneOffset = date.getTimezoneOffset(); 
    date = new Date(date.getTime() + (noOfDays * (1000 * 60 * 60 * 24))); 
    var offsetDiff = (date.getTimezoneOffset() - origTimezoneOffset) * 60 * 1000; 
    date = new Date(date.getTime() + offsetDiff); 

    var month = (date.getMonth() + 1); 
    var day = (date.getDate()); 
    if (month < 10) { 
    month = '0' + month; 
    } 
    if (day < 10) { 
    day = '0' + day; 
    } 
    var formatted = date.getFullYear() + ', ' + month + ', ' + day; 
    return formatted; 
} 

$(function() { 
    $("#prev, #next").on('click', function(e) { 
    var string = $(this).attr('data-date').replace(/, /g, '-'); 

    if ($(this).attr('id') === "next") { 
     $(this).attr("data-date", addDays(7, new Date(string))); 
     $("#prev").attr('data-date', addDays(-7, new Date(string))); 
    } else { 
     $(this).attr('data-date', addDays(-7, new Date(string))); 
     $("#next").attr('data-date', addDays(7, new Date(string))); 
    } 
    }); 
}); 
<script src="https://code.jquery.com/jquery-1.12.1.min.js"></script> 

<button id="prev" data-date="2016, 04, 10">Previous</button> 
<button id="next" data-date="2016, 04, 03">Next</button> 
+0

谢谢哟ü。你已经救了我的一天。 – Alko