从cookie获取参数值

Ren*_*mit 3 javascript

嗨,我有一个小问题.目前我在浏览器cookie中保存了2个参数,分别是ADV和LOC ...现在我有一个带有表单的页面,表单有两个隐藏字段:

<input type="hidden" name="adv" value="" />
<input type="hidden" name="loc" value="" />
Run Code Online (Sandbox Code Playgroud)

我需要从cookie中获取adv和loc的值并将它们保存在隐藏的表单字段中......我怎么能这样做呢?谢谢

Roc*_*mat 5

document.cookie 将以下列格式为您提供所有cookie:

'adv=adv_val; loc=loc_val;'
Run Code Online (Sandbox Code Playgroud)

要从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;
}
Run Code Online (Sandbox Code Playgroud)

要填写隐藏字段,您可以遍历所有隐藏字段,并获取各自的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);
      }
  }
}
Run Code Online (Sandbox Code Playgroud)

然后修改<body>onload.

<body onload="hiddenCookies()">
Run Code Online (Sandbox Code Playgroud)

或者使用jQuery:

$(function(){
  $('input:hidden').each(function(i,v){
      v.value = readCookie(v.name);
  });
});
Run Code Online (Sandbox Code Playgroud)