更新cookie值。

daswcszxw 2017-09-20 11:37:00
Cookie存了个这种格式的字符串。
TIT+ID+CID,TIT+ID+CID


thisCps = $(this).attr('cps');//CID
bookHis = thisTitle + "+" + thisUrl+ "+" +thisCps;
if(bookRead != null && bookRead != 'undefined'){
for(i=0;i<readList.length;i++){//serach
ibookInfo = readList[i].split("+");
if(ibookInfo[0] == thisTitle && ibookInfo[1] == thisUrl && ibookInfo[2] == thisCps){//tit id cps
return false;
}else if(ibookInfo[0] == thisTitle && ibookInfo[1] == thisUrl && ibookInfo[2] != thisCps){//tit id
console.log(i,ibookInfo,bookHis,bookRead);

//Cookie.set("bookH5Read", bookHis + "," + bookRead);
}else{

}
}
}else{
Cookie.set("bookH5Read", bookHis);
}

在TIT+ID相同的情况下,替换CID。
现在操作是每次插入一条新的数据。
也知道先吧数据读取出来,解析成一个变量,再写回去。可跳不出来了。
求指点。
...全文
541 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
daswcszxw 2017-09-21
  • 打赏
  • 举报
回复


for(i=0;i<readList.length;i++){//serach
				ibookInfo = readList[i].split("+");
				if(ibookInfo[0] == thisTitle && ibookInfo[1] == thisUrl && ibookInfo[2] == thisCps){//tit id cps
					return false;
				}else if(readList[i].indexOf(thisTitle + "+" + thisUrl+ "+")==0){//tit id
					readList[i] = bookHis;
					Cookie.set("bookH5Read", readList);  
					break;
				}
			}
			if(i==readList.length){
				Cookie.set("bookH5Read", bookHis + "," + bookRead);   
			}

//昨天晚上已经搞定了。
琢磨的好久,才想到这么替换当前I。
readList[i] = bookHis;


var Cookie = {
	set: function(name, value, expires, path, domain) {
		if (typeof expires == "undefined") {
			expires = new Date(new Date().getTime() + 1000 * 3600 * 24 * 365);
		}
		document.cookie = name + "=" + escape(value) + ((expires) ? "; expires=" + expires.toGMTString() : "") + ((path) ? "; path=" + path: "; path=/") + ((domain) ? ";domain=" + domain: "");
	},
	get: function(name) {
		var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
		if (arr != null) {
			return unescape(arr[2]);
		}
		return null;
	},
	clear: function(name, path, domain) {
		if (this.get(name)) {
			document.cookie = name + "=" + ((path) ? "; path=" + path: "; path=/") + ((domain) ? "; domain=" + domain: "") + ";expires=Fri, 02-Jan-1970 00:00:00 GMT";
		}
	}
};
//Cookie操作。
  • 打赏
  • 举报
回复
url应该唯一吧,对比第二项就行了,而且感觉你逻辑有问题,应该在url匹配就更新了,还判断下标2干嘛 Cookie.set怎么写的,你应该是更新整个cookie吧,看你代码只更新一条记录的?而且bookRead是什么东东。。

    thisCps = $(this).attr('cps');//CID
    bookHis = thisTitle + "+" + thisUrl+ "+" +thisCps;
    if (bookRead != null && bookRead != 'undefined') {
        var find = false;
        for(i=0;i<readList.length;i++){
            ibookInfo = readList[i].split("+");
            if (ibookInfo[1] == thisUrl ) {//找到此项更新
                readList[i] = bookHis;
                find = true;
                break;
            }
        }
        if (!find) readList[readList.length] = bookHis;////////////新增

        //你应该更新整个cookie吧,cookie存储readList,而不是bookHis。。而且bookHis是什么鬼。。
        Cookie.set("bookH5Read", readList);
    }else{
        //Cookie.set("bookH5Read", bookHis);
    }


Web开发学习资料推荐
配置chrome支持本地(file协议)ajax请求
easyui datebox设置日期范围
天际的海浪 2017-09-20
  • 打赏
  • 举报
回复
要在循环完都没有匹配的情况下才增加

for(i=0;i<readList.length;i++){//serach
    ibookInfo = readList[i].split("+");
    if(ibookInfo[0] == thisTitle && ibookInfo[1] == thisUrl && ibookInfo[2] == thisCps){//tit id cps
        return false;
    //}else if(ibookInfo[0] == thisTitle && ibookInfo[1] == thisUrl && ibookInfo[2] != thisCps){//tit id
    }else if(readList[i].indexOf(thisTitle + "+" + thisUrl+ "+")==0){//tit id
        Cookie.set("bookH5Read", bookHis);
        break;
	}
}
if(i==readList.length){
	Cookie.set("bookH5Read", bookHis + "," + bookRead);   
}
daswcszxw 2017-09-20
  • 打赏
  • 举报
回复
引用 3 楼 jslang 的回复:
要在循环完都没有匹配的情况下才增加

for(i=0;i<readList.length;i++){//serach
    ibookInfo = readList[i].split("+");
    if(ibookInfo[0] == thisTitle && ibookInfo[1] == thisUrl && ibookInfo[2] == thisCps){//tit id cps
        return false;
    //}else if(ibookInfo[0] == thisTitle && ibookInfo[1] == thisUrl && ibookInfo[2] != thisCps){//tit id
    }else if(readList[i].indexOf(thisTitle + "+" + thisUrl+ "+")==0){//tit id
        Cookie.set("bookH5Read", bookHis);
        break;
	}
}
if(i==readList.length){
	Cookie.set("bookH5Read", bookHis + "," + bookRead);   
}
不行,替换不了。 break前只插入bookHis,就会覆盖整个字符串,不是替换的readList[i],导致记录多条变一条。例如三条变一条数据。 break前插入bookHis + "," + bookRead 本条记录+历史记录又变成新增。例如三条+一条,变四条。
天际的海浪 2017-09-20
  • 打赏
  • 举报
回复

thisCps = $(this).attr('cps');//CID
bookHis = thisTitle + "+" + thisUrl+ "+" +thisCps;
if(bookRead != null && bookRead != 'undefined'){
    for(i=0;i<readList.length;i++){//serach
        if(readList[i]==bookHis){//tit id cps
            return false;
        }else if(readList[i].indexOf(thisTitle + "+" + thisUrl+ "+")==0){//tit id
            console.log(i,ibookInfo,bookHis,bookRead);
        
            //Cookie.set("bookH5Read", bookHis + "," + bookRead);	
        }else{
            
        }
    }
}else{
    Cookie.set("bookH5Read", bookHis);
}
daswcszxw 2017-09-20
  • 打赏
  • 举报
回复


for(i=0;i<readList.length;i++){//serach
ibookInfo = readList[i].split("+");
if(ibookInfo[0] == thisTitle && ibookInfo[1] == thisUrl && ibookInfo[2] == thisCps){//tit id cps
return false;
//}else if(ibookInfo[0] == thisTitle && ibookInfo[1] == thisUrl && ibookInfo[2] != thisCps){//tit id
}else if(readList[i].indexOf(thisTitle + "+" + thisUrl+ "+")==0){//tit id
//console.log(i,readList[i],ibookInfo,bookHis,bookRead);
Cookie.set("bookH5Read", bookHis);
}else{
Cookie.set("bookH5Read", bookHis + "," + bookRead);
}
}


在数据只有一组时,TIT+ID+CID,可以正常修改CID。
在数据有多组时,修改不了对应的那组数据,会新增一组。


因为在对比第一组时,TIT+ID 是不一样的。要怎么调整下?修改IF结构?

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