Javascript 在jquery datepicker上突出显示多个日期

Javascript 在jquery datepicker上突出显示多个日期,javascript,jquery,arrays,jquery-ui-datepicker,Javascript,Jquery,Arrays,Jquery Ui Datepicker,如果我试图通过提供一个静态数组来突出显示jquery datepicker上的日期。它工作得非常好。如果我在循环中生成数组,然后提供它。我没有办法突出显示日期。代码如下 // var tempDates=["2015/01/07","2015/01/14","2015/01/21"]; var tempDates = []; tempDates=datesToHighlight; line.datepicker({disab

如果我试图通过提供一个静态数组来突出显示jquery datepicker上的日期。它工作得非常好。如果我在循环中生成数组,然后提供它。我没有办法突出显示日期。代码如下

  // var tempDates=["2015/01/07","2015/01/14","2015/01/21"];
                var tempDates = []; tempDates=datesToHighlight;


                line.datepicker({disabled:false, defaultDate: dateObj, dateFormat: 'yy/mm/dd',
                    beforeShowDay: function (highlightMe) {
                        var dateString = jQuery.datepicker.formatDate('yy/mm/dd', highlightMe);
                        var highlightIndex = $.inArray(dateString.toString(), tempDates);
                        if(highlightIndex>-1) {
                            return [true, 'highlight', tips[highlightIndex]];
                        }
                        var aIndex = $.inArray(dateString, selected);
                        return [aIndex == -1]
                    }
                });
这是循环生成日期的格式

 2015/01/07
 2015/01/14
 2015/01/21
 2015/01/28
 2015/02/04
 2015/02/11
 2015/02/18
我用来生成数组的循环

for (var k = 0; k < selectedArrayLength; k++) {
                    if (new Date(selected[k]).getMonth() == monthIndex[ind%12]) {

                        var dateFormat = new Date(selected.splice(k, 1));
                        var curr_date = addZ(dateFormat.getDate());
                        var curr_month = dateFormat.getMonth();
                        curr_month++;
                        var curr_year = dateFormat.getFullYear();
                        var newFormat = (curr_year + "/" + addZ(curr_month) + "/" + curr_date);
                        thisMonthDates.push(newFormat);
                        //thisMonthDates.push(selected.splice(k, 1));
                        k--; // since we removed an element we need to decrement k
                    }
                }


  for(var eachDt=0; eachDt<thisMonthDates.length; eachDt++) {
                    console.log(thisMonthDates[eachDt]);
                    var datesToHighlight = new Array();
                    datesToHighlight.push(new Date(thisMonthDates[eachDt]));

                }
尝试更新for循环以创建datesToHighlight。您不需要为每个thisMonthDates项目创建一个date对象,并且您每天都在重新创建一个新数组,因此我将您的date移动到循环外突出显示初始化

var datesToHighlight = [];
for(var eachDt=0; eachDt<thisMonthDates.length; eachDt++) {
    console.log(thisMonthDates[eachDt]);
    datesToHighlight.push(thisMonthDates[eachDt]);
}

datesToHighlight是另一个数组还是一个函数?确实不清楚具体问题是什么。演示可能有助于更好地解释problem@mikelt21它是一个数组。@mikelt21 datesToHighlight是在循环内生成的。然后我把它指的是tempDates。但它不起作用。我不知道:不确定datepicker是否支持多个日期高亮显示,因为它首先设置了defaultDate。我知道你的日历。。。没有成功。我认为将每个元素都用引号括起来可能会有所帮助。作为静态数组,我们提供的这段代码运行良好。它的每个元素都有引号。如何将每个元素用引号括起来?不,引号并没有帮助。这只意味着日期实际上是字符串,而不是日期对象。我正在尝试将datesToHighlight填充为字符串数组。您能在生成thisMonthDates数组后发布该数组的打印输出吗?另外,为什么在selected.splicek,1中使用splice?为什么不直接使用选定的[k]?那么你就不需要在循环结束时做k-了。这也可能导致问题。如果我不使用拼接,那么迭代将始终保持不变。因为我正在拼接包含所有选定日期的原始数组。
var datesToHighlight = [];
for(var eachDt=0; eachDt<thisMonthDates.length; eachDt++) {
    console.log(thisMonthDates[eachDt]);
    datesToHighlight.push(thisMonthDates[eachDt]);
}