Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Обработка таблиц


Автор: Good13 23.7.2014, 22:30
Доброго времени суток. Имеется таблица html с расписанием автобуса. Задача: взять время нынешнее и в зависимости от его значения вывести 5ближайших рейсов. Есть наброски работающие несовсем четко(при задании времени большим, чем 14:00 это время все равно выдается. А при прогоне значений "i" в цикле именно это значение выдается как 0, трудно объяснить иначе как-то). Помогите найти ошибки/ предложите иной вариант реализации.

Код

<div id="mid" name="mid">
        
        <div id="t130a" name="t130a">
            <h3>Ейск - п.Братский </h3>
            <h4> Цена проезда - 30р </h4>
            <h5> Время отправления </h5>
            <table id="table130a" rules="all">
                <tr>
                    <th>из Ейск</th><th>из п.Комсомолец</th>
                </tr>
                
                <tr>
                    <td><span id='eisk'>13:00</span></td>
                                                                      <td><span id='koms'>09:10</span></td>
                </tr>
                
                <tr>
                    <td><span id='eisk'>16:00</span></td>
                                                                      <td><span id='koms'>14:15</span></td>
                </tr>
                
                <tr>
                    <td><span id='eisk'>18:00</span></td>
                                                                      <td><span id='koms'>17:15</span></td>
                </tr>
                
                <tr>
                    <td><span id='eisk'>--:--</span></td>
                                                                      <td><span id='koms'>19:20</span></td>
                </tr>
                
            </table>

        </div>
</div> 



Код

var iNeedHour=17,iNeedMin=0;
var iNeedCount=3;
var tableData=[];
$('#table130a span[id=koms]').each(function(){
    var time=$(this).html();
  
    tableData.push(time.split(':'));
    alert(tableData);
}); 

for(var i=0;i<tableData.length;i++)
{
    if (tableData[i][0]=='--' || tableData[i][0] < iNeedHour) 
    { 
        tableData.splice(i,1);
    } 
    
        else { if (tableData[i][0] == iNeedHour) {if (tableData[i][1] < iNeedMin) {tableData.splice(i,1);}}
}}

for(i=0;i<iNeedCount;i++) {tableData[i]=tableData[i][0]+':'+tableData[i][1];

$('#mid').append('из комсомольца:'+tableData[i]+'<br>');

} 


Автор: dcc0 26.7.2014, 15:28
JS не знаю.


Наверное так, но могу ошибаться:

1. сравнивать с текущим временем, сначала преобразовав  в одно число часы и минуты.

2. Преобразовать время в расписании,  часы и минуты.

Если время отправления больше текущего, - например, на 5 минут, - тогда
не выводить.

Соответственно, эти пять минут можно прибавить к переменной, которая хранит текущее время и просто сравнивать.

P.S. Неверные результаты могут быть из-за форматов даты.

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Obrabotka-tablits-id53d00df0ae201500508b4567#findElement_E7045_53d39eeeae20158e595a433d_0

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)