18.08.2016, 09:01
|
Новичок на форуме
|
|
Регистрация: 17.08.2016
Сообщений: 9
|
|
Передача массивов в функцию
Здравствуйте, в javascript только стал познавать, возник вопрос пока ответа не нашел, нашел на форуме скрипт с расписанием прихода транспорта, так вот, как передать другие массивы(timeBuss1, timeBuss2) с временем в функцию для расчета?
var timeBuss = ['9:30','10:30','11:40','11:45','11:50','12:30','13:20','14:06']
var timeBuss1=['8:04', '9:55',"10:35"]
var timeBuss2=['22:22','22:53' ,'23:44','23:59','00:56']
function timerCurrentBuss(time) {
var timeBuss = time;
setInterval(currentTimeForBuss, 60);
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))
};
}
timerCurrentBuss(timeBuss);
|
|
18.08.2016, 09:16
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,129
|
|
AlTiantum,
а что мешает обьединить массивы?
|
|
18.08.2016, 10:16
|
Новичок на форуме
|
|
Регистрация: 17.08.2016
Сообщений: 9
|
|
Сообщение от рони
|
AlTiantum,
а что мешает обьединить массивы?
|
Предлагаете их объединить в многомерный массив? И считывать каждый массив от туда. Думал об этом и попробовал, но не получилось
|
|
18.08.2016, 10:50
|
Профессор
|
|
Регистрация: 08.07.2016
Сообщений: 1,332
|
|
Сообщение от AlTiantum
|
как передать
|
Видимо не как, а когда, поскольку как - нарисовано в последней строчке. Теперь придумай когда их передавать и передавай точно так же.
|
|
18.08.2016, 10:52
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,129
|
|
AlTiantum,
сделать 1 массив из 3 и отсортировать
|
|
18.08.2016, 10:53
|
Профессор
|
|
Регистрация: 08.07.2016
Сообщений: 1,332
|
|
Или тебе подряд надо запихивать?
var times = {
0:['9:30','10:30','11:40','11:45','11:50','12:30','13:20','14:06'],
1:['8:04', '9:55',"10:35"],
2:['22:22','22:53' ,'23:44','23:59','00:56']
}
for(var t in times)
timerCurrentBuss(times[t]);
Предвосхищаю вопрос как вывести метку номера. )))
|
|
18.08.2016, 11:07
|
Новичок на форуме
|
|
Регистрация: 17.08.2016
Сообщений: 9
|
|
Спасибо! Вроде дошло, решил для саморазвития js изучить.
|
|
18.08.2016, 11:11
|
Профессор
|
|
Регистрация: 08.07.2016
Сообщений: 1,332
|
|
Ну то есть допустим номер маршрута - это метка, следовательно придется модифицировать функцию, чтобы она выводила все маршруты на ближайшее время.
|
|
18.08.2016, 12:33
|
Новичок на форуме
|
|
Регистрация: 17.08.2016
Сообщений: 9
|
|
Сообщение от warren buffet
|
выводила все маршруты на ближайшее время.
|
Было бы конечно не плохо, так сделать, но с моими знаниями js, это будет очень тяжело, лучше начать с малого
|
|
18.08.2016, 13:42
|
Профессор
|
|
Регистрация: 08.07.2016
Сообщений: 1,332
|
|
Если не менять структуру массивов, придется добавить еще аргумент.
timerCurrentBuss(time,num);
и поменять
document.getElementById("nextbusleft").innerHTML = ("Осталось минут: " + (timeLeft.minutes - time.minutes))
на
document.getElementById("nextbusleft").insertAdjac entHTML("<div>До рейса ' +num+' осталось минут: " + (timeLeft.minutes - time.minutes)+'<div>');
но тогда перед запуском цикла, придется стирать все
document.getElementById("nextbusleft").innerHTML=' ';
|
|
|
|