根据所选的小时和分钟从表中获取下一个最近的时间
Get next closest time from a table based on selected hours and minutes
我有一个长表与列的时间表数据,我通过jQuery load()
加载表单。我可以访问这些html页面与表数据,可以添加类/数据属性等。
我的表单有select
字段小时和分钟(默认为当前时间),我试图得到下一个最接近的时间加上四个之后。
我的表中的时间数据都格式化为<td>H:MM</td>
。
理想情况下使用jQuery,我想知道如何剥离表数据的一切,但那些时间。或者,既然我可以重新格式化这些数据,我是否会让我的生活更容易以某种方式格式化它?
我尝试过的事情 -我承认我是js的新手,所以这些事情可能看起来很愚蠢:
- 读取每个单元格的第一个字符并将其与选定的小时。这显然是10 11 12和1的问题非常密集(这是一个移动站点)
- 使用单个
select
字段,然后创建每个数组列,以便与所选时间进行比较。我没法让它工作这也造成了必须使用单个选择的问题每一次。
基本上寻找一个小指导如何得到这个工作短,或者可能包括,复制所有的html表到JSON格式…
不妨发布http://jsbin.com/ozebos/16/edit,虽然我被打败了:)
基本操作模式类似于@nrabinowitz
- 加载时,以某种方式解析时间字符串,并在每行上添加
data
- 在过滤器上(即用户操作表单),选择的时间以相同的方式解析。在
row.data('time') >= chosen_time
上过滤行 - 使用
.slice(0, 5)
生成的元素数组限制为5(最近时间加上OP请求的4) - 所有行被隐藏,这些行被显示。
已经做了一些假设,所以这段代码只能作为一个指向解决方案的指针。
我认为这是一个有趣的问题,所以我把jsFiddle放在这里:http://jsfiddle.net/nrabinowitz/T4ng8/
基本步骤如下:
-
提前解析时间数据并使用
.data()
存储。为了便于比较,我建议使用parseFloat(hh + '.' + mm)
将时间数据存储为浮点数。 -
在更改处理程序中,使用循环按顺序遍历单元格,当发现单元格的索引的
time
值高于您选择的时间时停止。递减索引,因为您已经走多了一步 -
在
.each()
循环中使用.toggle(i >= index && i < index+4)
来隐藏和显示适当的行。
如何在客户端做到这一点。这只是一个提纲,但应该给你一个想法。
// Create a sorted array of times from the table
var times = []
$('#mytable td').each(function(cell) {
times.push(cell.innerHTML);
});
times.sort();
// Those times are strings, and they can be compared, e.g. '16.30' > '12.30' returns true.
var currentTime = '12:30' // you probably need to read this from your select
var i = 0;
while (times[i] < currentTime || i=times.length) {
i++;
}
var closestTime = times[i];
var closestTimes = times.slice(i, i+4);
如果你想访问的不是时间,而是包含时间的单元格,你可以这样找到它们:
$('#mytable td').each(function() {
if ($(this).text() in closestTimes) {
// do something to that cell
}
})
相关文章:
- 如何使用javascript获取下一个/转发url
- 获取下一个或上一个隐藏元素的高度,以设置父元素的高度.jquery.
- jQuery - 根据标识符获取下一个选项的总值
- jQuery - 根据属性在所选选项之后的下拉列表中获取下一个选项的总值
- 如何在 JavaScript 中获取下一个元素和更新
- 正在获取下一个可用编号,跳过数组中的项目
- 是否可以在Protractor中使用cssContainingText获取下一个同级
- 获取下一个不工作Javascript DOM的同级父节点的子节点
- 无法获取下一个td值
- jQuery-在每个复选框中获取下一个元素
- 正在从元素中获取下一个className
- 如何获取下一个元素's值-jquery
- 从数组中排除值后,获取下一个最高日期值
- 如何在没有周末的情况下添加天数以从当前日期获取下一个日期
- 获取下一个 DOM 元素的 ID
- 时刻 js 在给定指定工作日的情况下获取下一个日期
- jQuery 在
中获取下一个输入元素值 - 单击复选框时获取下一个TD的内容
- 如何获取下一个 JSON 项
- 单击按钮时获取下一个/上一个 ID