<script>
теги не ограничены так, как вы предполагаете. Вместо этого вы должны инвертировать подход:
- Добавьте необходимые метаданные, такие как
item.departure.time
и item.arrival.time
, в атрибуты HTML5 data-
, например, data-departure-time="{{ item.departure.time}}"
. - Используйте JS для итерации по этим элементам и извлечения этих метаданных, используя Element.dataset . На каждой итерации вызывайте вашу функцию
travelTime()
с полученными данными, а затем установите для элемента innerText
возвращаемое значение. Вы можете получить доступ к значению атрибута data-departure-time
, используя, например, Element.dataset.departureTime
(обратите внимание на случай с кебабом в вашем случае с верблюдом разметки VS в JS)
p / s: обратите внимание, что Вы не должны использовать дубликаты идентификаторов, поэтому я заменил его на использование класса.
<div
class="trainShedule-timeTravel"
data-departure-time="{{ item.departure.time }}"
data-arrival-time="{{ item.arrival.time }}">
Затем, в вашем JS, просто переберите все элементы, соответствующие селектору .trainShedule-timeTravel
:
function travelTime(firstTime, secondTime){
let getDate = (string) => new Date(0, 0,0, string.split(':')[0], string.split(':')[1]);
let different = (getDate(secondTime) - getDate(firstTime));
let hours = Math.floor((different % 86400000) / 3600000);
let minutes = Math.round(((different % 86400000) % 3600000) / 60000);
let result = hours + ':' + minutes;
return result;
}
const els = document.querySelectorAll('.trainShedule-timeTravel');
Array.from(els).forEach(el => {
el.innerText = travelTime(el.dataset.departureTime, el.dataset.arrivalTime);
});