嗨,我有一个小问题。目前我在浏览器cookie中保存了2个参数,分别是ADV和LOC ...现在我有一个带有表单的页面,表单有两个隐藏字段:
<input type="hidden" name="adv" value="" />
<input type="hidden" name="loc" value="" />
我需要从cookie中获取adv和loc的值并将它们保存在隐藏的表单字段中......我怎么能这样做呢?感谢
答案 0 :(得分:5)
document.cookie
将按以下格式为您提供所有Cookie:
'adv=adv_val; loc=loc_val;'
要从Cookie中获取值,您可以使用此功能(来自quirksmode):
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
要填写隐藏字段,您可以遍历所有隐藏字段,并获取各自的Cookie:
function hiddenCookies(){
var inputs = document.getElementsByTagName('input');
for(var i = 0; i < inputs.length; i++){
var element = inputs[i];
if(element.getAttribute('type') == 'hidden'){
element.value = readCookie(element.name);
}
}
}
然后修改<body>
以获得onload
。
<body onload="hiddenCookies()">
或者使用jQuery:
$(function(){
$('input:hidden').each(function(i,v){
v.value = readCookie(v.name);
});
});
答案 1 :(得分:0)
您可以使用此代码段将cookie字符串转换为地图。
let cookieMap = document.cookie.split(";").map((str)=>str.split("=")).reduce(reduceToMap(map,curr),{});
function reduceToMap(map,currentArray) {
// convert array to map
map[currArray[0]] = currentArray[1];
return map;
}
此操作本质上如下:
现在,您只需执行以下操作即可访问任何cookie:
let cookieName = "name of the cookie you want to access";
let cookieValue = cookieMap[cookieName];