jquery datepicker突出显示假期

我正在尝试制作一个jquery日期选择器日历,它会突出显示假期,并在日期选择器上的日期hover时将假日名称作为工具提示。 假日日期来自一个php文件(holidays.php)。 我的问题是……我似乎无法突出显示所有假期,它只突出显示一个日期。 更具体地说,只是第一个返回的日期。

$(document).ready(function (){ var holiDays = (function () { var val = null; $.ajax({ 'async': false, 'global': false, 'url': 'holidays.php', 'success': function (data) { val = data; } }); return val; })(); var result = []; var holiDays = holiDays.split(','); var s, k; for (s = 0, k = -1; s < holiDays.length; s++) { if (s % 4 === 0) { k++; result[k] = []; } result[k].push(holiDays[s]); } // This for loop is to check whether the values stored in result[] are correct for (i = 0; i < result.length; i++) { var f=result[i][0]+"-"+result[i][1]+"-"+result[i][2]; alert(f); } function nationalDays(date) { var m = date.getMonth(); var d = date.getDate(); var y = date.getFullYear(); for (i = 0; i < result.length; i++) { var f=result[i][0]+"-"+result[i][1]+"-"+result[i][2]; // WHEN I ALERT THE VALUE OF f HERE, // IT ALWAYS DISPLAY THE FIRST VALUE IN THE RESULT ARRAY. WHY? alert(f); var d = new Date(f); if (date.getFullYear() == d.getFullYear() && date.getMonth() == d.getMonth() && date.getDate() == d.getDate()) { return [true, 'holiday', result[i][3]]; } else { return [true]; } } } $(function() { $('input.pickerClass').live('click', function() { $(this).datepicker({dateFormat: 'yy-mm-dd', beforeShowDay: nationalDays }).focus(); }); }); }); 

当我在nationalDays函数之外警告数组result[]内的值时,存储的值似乎是正确的。

  for (i = 0; i < result.length; i++) { var f=result[i][0]+"-"+result[i][1]+"-"+result[i][2]; alert(f); } 

但由于某种原因,当我在nationalDays函数下警告result[] INSIDE for for循环的值时,它只返回存储在数组result []中的第一个日期。 但为什么?

有人有想法吗?我非常感激。 🙂

我已经知道我哪里出错了。

 if (date.getFullYear() == d.getFullYear() && date.getMonth() == d.getMonth() && date.getDate() == d.getDate()) { return [true, 'holiday', result[i][3]]; } else { return [true]; } 

本来应该

 if (date.getFullYear() == d.getFullYear() && date.getMonth() == d.getMonth() && date.getDate() == d.getDate()) { return [true, 'holiday', result[i][3]]; } return [true]; 

我刚刚删除了else语句,它有效!