对于在循环中无法按预期工作 JavaScript
for in loop not working as expected javascript
我有一个对象,Object { 2014-01-30=[1], 2014-02-01=[1]}
以及一个名为fechasPeriodo的数组,
那么为什么是以下代码:
fechasPeriodo = [];
for(var property in SelectedDates) {
fechasPeriodo.push(new Date(property));
}
产生此结果[Date {Wed Jan 29 2014 18:00:00 GMT-0600}, Date {Fri Jan 31 2014 18:00:00 GMT-0600}]
编辑:我希望结果是2014年1月30日星期四等,周日02 Feb 2014。
实际上,这只是一个问题,因为我正在尝试使用Google日历提要在日期选择器中定义日期范围。所以下面的代码:
if(fechasPeriodo.length > 1) {
r[1] = fechasPeriodo[0] <= date && date <= fechasPeriodo[1] ?"Highlighted"+SelectedDates[key][0].replace(/'s/g, "_"):"Highlighted-unknown";
}
我希望突出显示从 1 月 30 日到 2 月 2 日的范围。但是,如果您可以指导我为什么它不起作用,我将不胜感激,我正在遵循这个小提琴:http://jsfiddle.net/qaEuj/
冒着再次被否决的风险,我不得不说,我仍然不明白为什么我上面的最后一段代码不像我提到的小提琴那样工作,所以这是我的完整代码:
$(document).ready(function() {
var fechaDefecto = new Date('2014/01/01');
var fechaFin = new Date('2014/08/31');
SelectedDates = null;
/*SelectedDates[new Date('12/25/2014')] = new Date('12/25/2014');
SelectedDates[new Date('12/12/2014')] = new Date('12/12/2014');
SelectedDates[new Date('06/06/2014')] = new Date('06/06/2014');*/
$('#tiposFechas').change(function() {
$.getJSON("https://www.google.com/calendar/feeds/cide.edu_sm151i2pdhu2371vq8hamcver4@group.calendar.google.com/public/full?q="+encodeURI($(this).val()), {"alt" : "json"}, function(data) {
SelectedDates = {};
$.each(data.feed.entry, function(i, entry) {
var key = entry.gd$when[0].startTime.substr(0, 10)
var clave = entry.gd$when[0].endTime.substr(0, 10);
if(key in SelectedDates === false || clave in SelectedDates === false) {
SelectedDates[key] = [];
SelectedDates[clave] = [];
}
SelectedDates[key].push(entry.title.$t);
SelectedDates[clave].push(entry.title.$t);
});
$('#cal').datepicker("refresh");
});
});
$('#cal').datepicker(
{
beforeShowDay: function (date) {
var r = [true, ""];
if (SelectedDates === null) {
r[1] = "Highlighted-unknown";
}
else {
fechasPeriodo = [];
for(var property in SelectedDates) {
fechasPeriodo.push(new Date(property));
//alert(property);
}
var key = $.datepicker.formatDate("yy-mm-dd", date);
if(key in SelectedDates) {
if(fechasPeriodo.length > 1) {
r[1] = fechasPeriodo[0] <= date && date <= fechasPeriodo[1] ?"Highlighted"+SelectedDates[key][0].replace(/'s/g, "_"):"Highlighted-unknown";
}
else {
r[1] = "Highlighted"+SelectedDates[key][0].replace(/'s/g, "_");
}
r[2] = SelectedDates[key].join(", ");
}
}
return r;
},
minDate : fechaDefecto,
maxDate : fechaFin,
numberOfMonths: [3,3]
});
});
我希望有人指出一个原因,即使是批评,因为已经很晚了。
我必须说我试过这个: r[1] = new Date(fechasPeriodo[0].getYear(), fechasPeriodo[0].getMonth(), fechasPeriodo[0].getDate()) <= date && date <= new Date(fechasPeriodo[1].getYear(),fechasPeriodo[1].getMonth(),fechasPeriodo[1].getDate()) ?"Highlighted"+SelectedDates[key][0].replace(/'s/g, "_"):"Highlighted-unknown";
但也没有用。当我在第 fechasPeriodo.push(new Date(property));
行中调用新日期时,我表示日期的方式以及比较它们的方式是否存在问题?
这只是 UTC 和非 UTC 表示之间的区别。
new Date('2014-01-30').toString(); //Wed Jan 29 2014 19:00:00
new Date('2014-01-30').toUTCString(); //Thu, 30 Jan 2014 00:00:00
尝试fechasPeriodo[0].toUTCString();
,我很确定它会返回您所期望的。
- 用户名输入如果其他块不能正常工作/Javascript-jQuery-AJAX
- 变量只能在函数中局部工作,不能全局工作-Javascript
- onClick按钮不工作javascript/php/jquery mobile
- 点击骰子赢得't工作(javascript)
- for循环,if else不工作Javascript
- 获取下一个不工作Javascript DOM的同级父节点的子节点
- 可以'没有一个函数可以工作——Javascript
- OnFocus 不是工作 JavaScript HTML;不显示对焦时计算和按钮单击时
- 从 iframe 访问主站点中的工作 JavaScript
- 对于在循环中无法按预期工作 JavaScript
- 在阅读表单输入后写回HTML;t工作(Javascript)
- 复选框单击有效,取消选中复选框不工作Javascript
- 代码在Codepen中工作,而不是在浏览器中工作:JavaScript在鼠标滚轮上缩放SVG
- 当用户在这个工作javascript注释框中提交注释时,您将如何添加用户图像和名称
- 向Wordpress添加工作Javascript谷歌地图代码
- 确认/重定向功能不工作-javascript
- 当/patt/版本工作时,为什么RegExp版本不工作?(Javascript)
- Firefox加载项按钮代码不工作-Javascript
- 计算器功能不工作- Javascript
- 将工作JavaScript对象序列化为仅保留属性的JSON