var makeElement = function (tagName, className, text, txt) {
var element = document.createElement(tagName);
element.classList.add(className);
if (text) {
element.textContent = text;
if (txt) {
element.textContent = (text+txt);}
}
return element;
};
var createCard = function (product) {
var listItem = makeElement(‘li’, ‘good’);
var title = makeElement(‘p’, ‘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 availabilityClass = ‘good–available’;
if (!product.inStock) {
availabilityClass = ‘good–unavailable’;
}
listItem.classList.add(availabilityClass);
if(product.isHit){
listItem.classList.add(‘good–hit’);}
if( product.specialOffer){
listItem.classList.add(‘specialOffer’);
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 = createCard(cardsData[i]);
cardList.appendChild(cardItem);
}
Система выводит ошибку «Автор задания не указал в коде решения переменную cardsData»?
Вчера выдавала результат совпадающий с ответом, сегдня пишет это:
TypeError
: Cannot read property ‘text’ of undefined
TypeError
: Failed to execute ‘appendChild’ on ‘Node’: parameter 1 is not of type ‘Node’.
Эти ошибки скорее всего связаны с кодом вашего решения. Присылайте, будем разбираться.
var makeElement = function (tagName, className, text, txt) {
var element = document.createElement(tagName);
element.classList.add(className);
if (text) {
element.textContent = text;
if (txt) {
element.textContent = (text+txt);}
}
return element;
};
var cardsData = function (product) {
var listItem = makeElement(‘li’, ‘good’);
var title = makeElement(‘p’, ‘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 availabilityClass = ‘good–available’;
if (!product.inStock) {
availabilityClass = ‘good–unavailable’;
}
listItem.classList.add(availabilityClass);
if(product.isHit){
listItem.classList.add(‘good–hit’);}
if( product.specialOffer){
listItem.classList.add(‘specialOffer’);
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 = cardsData(cardsData[i]);
cardList.appendChild(cardItem);
}
У вас функция cardsData называется также, как и массив изначальных данных. Ошибки в консоль падают из-за этого.
Спасибо, теперь другое пишет
“Автор задания не указал в коде решения переменную cardsData” (String)
“Автор задания не указал в коде решения переменную cardsData” (String)
“Автор задания не указал в коде решения переменную cardsData” (String)
“Всего проверок: 3, пройдено: 0” (String)
У вас сейчас эту ошибку показывает? Пришлите скриншот, пожалуйста.
Теперь пишет решение неверное, хотя совпадает с Вашим полностью.
Текстовое содержимое при создании цены нужно указывать при помощь конкатенации, то есть должно быть product.price + '₽/кг'
.