У меня возникли проблемы с написанием логики этого кода. Я проанализировал данные из этого большого API .
Код в настоящее время извлекает все заголовки программ (имеется несколько экземпляров одного и того же заголовка) и сравнивает его с массивом шоу поздней ночи, а затем распечатывает их один раз в собственном теге <p>
.
Я бы хотел как-то щелкнуть название программы и отобразить больше данных JSON.
Я подумал сравнить <p>
innerHTML с переменной title
и, когда щелкнул ее div, вернуть список гостей для этой конкретной программы. Я играл с логикой, и не слишком уверен, что я на правильном пути.
var data = JSON.parse(request.responseText);
var set = new Set();
var x = '';
const lateNightHosts = ['The Late Show with Stephen Colbert', 'Conan', 'Jimmy Kimmel Live'];
class TVProgram {
constructor(title, guests) {
this.title = title;
this.guests = guests;
}
// Gets title instance once to display in view
getShow(array) {
let programs = document.getElementById('programs');
let elem = '';
if (array.indexOf(this.title) !== -1){
if (!set.has(this.title)) {
set.add(this.title);
}
set.forEach((value) => {
elem += cardTemplate(value)
});
programs.innerHTML = elem;
}
getLineup() {
// if div is clicked, get name in <p>
// if name == title variable, print guests
}
}
function cardTemplate(value) {
return `
<div class = "cards">
<p class = "host">${value}</p>
</div>
`
}
//...
for (x in data){
// JSON properties
let title = data[x]._embedded.show.name;
let guests = data[x].name;
let latenight = new TVProgram(title, guests);
latenight.getShow(lateNightHosts);
}
Я бы хотел придерживаться ванильного JavaScript. Относительно новый язык, спасибо заранее!