欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

js如何實(shí)現(xiàn)購(gòu)物車(chē)功能

這篇文章主要介紹了js如何實(shí)現(xiàn)購(gòu)物車(chē)功能,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

做網(wǎng)站、成都網(wǎng)站建設(shè)過(guò)程中,需要針對(duì)客戶的行業(yè)特點(diǎn)、產(chǎn)品特性、目標(biāo)受眾和市場(chǎng)情況進(jìn)行定位分析,以確定網(wǎng)站的風(fēng)格、色彩、版式、交互等方面的設(shè)計(jì)方向。成都創(chuàng)新互聯(lián)公司還需要根據(jù)客戶的需求進(jìn)行功能模塊的開(kāi)發(fā)和設(shè)計(jì),包括內(nèi)容管理、前臺(tái)展示、用戶權(quán)限管理、數(shù)據(jù)統(tǒng)計(jì)和安全保護(hù)等功能。

JS是什么

JS是JavaScript的簡(jiǎn)稱(chēng),它是一種直譯式的腳本語(yǔ)言,其解釋器被稱(chēng)為JavaScript引擎,是瀏覽器的一部分,主要用于web的開(kāi)發(fā),可以給網(wǎng)站添加各種各樣的動(dòng)態(tài)效果,讓網(wǎng)頁(yè)更加美觀。

購(gòu)物車(chē)實(shí)現(xiàn)3種方式

1、利用cookie

優(yōu)點(diǎn):不占用服務(wù)器資源,可以永遠(yuǎn)保存,不用考慮失效的問(wèn)題
缺點(diǎn): 對(duì)購(gòu)買(mǎi)商品的數(shù)量是有限制的,存放數(shù)據(jù)的大小 不可以超過(guò)2k,用戶如果禁用cookie那么就木有辦法購(gòu)買(mǎi)商品,卓越網(wǎng)實(shí)現(xiàn)了用戶當(dāng)用戶禁用cookie,也可以購(gòu)買(mǎi)。

2、利用 session

優(yōu)點(diǎn):用戶禁用cookie,也可以購(gòu)物
缺點(diǎn):占用服務(wù)器資源,要考慮session失效的問(wèn)題

3、利用數(shù)據(jù)庫(kù)

優(yōu)點(diǎn):可以記錄用戶的購(gòu)買(mǎi)行為,便于數(shù)據(jù)分析用戶的喜好,推薦商品
缺點(diǎn):給數(shù)據(jù)庫(kù)造成太大的壓力,如果數(shù)據(jù)量很大的話。

購(gòu)物車(chē)需求分析

1、可以添加商品到購(gòu)物車(chē)中

2、可以刪除購(gòu)物車(chē)中的商品

3、可以清空購(gòu)物車(chē)

4、可以更新購(gòu)物車(chē)的商品

5、可以結(jié)算

js代碼

/**
 * Created by Administrator on 2017/9/3.
 */


/***
 * 購(gòu)物車(chē)操作模塊
 *
 */

//商品類(lèi)
/***
 * @name item
 * @example
  item(sku, name, price, quantity)
 * @params {string} sku 商品的標(biāo)示
 * @params {string} name 商品的名字
 * @param {number} price 商品的價(jià)格
 * @param {number} quantity 商品的數(shù)量
 */
function item(sku, name, price, quantity){
  this.sku = sku;
  this.name = name;
  this.price = price;
  this.quantity = quantity;
}

