我是javascript的新手,我想创建一个日期选择器,使用带有日期列表的json响应突出显示某些日期。
这就是我的尝试:
var dates = [];
dates = getDays();
$(function () {
$("#datepicker").datepicker({
beforeShowDay: setHoliDays
});
function setHoliDays(date) {
for (var i = 0; i < dates.lenght; i++) {
if (dates[i] == date) {
return [true, "green"];
}
}
return [true, ""];
}
});
function getDays() {
var arr = [];
$.getJSON("/getDates", function (data) {
$.each(data, function (id, val) {
arr.push(val);
});
return arr;
});
}
JSON响应如下:
["2013-03-18T12:00:00","2013-03-19T12:00:00","2013-03-20T12:00:00",
"2013-03-21T11:00:00","2013-03-21T10:00:00","2013-03-21T08:00:00",
"2013-03-25T10:00:00","2013-03-26T08:00:00","2013-03-27T09:00:00",
"2013-03-28T08:00:00","2013-03-28T09:00:00","2013-03-28T10:00:00",
"2013-03-28T11:00:00","2013-03-28T12:00:00"]
我做错了什么?
答案 0 :(得分:0)
您的getDays函数正在进行异步调用。这意味着在从远程资源实际收到响应之前,该方法返回(在这种情况下没有任何内容)。要使用此响应,您的回调函数将需要创建数组并将其保存在某处(全局变量最简单,但由于我不会在此处讨论,因此肯定不建议使用)。然后你的setHoliDays函数可以使用它。
鉴于您已经在使用全局,您的回调可能会结束:
$.each(data,function(id,val){
arr.push(val);
});
dates = arr;