Вы программно генерируете JavaScript, встроенный в HTML.
Подумайте, как будет выглядеть результат. А еще лучше, , посмотрите . Не просто присваивайте resultImg.innerHTML
. Сохраните его в переменной и console.log
it.
Результат будет выглядеть примерно так:
<button onclick="feedDb(http://example.com/,football,
Вы выводите значения переменных в JavaScript где URL будет считаться синтаксической ошибкой, а слово будет обрабатываться как имя переменной.
Строковые литералы должны быть заключены в кавычки!
У вас есть второй проблема. <a>
элементы не могут содержать <button>
элементов (или наоборот). Вы никуда не ссылаетесь, не используйте <a>
.
И третье: id
должно быть уникальным в документе.
Тем не менее, данные могут включать символы со специальным значением (например, "
, '
или &
), которые могут нарушить сгенерированный результат.
Обычно это довольно опасно (и трудно отладить) генерировать исходный код, смешивая строки вместе.
Попробуйте вместо этого использовать DOM-манипуляции. Это более многословно, но значительно безопаснее.
function displayImg(imageUrl, gameName, gameSummary, gameYear, cardId) {
cardId = cardId.toString();
const b1 = document.createElement("button");
b1.classList.add("btn", "btn-sm", "btn-outline-secondary");
b1.type = "button";
b1.id = "front";
b1.textContent = "Save";
b1.addEventListener("click", () => feedDb(imageUrl,gameName,gameSummary,gameYear));
resultImg.appendChild(b1);
const b2 = document.createElement("button");
b2.classList.add("btn", "btn-sm", "btn-outline-secondary");
b2.type = "button";
b2.id = "not-front";
b2.textContent = "+ d'info";
b2.addEventListener("click", () => flipCard(cardId));
resultImg.appendChild(b2);
}