Вот мой HTML-код, показывающий два примера «полей событий» и событий внутри.
КОД:
Код: Выделить всё
$(document).ready(function() {
console.log('started');
/***
Create the ical file text string and place the text string inside the element
***/
$('div.eventbox').each((i, element) => {
/** ISSUE OCCURS HERE on prop/attr part: **/
var startDateTime = $(element).find('div.eventtime > meta[itemprop=startdate]').prop('content').toString().replace('/[^0-9T]/g', '').trim();
var endDateTime = $(element).find('div.eventtime > span[itemprop=enddate]').attr('content').toString().replace('/[^0-9T]/g', '').trim();
var dataChunk = 'BEGIN:VCALENDAR\n' +
'VERSION:2.0\n' +
'BEGIN:VEVENT\n' +
'SUMMARY:' + $(element).find('div.eventtitle > h3').text().toString() + '\n' +
'DTSTART:' + startDateTime + '00Z\n' +
'DTEND:' + endDateTime + '00Z\n' +
'DTSTAMP:20240701T083539Z\n' +
'UID:' + startDateTime + '-' + $(element).find('div.eventtitle > h3').text().replace('/[^a-z0-9]/gi').toString() + '\n' +
'DESCRIPTION:' + $(element).find('div.eventdescr').text().replace(/\s+/g, ' ').trim() + '\n' +
'LOCATION:' + $(element).find('span [itemprop=address]').text().replace(/\s+/g, ' ').trim() + '\n' +
'ORGANIZER:' + $(element).find('div.eventorg > strong > span').text() + '\n' +
'STATUS:CONFIRMED\n' +
'PRIORITY:0\n' +
'END:VEVENT\n' +
'END:VCALENDAR';
console.log(dataChunk);
$(this).child('div.ical').text() = dataChunk;
});
});
Код: Выделить всё
Two Example Events
[url=#]Ical Icon[/url]
14:30
Talk : A Title
Organised by: [b]Some Organisers
[/b]
Venue: [b]
Venue Theatre,
Town Name
AB123 4BY
[/b]
The Northern Lights provide one of the most spectacular natural phenomena on Earth.
[url=#]Ical Icon[/url]
10:30
– 11:00
Baby Bounce and Tot Rock
Venue: [b]
Town Library,
Hospital Road, Dil
AB34 6RT
[/b]
Every Tuesday and Sunday - For babies and toddlers of all ages. Instruments, clapping and action rhymes. A Living Hell.
Who to Contact: [b] A Town Library, by phone 123455 46557, or email [/b]
ЦЕЛЬ:
Часть который ломается, пытается получить этот элемент DOM:
Код: Выделить всё
Код: Выделить всё
"20240702T1430"
Код: Выделить всё
"20240702T1030"
Это всегда в этой строке:
Код: Выделить всё
var startDateTime = $(element).find('div.eventtime > meta [itemprop=startDate]').prop( 'content' ).replace('/[^0-9T]/g','').trim().toString();
Uncaught TypeError: $(...).find(...).attr(...) не определено
Уже пытались решить:
[*]Использовал элемент, $(element), а также использовал $(this) (и соответствующим образом корректировал синтаксис каждого из них).
[*]Заменили .attr(... ) с .prop(...) и наоборот.
[*]Прочитал: jQuery .find() внутри .each() не работает, что, к сожалению, не помогло не помогло.
[*]Прочитал: jQuery .each() — практическое использование? что тоже, к сожалению, не помогло.
[*]Я сохранил атрибуты в нижнем регистре, чтобы избежать проблемы с верблюжьим регистром и тире, но это также не помогает устранить ошибку.
Что мне не хватает?!
Я уверен, что это глупая проблема, но я просто не понимаю, чего мне не хватает!
Подробнее здесь: https://stackoverflow.com/questions/786 ... oesnt-work