Javascript操縱Cookie實現購物車程序
2024-09-06 12:44:26
供稿:網友
代碼如下:
/*****************************************************************************************************
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;