Не проходит задание 23/23

В чём тут ошибка? Код даёт визуально абсолютно тот же результат, что и в ожидаемом результате, я просто не вижу разницы. Что же не так?

Сводка
var makeElement = function (tagName, className, text) {
 element.classList.add(className);
   var element = document.createElement(tagName);
  if (text) {
    element.textContent = text;
  }
  return element;
};

var renderCards = function (product) {
  var listItem = makeElement('li', 'good');

  var title = makeElement('h2', 'good__description', product.text);
  listItem.appendChild(title);

  var picture = makeElement('img', 'good__image');
  picture.src = product.imgUrl;
  picture.alt = product.text;
  listItem.appendChild(picture);

  var price = makeElement('p', 'good__price', product.price);
  listItem.appendChild(price);
  
  var roubles = document.createElement('span');
  roubles.textContent = `₽/кг`;
  price.appendChild(roubles);

  var availabilityClass = 'good--available';
  if (!product.inStock) {
    availabilityClass = 'good--unavailable';
  }
  listItem.classList.add(availabilityClass);

  if (product.isHit) {
    listItem.classList.add('good--hit');
    var specialOffer = makeElement('p', 'good__special-offer', product.specialOffer);
    listItem.appendChild(specialOffer);
  }

  return listItem;
};


var cardList = document.querySelector('.goods');

for (var i = 0; i < cardsData.length; i++) {
  var cardItem = renderCards(cardsData[i]);
  cardList.appendChild(cardItem);
  }
  1. в функции-“конструкторе” элемента element получает раньше классы, чем объявляется, исправьте.
  2. а зачем вы в разметку span добавляете? в ТЗ такого не было.
    достаточно прописать вот так:

var price = makeElement('p', 'good__price', product.price + '₽/кг');

Как ни странно, дело было действительно в рублях. Стоило убрать span, и всё сработало.

По поводу element - не поняла, извините. Делала по аналогии с заданием, рассмотренным в этом модуле, поменяла только названия переменных.

У вас в коде:

element.classList.add(className); // операции с переменной
var element = document.createElement(tagName); // объявление переменной

Порядок должен быть другим, сначала объявление, потом операции.

1 лайк