var shopCart = function(window){

  "use strict";
  //全局變量
  // note new new Date("2020-12-23") 在ie下面報(bào)錯(cuò),不支持這樣的語(yǔ)法
  var items = [],cartName='kuaidian_shop_cart',expires = new Date( new Date().getTime()+86400000*30 )
  ,debug = true,decimal = 2;
  var options = {
    'cartName' : cartName, //cookie的名字
    'expires' : expires, //cookie失效的時(shí)間
    'debug' : debug, //是否打印調(diào)試信息
    'decimal' : decimal, //錢(qián)的精確到小數(shù)點(diǎn)后的位數(shù)
    'callback' : undefined
  };


  //暴露給外部的接口方法
  return {
    inited : false,
    init: function(option){
      //判斷用戶是否禁用cookie
      if(!window.navigator.cookieEnabled ){
        alert('您的瀏覽器不支持cookie無(wú)法使用購(gòu)物車(chē)!,請(qǐng)?jiān)O(shè)置允許設(shè)置cookie。');
        return false;
      }
      //從cookie中獲取購(gòu)物車(chē)中的數(shù)據(jù)
      this.inited = true;
      if(option){
        extend(options,option);
      }
      var cookie = getCookie(options.cartName);
      if(typeof cookie === 'undefined'){
        setCookie(options.cartName,'',options.expires);
      }else{
        //每個(gè)item之間用&分開(kāi),item的屬性之間用|分割
        var cookie = getCookie(options.cartName);
        if(cookie){
          var cItems = cookie.split('&');
          for(var i=0,l=cItems.length;i<l;i++){
            var cItem = cItems[i].split('|');
              var item = {};
              item.sku = cItem[0] || '';
              item.name = cItem[1] || '';
              item.price = cItem[2] || '';
              item.quantity = cItem[3] || '';
              items.push(item);
          };
        };

      };
    },
    findItem: function(sku){//根據(jù)sku標(biāo)示查找商品
      //如果木有提供sku,則返回所有的item
      if(sku){
        for(var i=0,l=items.length;i<l;i++){
          var item = items[i];
          if(item.sku === sku){
            return item;
          }
        }
        return undefined;
      }else{
        return items;
      }

    },
    getItemIndex : function(sku){ //獲取item在items的數(shù)組下標(biāo)
      for(var i=0,l=items.length;i<l;i++){
        var item = items[i];
        if(item.sku == sku){
          return i;
        }
      }
      //木有找到返回-1
      return -1;
    },
    addItem: function(item){ //增加一個(gè)新商品到購(gòu)物車(chē)
      //添加一個(gè)商品
      if(this.findItem(item.sku)){
        if(options.debug){
          _log('商品已經(jīng)存在了');
          return false;
        }
      }
      items.push(item);
      _saveCookie();
      return true;
    },
    delItem: function(sku){ //從購(gòu)物車(chē)中刪除一個(gè)商品
      //刪除一個(gè)商品
      var index = this.getItemIndex(sku);
      if(index > -1){
        items.splice(index,1);
        _saveCookie();
      }else{
        if(options.debug){
          _log('商品不存在');
          return false;
        }
      }
    },
    updateQuantity: function(item){ //更新商品的數(shù)量
      //更新一個(gè)商品
      var index = this.getItemIndex(item.sku);
      if(index > -1){
        items[index].quantity = item.quantity;
        _saveCookie();
      }else{
        if(options.debug){
          _log('商品不存在');
          return false;
        }
      }
    },
    emptyCart: function(){
      //清空數(shù)組
      items.length = 0;
      _saveCookie();
    },
    checkout: function(){
      //點(diǎn)擊結(jié)算后的回調(diào)函數(shù)
      if(options.callback){
        options.callback();
      }
    },
    getTotalCount: function(sku){
      //獲取購(gòu)物車(chē)商品的數(shù)量,如果傳某個(gè)商品的id,那么就返回該商品的數(shù)量
      var totalCount = 0;
      if(sku){
        totalCount = (typeof this.findItem(sku) === 'undefined' ? 0 : this.findItem(sku).quantity );
      }else{
        for(var i=0,l=items.length;i<l;i++){
          totalCount += (parseInt(items[i].quantity) === 'NaN' ? 0 : parseInt(items[i].quantity )) ;
        }
      }
      return totalCount;
    },
    getTotalPrice : function(sku){
      //獲取購(gòu)物車(chē)商品的總價(jià)格 ,如果傳某個(gè)商品的id,那么就返回該商品的總價(jià)格
      var totalPrice = 0.0;
      if(sku){
        var num = parseInt((typeof this.findItem(sku) === 'undefined' ? 0 : this.findItem(sku).quantity )),
        price = parseFloat((typeof this.findItem(sku) === 'undefined' ? 0 : this.findItem(sku).price ));
        num = num=== 'NaN' ? 0 : num;
        price = price === 'NaN' ? 0 : price;
        totalPrice = price * num;
      }else{
        for(var i=0,l=items.length;i<l;i++){
          totalPrice += (parseFloat(items[i].price ) * parseInt(items[i].quantity));
        }
      }
      return totalPrice.toFixed(options.decimal);
    },
    getCookie : getCookie,
    setCookie : setCookie
  };


  /**
   * 設(shè)置cookie
   * @name setCookie
   * @example
    setCookie(name, value[, options])
   * @params {string} name 需要設(shè)置Cookie的鍵名
   * @params {string} value 需要設(shè)置Cookie的值
   * @params {string} [path] cookie路徑
   * @params {Date} [expires] cookie過(guò)期時(shí)間
   */
  function setCookie(name, value, options) {
    options = options || {};
    var expires = options.expires || null;
    var path = options.path || "/";
    var domain = options.domain || document.domain;
    var secure = options.secure || null;
    /**
    document.cookie = name + "=" + escape(value)
    + ((expires) ? "; expires=" + expires.toGMTString() : "")
    + "; path=" + path
    + "; domain=" + domain ;
    + ((secure) ? "; secure" : "");
    */
    var str = name + "=" + encodeURIComponent(value)
    + ((expires) ? "; expires=" + expires.toGMTString() : "")
    + "; path=/";
    document.cookie = str;
  };

  /**
   * 獲取cookie的值
   * @name getCookie
   * @example
    getCookie(name)
   * @param {string} name 需要獲取Cookie的鍵名
   * @return {string|null} 獲取的Cookie值,獲取不到時(shí)返回null
   */
  function getCookie(name) {
    var arr = document.cookie.match(new RegExp("(^| )" + name
        + "=([^;]*)(;|$)"));
    if (arr != null) {
      return decodeURIComponent(arr[2]);
    }
    return undefined;
  };

  //***********************私有方法********************/
  function _saveCookie(){
    var i=0,l=items.length;
    if(l>0){
      var tItems = [];
      for(;i<l;i++){
        var item = items[i];
        tItems[i] = item.sku + '|' +item.name + '|' + item.price + '|' + item.quantity;
      };
      var str = tItems.join('&');
      setCookie(options.cartName, str, {expires:options.expires});
    }else{
      setCookie(options.cartName, '', {expires:options.expires});
    }

  };

  //***********************工具方法********************/
  //顯示調(diào)試信息
  function _log(info){
    if(typeof console != 'undefined'){
      console.log(info);
    }
  };
  //繼承屬性
  function extend(destination, source) {
    for ( var property in source) {
      destination[property] = source[property];
    }
  };
}(typeof window === 'undifined' ? this: window);

HTML頁(yè)面簡(jiǎn)單調(diào)用

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>

</head>
<body>

  <script type="text/javascript" src="./shop.js"></script>

  <script>

    shopCart.init({
      'decimal' : 4
      });

    var a = new item('aa','bb',12,22);
    shopCart.addItem(a); //添加商品到購(gòu)物車(chē),參數(shù)item
    shopCart.delItem('12345'); //從購(gòu)物車(chē)中刪除商品,參數(shù)squ
//    shopCart.emptyCart(); //清空購(gòu)物車(chē)
    item.quantity = 4;
    alert(shopCart.getTotalPrice()); //獲取購(gòu)物車(chē)中的數(shù)量,參數(shù)squ


    shopCart.findItem();//根據(jù)sku標(biāo)示查找商品,參數(shù)squ
      //如果木有提供sku,則返回所有的item
    shopCart.getItemIndex('aa') //獲取item在items的數(shù)組下標(biāo),參數(shù)squ
    shopCart.updateQuantity(a) //更新商品的數(shù)量,參數(shù)item
    shopCart.getTotalCount()//獲取購(gòu)物車(chē)商品的數(shù)量,如果傳某個(gè)商品的id,那么就返回該商品的數(shù)量,參數(shù)squ
  </script>

</body>
</html>

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“js如何實(shí)現(xiàn)購(gòu)物車(chē)功能”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

當(dāng)前題目:js如何實(shí)現(xiàn)購(gòu)物車(chē)功能
分享鏈接:http://aaarwkj.com/article44/gdioee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、全網(wǎng)營(yíng)銷(xiāo)推廣網(wǎng)站制作、做網(wǎng)站網(wǎng)站改版、網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
国产三级国产精品国产国在线观看| 日本人妻丰满熟妇久久| 99国产精品欧美一区二区| 日本精品女优一区二区三区四区| 人妻有码av中文字幕久久| 97热久久精品中文字幕一区| 欧美一区二区三区久久束缚| 国产亚洲精品久在线| 日韩精品中文字幕国产精品| 日韩免费av在线观看| 91久久国产香蕉熟女| 日本一区二区三在线观看| 国产乱肥老妇国产一区二| 亚洲视频在线男人天堂| 精品欧美一区二区三久久| 欧美熟女av在线观看| 手机不卡在线观看av| 中文字幕一区二区三区三级| 日本一区中文字幕欧美| 午夜看片国产操黑丝91网| 久久免费观看性生活片| 91免费版在线观看网址| 亚洲毛片高清一区二区三区| 国产精品一区二区三区国产| 欧美丝袜熟女日韩亚洲| 国产男女猛进猛出精品91| 欧美护士激情第一欧美精品| 日本区一区二区三啪啪| 欧美 日韩亚洲一区| 国产亚洲精品第一最新| 一区二区三区欧美日韩| 避暑地堕落人妻中文字幕| 日本成人午夜在线观看| 精品亚洲一区二区在线| 国产精品福利午夜在线观看| 国产成人精品久久久亚洲| 午夜日本大胆裸体艺术| 日韩二区三区在线视频| 一区二区不卡日韩av| 中文字幕人妻久久一区| 相泽南亚洲一区二区在线播放|