23.03.2019, 08:13
|
Аспирант
|
|
Регистрация: 21.03.2019
Сообщений: 64
|
|
Вопрос новичка о нахождений значений
Добрый день! Есть таблица с расписанием рейсов, там указано время в виде 12:00,12:30,16:00 и т.д.
Также на страничке отображается текущее время в виде 12:00.
Как найти ближайший рейс? Я делаю так:
$('td:contains('+date_hour+')'), где переменная date_hour содержит текущее время. Получается, находит, но только когда точно совпадает. А надо немного по другому - найти все значения в таблице, которые больше текущего времени и указать самый первый (который меньше всех). Думаю, что как-то так. А как реализовать в коде, подскажите?
Спасибо!
|
|
23.03.2019, 08:55
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Jimy,
for (var i = 0; i < tds.length; i++) {
if(tds[i].time > now) break;
}
|
|
23.03.2019, 09:56
|
Аспирант
|
|
Регистрация: 21.03.2019
Сообщений: 64
|
|
Спасибо. Прошу прощения за тупость, но что такое tds? Явно какой-то массив, но откуда он?
|
|
23.03.2019, 10:01
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Сообщение от Jimy
|
но что такое tds?
|
это массив ваших ячеек, пример демострирует только алгоритм поиска, конкретика зависит от вашей реализации.
|
|
23.03.2019, 10:30
|
Аспирант
|
|
Регистрация: 21.03.2019
Сообщений: 64
|
|
Спасибо. В принципе, я так и думал: вытащить значения ячеек в массив и потом уже с ним и работать... Но вот интересно - а другого способа нет? Jquery не сможет найти нужные значения непосредственно из таблицы, без вспомогательных массивов, объектов и т.д.?
|
|
23.03.2019, 10:53
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Сообщение от Jimy
|
вытащить значения ячеек
|
а зачем? не проще создать обьект(массив) с данными и работать с ним а не с html?
попробуйте создать, для начала, таблицу из массива.
|
|
23.03.2019, 11:05
|
Аспирант
|
|
Регистрация: 21.03.2019
Сообщений: 64
|
|
Спасибо, буду пробовать!
|
|
23.03.2019, 12:15
|
Аспирант
|
|
Регистрация: 21.03.2019
Сообщений: 64
|
|
А подскажите, в чем ошибка? Сделал так:
var arr = new Array();
$('#table3 td').each(function() {
arr.push($(this).text());
}) ;
alert(arr);
alert (date_hour);
for (var i = 0; i < arr.length; i++) {
if(arr[i] > date_hour) alert(arr[i]);
};
Массив получается. там значения 8:00,8:30,9:00 ....20:30, 21:00
Первый alert это показывает, все как надо. Далее, смотрим время. Допустим, 16:02.
А вот третий alert будет выводить 17:00, потом 18 и т.д. А где 16:30?
Как правильно сравнить?
Спасибо.
|
|
23.03.2019, 12:33
|
|
Профессор
|
|
Регистрация: 20.12.2009
Сообщений: 1,714
|
|
<html><head><style> span{font: bold 120% sans-serif; }</style></head><body>
<script>
var times = [
"8:00","8:30","9:00","9:30","10:00","10:30","11:00","11:30","12:00","12:30","13:00","13:30","14:00","14:30",
"15:00","15:30","16:00","16:30","17:00","17:30","18:00","18:30","19:00","19:30","20:00", "20:30", "21:00"];
var html = "";
var now = new Date();
now = now.getHours() * 60 + now.getMinutes();
// сам алгоритм
var nextTripFinded = false;
for(var i = 0; i < times.length; i++) {
var t = times[i].split(":");
var isFollowingTrip = t[0] * 60 + +t[1] > now;
var s = isFollowingTrip ? '' : 'color: gray;';
if(!nextTripFinded && isFollowingTrip) {
nextTripFinded=true;
s += 'background:yellow;';
}
if(s) s = 'style="' + s + '"';
html += '<span ' + s + '>' + times[i] + '</span> ';
}
// конец алгоритма
document.body.innerHTML = html;
</script></body></html>
Последний раз редактировалось Malleys, 23.03.2019 в 13:14.
|
|
23.03.2019, 13:07
|
Аспирант
|
|
Регистрация: 21.03.2019
Сообщений: 64
|
|
Спасибо!
|
|
|
|