无法得到前几分钟的正确值
cant get the right values for previous minutes
<script>
var train_arrivals = [
'00:10',
'00:15',
'00:23',
'00:35',
'00:43',
'00:58',
'01:05',
'01:13',
'01:20',
'01:37',
'01:48',
'02:15',
'02:25',
'02:40',
'02:55',
'03:00',
'03:09',
'03:21',
'03:37',
'03:52',
'04:15',
'04:30',
'04:44',
'04:58',
'05:16',
'05:31',
'05:49',
'06:00',
'06:26',
'06:56',
'08:06',
'07:24',
'07:43',
'07:58',
'08:06',
'08:13',
'08:28',
'08:43',
'08:58',
'09:05',
'09:13',
'09:28',
'09:43',
'09:58',
'10:05',
'10:38',
'11:00',
'11:38',
'12:38',
'13:38',
'14:38',
'15:38',
'16:00',
'16:39',
'17:00',
'17:06',
'17:27',
'17:57',
'20:20',
'20:45',
'21:50',
'23:25',
'23:30',
'23:48'
];
$(function() {
var today = new Date();
var now = moment([today.getFullYear(), today.getMonth(), today.getMinutes(), today.getHours(), today.getMinutes()]);
var setted = '';
var count = 1;
for (var i=0; i<train_arrivals.length; i++){
var entry = train_arrivals[i];
time = entry.split(":");
var arrival = moment([today.getFullYear(), today.getMonth(), today.getMinutes(), time[0], time[1]]);
diff = arrival.diff(now, 'minutes');
if (!setted && diff > 0) {
$("#arrival_list").append($("<li id="+count+" style='font-size: x-large' class='bg-success'>").text(diff + ' min '));
setted = count;
} else
$("#arrival_list").append($("<li id="+count+" class='bg-info'>").text(diff + ' min'));
if (setted && count >= setted + 2) break;
if (!setted && count > 1)
$('#'+count).remove();
count++;
}
});
</script>
我有这个小web应用程序的代码http://nexttrain.elvismdev.com/
这个想法是显示下一列火车到达车站,由于火车到达时间在代码开始时给出,绿色行内的值是第一个下一列火车接近车站,之后有两个火车到达,从它返回,应该显示多少次前最后一班火车在那里。我不知道哪里出了问题,我得到了错误的值,还有这么长时间,它应该只显示很短的时间。
如果有人能看看我的代码,并指出我可能错过了什么,实际上我不是很精通javascript,时间计算总是让我发疯这样的问题。
我也使用moment.js
与其将<ul>
元素添加到DOM(文档对象模型)然后再次删除它们,为什么不尝试这种方法:首先找到最近的未来出发时间,然后向后工作并获得在此之前的时间。将前一个时间作为<ul>
添加到DOM中,然后添加最近的未来时间。像这样:
var train_arrivals = [
'00:10',
'00:15',
'00:23',
'00:35',
'00:43',
'00:58',
'01:05',
'01:13',
'01:20',
'01:37',
'01:48',
'02:15',
'02:25',
'02:40',
'02:55',
'03:00',
'03:09',
'03:21',
'03:37',
'03:52',
'04:15',
'04:30',
'04:44',
'04:58',
'05:16',
'05:31',
'05:49',
'06:00',
'06:26',
'06:56',
'08:06',
'07:24',
'07:43',
'07:58',
'08:06',
'08:13',
'08:28',
'08:43',
'08:58',
'09:05',
'09:13',
'09:28',
'09:43',
'09:58',
'10:05',
'10:38',
'11:00',
'11:38',
'12:38',
'13:38',
'14:38',
'15:38',
'16:00',
'16:39',
'17:00',
'17:06',
'17:27',
'17:57',
'20:20',
'20:45',
'21:50',
'23:25',
'23:30',
'23:48'
];
$(function() {
var today = moment();
var todayString = today.format("YYYY-MM-DD");
var now = today;
var setted = '';
var count = 1;
for (var i=0; i<train_arrivals.length; i++){
var entry = train_arrivals[i];
var arrival = moment(todayString + ' ' + entry);
diff = arrival.diff(now, 'minutes');
if (!setted && diff > 0) {
if (i > 0) {
var prevEntry = train_arrivals[i - 1];
var prevArrival = moment(todayString + ' ' + prevEntry);
var prevDiff = prevArrival.diff(now, 'minutes');
$("#arrival_list").append($("<li id="+count+" class='bg-info'>").text(prevDiff + ' min'));
}
$("#arrival_list").append($("<li id="+count+" style='font-size: x-large' class='bg-success'>").text(diff + ' min '));
setted = count;
}
else if (diff > 0){
$("#arrival_list").append($("<li id="+count+" class='bg-info'>").text(diff + ' min'));
}
if (setted && count >= setted + 2) break;
count++;
}
});
这是一个工作的jsFiddle: http://jsfiddle.net/W84Gm/1/
相关文章:
- Javascript倒计时计时器倒计时未正确更新秒/分钟
- 如何在不活动5分钟后更改页面位置
- 发布后的应用程序在几分钟后停止更新更新面板
- Javascript模糊时间(例如'10分钟前');s精确到几秒钟
- 用于单击页面上的按钮的Javascript,每隔几分钟就会加载一次
- Javascript时钟,落后几分钟
- 在 JavaScript 中将 Unix 时间转换为“几分钟前”
- 每隔几分钟在页面之间切换一次
- Javascript计时器只有几分钟和几秒钟
- AngularJS后续$http删除将保持挂起状态几分钟
- 节点 - MySQL 查询,需要几分钟时间,在几分钟后重复自己,然后完成原始查询
- 长时间运行的AJAX请求在几分钟后重新提交
- 如何用moment.js减去2次,然后减去几分钟
- 登录弹出窗口几分钟后,在wordpress中卸载用户
- 确定距离午夜还有几分钟
- 在Momentjs中,距离午夜还有几分钟
- 无法得到前几分钟的正确值
- 如何记录60MB以上的HTML5拖放文件的内容而不会挂起几分钟
- setTimeout在几分钟后发疯,FF6.0, Chrome 15
- 更新后的javascript文件在几分钟内没有被服务器分发