var updateCards = function (cards) {
var items = document.querySelectorAll('.goods .good'); // коллекция из html-кода
for (var i = 0; i < items.length; i++) {
var item = items[i]; // текущий элемент коллекции
var good = cards[i]; // текущий элемент массива объектов
var itemAvailability = 'good--available';
var itemHit = 'good--hit';
if (!good.inStock) {
itemAvailability = 'good--unavailable';
}
item.classList.add(itemAvailability);
if (good.isHit) {
item.classList.add(itemHit);
}
}
};
updateCards(assortmentData);
var updateCards = function(array){
var elements = document.querySelectorAll(’.good’);
for(var i = 0; i < array.length; i++){
var element = elements[i];
var product = array[i];
выполнил задание, но сделать через строковую переменную как в прошлом задании так и не получилось, почему-то программа работает в этом случае некорректно, долго сидел пытался понять в чём дело, но безрезультатно. И даже когда всё таки выполнил прям присвоением строки с названием класса и задача засчиталась, то в консоли всё равно появляется ошибка “Cannot read property ‘classList’ of undefined”. Не понимаю в чём проблема.
var updateCards = function(assortments) {
var icecreamObjects = document.querySelectorAll(’.good’);
for (var i=0; i<icecreamObjects.length; i++) {
var assortment = assortments[i];
if (assortment.inStock) {
var goodAvailability = ‘good–available’}
else {goodAvailability = ‘good–unavailable’
};
if (assortment.isHit) {
var goodHit = 'good--hit'};
var icecreamObject = icecreamObjects[i];
icecreamObject.classList.add(goodAvailability, goodHit);
};
var updateCards = function(assort) {
var goods = document.querySelectorAll('.good');
for (i = 0; i < goods.length; i++) {
if (assort[i].isHit) {
goods[i].classList.add('good--hit');
}
if (assort[i].inStock) {
goods[i].classList.add('good--available');
} else {
goods[i].classList.add('good--unavailable');
}
}
}
updateCards(assortmentData);
мне кажется нет смысла добавлять класс available даже в CSS, по логике товар либо есть сам по себе либо unavailable, по этому я вообще исключил это условие у себя в задаче
var updateCards = function (assortmentData) {
var elements = document.querySelectorAll('.good');
for (var i = 0; i < elements.length; i++) {
elements[i].classList.add(assortmentData[i].inStock ? 'good--available' : 'good--unavailable');
assortmentData[i].isHit ? elements[i].classList.add('good--hit') : null;
};
};
updateCards(assortmentData);
Ты выбираешь узлы методом querySelectorAll, который дает на выходе псевдомассив объектов, и потом пытаешься псевдомассиву добавить класс. Добавляй класс конкретному объекту. Объектом является good[1], например.