Изменить скрипт добавления корзину
Я нашел скрипт корзины написанный исключительно на JS, вот он
https://codepen.io/chrisachinga/pen/MWwrZLJ
Мне необходимо чтобы при добавлении товара в корзину количество товара бралось из data аттрибута, скажем data-count. Сейчас при добавлении товара всегда добавляется одна позиция.
Пытался в событии AddItem менять количество, но оно срабатывает только единожды(если товар не добавлялся ранее):
// Add item
$('.add-to-cart').click(function (event) {
event.preventDefault();
var name = $(this).data('name');
var price = Number($(this).data('price'));
var count = Number($(this).data('count'));
shoppingCart.addItemToCart(name, price, count);
displayCart();
Буду признателен за подсказку или помощью.
Ответы (2 шт):
Автор решения: ordman
→ Ссылка
Нужно внести изменение в методе addItemToCart:
// Add to cart
obj.addItemToCart = function(name, price, count) {
for(var item in cart) {
if(cart[item].name === name) { //Если товар в корзине
//cart[item].count ++; //Убираем инкремент на 1
cart[item].count += count;//Добавляем количество
saveCart();
return;
}
}
var item = new Item(name, price, count);
cart.push(item);
saveCart();
}
// +1
$('.show-cart').on("click", ".plus-item", function(event) {
var name = $(this).data('name')
//shoppingCart.addItemToCart(name);
shoppingCart.addItemToCart(name, null, 1);
displayCart();
})
Автор решения: Rudi
→ Ссылка
Внёс такие изменения и в корзину добавляется количество из data-count вписанного в тег <a href="#"..... эти куски кода скопировал с комментариями, чтобы легче было ориентироваться.
// Add to cart
obj.addItemToCart = function(name, price, count) {
for(var item in cart) {
if(cart[item].name === name) {
//cart[item].count ++;//заменено на
cart[item].count += count;// это
saveCart();
return;
}
}
var item = new Item(name, price, count);
cart.push(item);
saveCart();
}
// Set count from item
// *****************************************
// Triggers / Events
// *****************************************
// Add item
$('.add-to-cart').click(function(event) {
event.preventDefault();
var name = $(this).data('name');
var price = Number($(this).data('price'));
var count = Number($(this).data('count'));//добавлено
shoppingCart.addItemToCart(name, price, count);
displayCart();
});
// Clear items
<!-- Main -->
<div class="container">
<div class="row">
<div class="col">
<div class="card" style="width: 20rem;">
<img class="card-img-top" src="http://www.azspagirls.com/files/2010/09/orange.jpg" alt="Card image cap">
<div class="card-block">
<h4 class="card-title">Orange</h4>
<p class="card-text">Price: $0.5</p>
<!-- добавлено data-count='10' --><a href="#" data-name="Orange" data-price="0.5" data-count='10' class="add-to-cart btn btn-primary">Add to cart</a>
</div>
</div>
</div>
<div class="col">
<div class="card" style="width: 20rem;">
<img class="card-img-top" src="http://images.all-free-download.com/images/graphicthumb/vector_illustration_of_ripe_bananas_567893.jpg" alt="Card image cap">
<div class="card-block">
<h4 class="card-title">Banana</h4>
<p class="card-text">Price: $1.22</p>
<!-- добавлено data-count='17' --><a href="#" data-name="Banana" data-price="1.22" data-count='17' class="add-to-cart btn btn-primary">Add to cart</a>
</div>
</div>
</div>
<div class="col">
<div class="card" style="width: 20rem;">
<img class="card-img-top" src="https://3.imimg.com/data3/IC/JO/MY-9839190/organic-lemon-250x250.jpg" alt="Card image cap">
<div class="card-block">
<h4 class="card-title" >Lemon</h4>
<p class="card-text">Price: $5</p>
<!-- добавлено data-count='29' --><a href="#" data-name="Lemon" data-price="5" data-count='29' class="add-to-cart btn btn-primary">Add to cart</a>
</div>
</div>
</div>
</div>
</div>
<!-- Modal -->