@Deman1

Как изменить считывание данных?

Добрый день, помогите изменить пути считывания
Я в js новичек и знаю минимум)
есть такой код
<div class="item_box">
    <h3 class="item_title">Samsung Galaxy S10</h3>
    <p>Цена: <span class="item_price">20</span>$</p>
    <button class="add_item" data-id="7">Добавить в корзину</button>
</div>

Мой
<div class="product">
                    <div class="product_body">
                        <div class="product_head">
                            <a class="product_image_link" href="javascript:;">
                                <img itemprop="image" src="storage\products\September2018\Y6KIFOZCLGTMncH42tWL-small.jpg" title="" alt="">
                            </a>
                            <div class="product_cost" itemprop="offers" itemscope="" itemtype="http://schema.org/Offer">
                                                                <span class="item_price" content="30">30₽</span>
                                <link itemprop="availability" href="http://schema.org/InStock">
                                <meta itemprop="priceCurrency" content="RUB">
                            </div>
                            <button class="btn btn_green btn_product" type="button" data-id="5" title="Добавить в корзину">Хочу</button>
                        </div>
                        <h3 class="product_name" itemprop="name" title="Продукт">Продукт</h3>
                        <div class="product_size">10см</div>
                        <div class="product_description" itemprop="description">
                            <p><span>Хлеб</span>, <span>Масло</span></p>
                        </div>
                    </div>
                </div>

JS
var d = document,
    itemBox = d.querySelectorAll('.item_box'), // блок каждого товара
    cartCont = d.getElementById('cart_content'); // блок вывода данных корзины
// Функция кроссбраузерная установка обработчика событий
function addEvent(elem, type, handler){
  if(elem.addEventListener){
    elem.addEventListener(type, handler, false);
  } else {
    elem.attachEvent('on'+type, function(){ handler.call( elem ); });
  }
  return false;
}
// Получаем данные из LocalStorage
function getCartData(){
  return JSON.parse(localStorage.getItem('cart'));
}
// Записываем данные в LocalStorage
function setCartData(o){
  localStorage.setItem('cart', JSON.stringify(o));
  return false;
}
// Добавляем товар в корзину
function addToCart(e){
  this.disabled = true; // блокируем кнопку на время операции с корзиной
  var cartData = getCartData() || {}, // получаем данные корзины или создаём новый объект, если данных еще нет
      parentBox = this.parentNode, // родительский элемент кнопки &quot;Добавить в корзину&quot;
      itemId = this.getAttribute('data-id'), // ID товара
      itemTitle = parentBox.querySelector('.item_title').innerHTML, // название товара
      itemPrice = parentBox.querySelector('.item_price').innerHTML; // стоимость товара
  if(cartData.hasOwnProperty(itemId)){ // если такой товар уже в корзине, то добавляем +1 к его количеству
    cartData[itemId][2] += 1;
  } else { // если товара в корзине еще нет, то добавляем в объект
    cartData[itemId] = [itemTitle, itemPrice, 1];
  }
  // Обновляем данные в LocalStorage
  if(!setCartData(cartData)){ 
    this.disabled = false; // разблокируем кнопку после обновления LS
    cartCont.innerHTML = 'Товар добавлен в корзину.';
    setTimeout(function(){
      cartCont.innerHTML = 'Продолжить покупки...';
    }, 1000);
  }
  return false;
}
// Устанавливаем обработчик события на каждую кнопку &quot;Добавить в корзину&quot;
for(var i = 0; i < itemBox.length; i++){
  addEvent(itemBox[i].querySelector('.add_item'), 'click', addToCart);
}
// Открываем корзину со списком добавленных товаров
function openCart(e){
  
  var cartData = getCartData(), // вытаскиваем все данные корзины
      totalItems = '';
  console.log(JSON.stringify(cartData));
  // если что-то в корзине уже есть, начинаем формировать данные для вывода
  if(cartData !== null){
    totalItems = '<table class="shopping_list"><tr><th>Наименование</th><th>Цена</th><th>Кол-во</th></tr>';
    for(var items in cartData){
      totalItems += '<tr>';
      for(var i = 0; i < cartData[items].length; i++){
        totalItems += '<td>' + cartData[items][i] + '</td>';
      }
      totalItems += '</tr>';
    }
    totalItems += '<table>';
    cartCont.innerHTML = totalItems;
  } else {
    // если в корзине пусто, то сигнализируем об этом
    cartCont.innerHTML = 'В корзине пусто!';
  }
  return false;
}
/* Открыть корзину */
addEvent(d.getElementById('checkout'), 'click', openCart);
/* Очистить корзину */
addEvent(d.getElementById('clear_cart'), 'click', function(e){
  localStorage.removeItem('cart');
  cartCont.innerHTML = 'Корзина очишена.';	
});
  • Вопрос задан
  • 109 просмотров
Решения вопроса 1
alex-1917
@alex-1917
Если ответ помог, отметь решением
Не благодари
www.jooom.ru/toster/cart2.html

всего надо было поменять выборку - так как верстка более многоуровневая, то надо получать более верхнего родителя и уже внутри него искать все, что нужно для корзины
parentBox = this.closest('.product_body'), // родительский элемент с классом product_body  кнопки &quot;Добавить в корзину&quot;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы