Javascript操縱Cookie實現購物車程序
2024-09-06 12:43:22
供稿:網友
 
 代碼如下:
/***************************************************************************************************** 
Name    購物車 
Version    1.1 
Author    Vanni(凡林) url:www.27sea.com QQ:303590170 
CreateDate  2005-05-31 
Description 
  此類是基于JavaScript和客戶端Cookie,請保證客戶端開啟Cookie 
  數據保持(默認24*30小時)可以通過 this.expire=? 小時來指定 
  類中兩自帶的兩個對象 typeObj 和 proObj 均有兩個相同屬性名: name 和 value  
類中數據存儲形式如下----------------------------------- 
Array( 
new typeObj('汽車',array( 
    new porObj('三菱',200), 
    new proObj('本田',500) 
) 
  ), 
  new typeObj('蛋',array( 
    new proObj('雞蛋',10), 
    new proObj('鴨蛋',20) 
  ) 
} 
Cookie 存取形式為[使用escape()函數加密過]-------------- 
  購物車名 = 汽車#三菱:200|本田:500,蛋#雞蛋:10|鴨蛋:20 
注意:客戶端存Cookie時,不會出現問題。如果要循環存儲的話,可能會出現有些存入,而有些未存入 
   解決方法:見下例(獲得URL里的sales的數量,并存入Cookie) 
文件:/depot/compareproduct.php 中的JS代碼片段 
<script language="javascript"> 
var car=new Car('compare'); 
var typeName='list'; 
car.delType(typeName);    //將先前對比的產品清除 
//得到URL里的參數,并分隔成數組 
var url=location.href; 
var start=url.lastIndexOf('?sales='); 
var end=url.indexOf('&'); 
if(end==-1)end=url.length; 
var urlparam=url.substring(url.lastIndexOf('?sales=')+7, end ).split(','); 
function setPageVal(){ 
  if(car.getPro(typeName).length==urlparam.length)return;    //關鍵部分,如果數組長度不相等說明,有些Cookie沒有存入 
  else{ 
    car.addType(typeName);            //增一個類別 
    for(i=0;i<urlparam.length;i++){ 
      car.addPro(typeName,urlparam[i],'');  //增加對比產品,如果存在,返回假 
    } 
    setTimeout('setPageVal();',100);      //再次調用自身,沒有用遞歸,是因為遞歸速度太快,仍會有存不進的問題 
  } 
} 
setPageVal();                    //初始化數據 
function delItem(itemname){ 
  car.delPro(typeName,itemname); 
  var carData=car.getPro(typeName); 
  var url=''; 
  var carlen=carData.length; 
  if(carlen>1){ 
    for(i=0;i<carData.length;i++){ 
      if(i==0)  url =carData[i].name; 
      else    url+=','+carData[i].name;