Короче, по-человечески надо передавать сразу все данные и пусть функция уже там рендерит из в ul li li li ul
|
Цитата:
|
У меня снова глупый вопрос, что-то не пойму, как выводить расчет времени, определенного массива на отдельной страничке html(schedule_1_1, schedule_1_2 итд)
<!doctype html> <html> <head> <title>My Page</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.3/jquery.mobile-1.4.3.min.css"> <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script> <script src="http://code.jquery.com/mobile/1.4.3/jquery.mobile-1.4.3.min.js"></script> <script> var timeBuss = { 0:['9:30','10:30','11:40','12:30','13:20','14:06'], 1:['8:04','9:55','10:35','11:44','12:30','13:50'], 2:['7:22','8:53','9:44','10:59','11:56'] } function timerCurrentBuss(time) { var timeBuss = time; setInterval(currentTimeForBuss, 1000); function currentTimeForBuss() { var date = new Date()//Получили текущую дату var time = { hours: date.getHours(), minutes: date.getMinutes(), seconds: date.getSeconds() }//получили часы и минуты document.getElementById("current_time").innerHTML = ('Текущее время: ' + (time.hours + ':' + time.minutes + ':' + time.seconds)); for (var i = 0; i < timeBuss.length-1; i++) {//Цикл по массиву с расписанием var tmp = timeBuss[i].split(':');//разбили время расписания на часы и минуты var bussTime = { hours: tmp[0], minutes: tmp[1] } tmp = timeBuss[i + 1].split(':'); var nextBussTime = { hours: tmp[0], minutes: tmp[1] } if ((time.hours >= bussTime.hours && time.hours <= nextBussTime.hours)) { var timeLeft = bussTime; } } document.getElementById("nextbusleft").innerHTML = ("Осталось минут: " + (timeLeft.minutes - time.minutes)) }; } for(var t in timeBuss) timerCurrentBuss(timeBuss[0]); </script> </head> <body> <div data-role="page"> <div data-role="content"> <ul data-role="listview"> <li><a href="#second_page">Маршрут №1</a></li> </ul> </div><!-- /content --> </div><!-- /page --> <div data-role="page" id="second_page"> <div data-role="content"> <ul data-role="listview"> <li><a href="#busstop_1_1">Конечная 1 — Конечная 2</a></li> <li><a href="#busstop_1_2">Конечная 2 — Конечная 1</a></li> </ul> </div><!-- /content --> </div><!-- /page --> <div data-role="page" id="busstop_1_1"> <div data-role="content"> <ul data-role="listview"> <li><a href="#schedule_1_1">Остановка 1</a></li> <li><a href="#schedule_1_2">Остановка 2</a></li> <li><a href="#schedule_1_3">Остановка 3</a></li> </ul> </div><!-- /content --> </div><!-- /page --> <div data-role="page" id="schedule_1_1"> <div data-role="content"> <div id="schedule">'9:30','10:30','11:40','12:30','13:20','14:06'</div> <div id="current_time"></div> <div id="nextbusleft"></div> </div><!-- /content --> </div><!-- /page --> <div data-role="page" id="schedule_1_2"> <div data-role="content"> <div id="schedule">'8:04','9:55','10:35','11:44','12:30','13:50'</div> <div id="current_time"></div> <div id="nextbusleft"></div> </div><!-- /content --> </div><!-- /page --> <div data-role="page" id="schedule_1_3"> <div data-role="content"> <div id="schedule">'7:22','8:53','9:44','10:59','11:56'</div> <div id="current_time"></div> <div id="nextbusleft"></div> </div><!-- /content --> </div><!-- /page --> </body> </html> |
Отдельный массив это timeBuss[0], или timeBuss[1], или что там еще есть. По-моему тебе этого не надо делать вообще, иначе бы ты переделал свой рендер, а не запускал его в цикле затирая предыдущий результат.
|
Цитата:
|
Всякую хрень не пиши. На какой блин "отдельной страничке"? У тебя ровно одна страница тут, один html, одно body. Визуальное представление твоей страницы - неизвестно и никогда не будет известно пока вопрос не касается визуального представления. Не пиши хрень, ибо люди просто ЧИТАЮТ и понимают то, что написано.
Понял тащемта. Надо удалить текст вот этой хрени Цитата:
Цитата:
document.getElementById("schedule_1_"+num).innerHTML= '<div data-role="content"> <div>'+time.join(',')+'</div> <div>'+'Текущее время: ' + (time.hours + ':' + time.minutes + ':' + time.seconds)+'</div> <div>'+"Осталось минут: " + (timeLeft.minutes - time.minutes)+'</div> </div>'; Для чего выпилить вручную прописанные контент во всех <div data-role="page" id="schedule_1_2">, поскольку он будет вставляться той функцией весь. Понял? |
PS Обрати внимание на конкатенацию идентификатора: "schedule_1_"+num - номер дива нужно передавать в функцию и он должен совпадать с тем, что написано в хтмл. Или вообще целиком рендери свои "отдельные странички" чтобы ничего не передавать и не искать.
for(var t in timeBuss) timerCurrentBuss(timeBuss[0],t); и в функции должно быть 2 аргумента timerCurrentBuss(time,num) Всю твою лапшу надо переделывать целиком. |
Спасибо! Начинаю понимать, извиняюсь за странички :thanks:
|
У тебя и расчет ближайшего рейса - хрень. ))) Вот смотри как можно сделать эту часть:
<!DOCTYPE html> <html lang="ru" dir="ltr"> <head> <meta charset="utf-8"> <script> var timeBuss = [ {num:13, tms:['9:30','10:30','11:40','12:30','13:20','14:06']}, {num:45, tms:['8:04','9:55','10:35','11:44','12:30','13:50']}, {num:1245, tms:['7:22','8:53','9:44','10:59','11:56']} ]; function renderBusSchedule() { var date = new Date('2016-08-19T09:28:00'), /* remove test date after testing */ time = { tt: date.getHours()+':'+date.getMinutes()+':'+date.getSeconds(), tm: date.getMinutes()+60*date.getHours() }, getTimeLeft=function(t){ for (var i=0; i<t.length; i++) { var tmp=t[i].split(':'), tm=(+tmp[1]+60*tmp[0])-time.tm; if (tm>0) return {tm:tm,i:i}; } return {tm:null,i:-1}; }; for(var tms, tl, j=0; j<timeBuss.length; j++) { tms=timeBuss[j].tms; tl=getTimeLeft(tms); if(tl.i>-1) /* it here since fckin js does not have variable references */ tms[tl.i]='<span style="color:red;">'+tms[tl.i]+'</span>'+', осталось минут: '+tl.tm; document.getElementById('schedule-'+j).innerHTML= '<div>'+ '<p>Расписание рейса № '+timeBuss[j].num+'</p>'+ '<p>'+'Сейчас: '+time.tt+'</p>'+ '<ul><li>'+tms.join('</li><li>')+'</li></ul>'+ '</div>'; } } </script> </head> <body> <div id="schedule-0"></div> <div id="schedule-1"></div> <div id="schedule-2"></div> <script>renderBusSchedule();</script> </body> </html> |
Это если требуется, чтобы эти<div id="schedule-0"></div> уже были до скрипта - это же вроде у тебя табы? - то их надо вручную писать на странице, а иначе можно сразу рендерить и писать в общий родительский элемент, и тогда у тебя появится столько "отдельных страничек", сколько будет нарисовано рейсов в массиве timeBuss
|
Часовой пояс GMT +3, время: 08:28. |