You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
aquaculture/resources/views/modules/home/car.blade.php

161 lines
3.2 KiB

<script>
/**
* 本地购物车 JS 实现
*/
function LocalCar(){}
// 本地存储的前缀
LocalCar._prefix = '__MOON__';
LocalCar._store = window.localStorage;
// 获取并且删除这个 key
LocalCar.pull = function (key) {
let val = LocalCar.get(key);
LocalCar.delete(key);
return val;
};
// 获取一个元素
LocalCar.get = function (key) {
let val = LocalCar._store.getItem(LocalCar._key(key));
return JSON.parse(val);
};
// 删除一个元素
LocalCar.delete = function (key) {
return LocalCar._store.removeItem(LocalCar._key(key));
};
// 存储元素
LocalCar.put = function (key, name, thumb, number, price) {
let product = {
id: key,
name: name,
thumb: thumb,
number: number,
price: price
};
return LocalCar._storeProduct(key, product);
};
// 自增数量
LocalCar.increment = function (key, name, thumb, number, price) {
let product = LocalCar.get(key);
if (! product) {
product = {
id: key,
thumb: thumb,
name: name,
number: 0,
price: price
};
}
product.number = parseInt(product.number) + parseInt(number);
return LocalCar._storeProduct(key, product);
};
// 同步数量
LocalCar.syncNumber = function (key, number) {
let change = 0;
let product = LocalCar.get(key);
if (! product) {
return false;
}
change = number - product.number;
product.number = number;
LocalCar._storeProduct(key, product);
return change;
};
// 获取所有
LocalCar.all = function () {
let results = [];
for (let i in LocalCar._store) {
if (LocalCar._isValidKey(i)) {
results.push(LocalCar.get(i))
}
}
return results;
};
// 删除所有购物车
LocalCar.flush = function () {
for (let i in LocalCar._store) {
if (LocalCar._isValidKey(i)) {
LocalCar.delete(i);
}
}
};
// 获取购物车数量
LocalCar.count = function () {
return LocalCar.all().length;
};
// 获取购物车商品数量
LocalCar.number = function () {
let all = LocalCar.all();
let number = 0;
for (let i in all) {
number += parseInt(all[i].number);
}
return number;
};
/****************************************
* 私有方法
*****************************************/
// 格式化存储前缀
LocalCar._key = function (key) {
// 防止重复拼接
if (LocalCar._isValidKey(key)) {
return key;
}
return LocalCar._prefix + key;
};
// 是否是存储的 key
LocalCar._isValidKey = function (key) {
return key.indexOf(LocalCar._prefix) !== -1;
};
// 存储一个对象
LocalCar._storeProduct = function (key, product) {
return LocalCar._store.setItem(LocalCar._key(key), JSON.stringify(product));
};
</script>