Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.03.2019, 08:13
Аспирант
Отправить личное сообщение для Jimy Посмотреть профиль Найти все сообщения от Jimy
 
Регистрация: 21.03.2019
Сообщений: 64

Вопрос новичка о нахождений значений
Добрый день! Есть таблица с расписанием рейсов, там указано время в виде 12:00,12:30,16:00 и т.д.
Также на страничке отображается текущее время в виде 12:00.
Как найти ближайший рейс? Я делаю так:
$('td:contains('+date_hour+')'), где переменная date_hour содержит текущее время. Получается, находит, но только когда точно совпадает. А надо немного по другому - найти все значения в таблице, которые больше текущего времени и указать самый первый (который меньше всех). Думаю, что как-то так. А как реализовать в коде, подскажите?
Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 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;
}
Ответить с цитированием
  #3 (permalink)  
Старый 23.03.2019, 09:56
Аспирант
Отправить личное сообщение для Jimy Посмотреть профиль Найти все сообщения от Jimy
 
Регистрация: 21.03.2019
Сообщений: 64

Спасибо. Прошу прощения за тупость, но что такое tds? Явно какой-то массив, но откуда он?
Ответить с цитированием
  #4 (permalink)  
Старый 23.03.2019, 10:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от Jimy
но что такое tds?
это массив ваших ячеек, пример демострирует только алгоритм поиска, конкретика зависит от вашей реализации.
Ответить с цитированием
  #5 (permalink)  
Старый 23.03.2019, 10:30
Аспирант
Отправить личное сообщение для Jimy Посмотреть профиль Найти все сообщения от Jimy
 
Регистрация: 21.03.2019
Сообщений: 64

Спасибо. В принципе, я так и думал: вытащить значения ячеек в массив и потом уже с ним и работать... Но вот интересно - а другого способа нет? Jquery не сможет найти нужные значения непосредственно из таблицы, без вспомогательных массивов, объектов и т.д.?
Ответить с цитированием
  #6 (permalink)  
Старый 23.03.2019, 10:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от Jimy
вытащить значения ячеек
а зачем? не проще создать обьект(массив) с данными и работать с ним а не с html?
попробуйте создать, для начала, таблицу из массива.
Ответить с цитированием
  #7 (permalink)  
Старый 23.03.2019, 11:05
Аспирант
Отправить личное сообщение для Jimy Посмотреть профиль Найти все сообщения от Jimy
 
Регистрация: 21.03.2019
Сообщений: 64

Спасибо, буду пробовать!
Ответить с цитированием
  #8 (permalink)  
Старый 23.03.2019, 12:15
Аспирант
Отправить личное сообщение для Jimy Посмотреть профиль Найти все сообщения от Jimy
 
Регистрация: 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?
Как правильно сравнить?
Спасибо.
Ответить с цитированием
  #9 (permalink)  
Старый 23.03.2019, 12:33
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 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.
Ответить с цитированием
  #10 (permalink)  
Старый 23.03.2019, 13:07
Аспирант
Отправить личное сообщение для Jimy Посмотреть профиль Найти все сообщения от Jimy
 
Регистрация: 21.03.2019
Сообщений: 64

Спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
небольшой вопрос по центровке wlad Internet Explorer 1 08.01.2017 19:03
Неизвестный идентификатор FaNaT_96 Общие вопросы Javascript 14 01.05.2016 18:15
Вопрос от новичка: сменить тип инпута по клику на флажке Menelion Elensule jQuery 2 23.11.2009 17:28
Вопрос новичка XML "when test" gosha_kap (X)HTML/CSS 1 16.07.2009 12:30
Вопрос новичка по DIV De-Luxis Я не знаю javascript 6 02.06.2009 20:34