значения массива cookie javascript - PullRequest
0 голосов
/ 24 ноября 2011

У меня проблема с файлами cookie javascript, с которыми я боролся уже несколько дней. У меня есть эта функция (почти то же самое из w3):

function getCookie(c_name)
{   
var i,x,y,ARRcookies=document.cookie.split(";");
for (i=0;i<ARRcookies.length;i++)
{
  x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
  y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
  x=x.replace(/^\s+|\s+$/g,"");
  if (x.indexOf(c_name)==0)
    {
     ar[i]=y;
     arr[i]=x;
    }
  }
}

Допустим, я сохранил два куки со следующими именами: tablet1 и taskt1. Когда я звоню getCookie('table'), ar.length равен 1. После этого я запускаю getCookie('task'), а ar.length равен 2. Это вызывает у меня много проблем. Если я помещаю ar=0; в начале функции, то ничего не работает, это как если бы функция просто сохраняла значения каждый раз, когда я вызываю ее, не стирая старые.

============================

var arrCookies = {};
function getCookie(c_name)
{   
var i,x,y,ARRcookies=document.cookie.split(";");
for (i=0;i<ARRcookies.length;i++)
{

  x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
  y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
  x=x.replace(/^\s+|\s+$/g,"");
  if (x.indexOf(c_name)==0)
    {
        arrCookies[c_name] = y;

    }
  }
}

когда я делаю это arrCookies [c_name], он не хранит никаких значений -> arrCookies [c_name] .lenght равен нулю

=============================================== == я тоже сделал

function getCookie(c_name)
{   
var i,x,y,ARRcookies=document.cookie.split(";");
for (i=0;i<ARRcookies.length;i++)
{

  x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
  y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
  x=x.replace(/^\s+|\s+$/g,"");
  if (x.indexOf(c_name)==0)
    {
        if(c_name=='table'){
            xxx[i]=x;
            xx[i]=y;
        }
        else if(c_name=='task'){
            arr[i]=x;
            ar[i]=y;
        }
    }
  }
}

и я получаю те же результаты, что и мой первый скрипт

Ответы [ 2 ]

0 голосов
/ 24 ноября 2011

Вместо этого используйте ассоциативный массив, ключ - имя cookie, а значение - значение cookie.

Определите один массив, подобный этому, сверху вашего кода:

var arrCookies = {};

Затем этот кодв вашей функции:

if (x.indexOf(c_name) == 0)
{
    arrCookies[c_name] = y;
}

Затем, чтобы прочитать значение cookie позже, например, cookie с именем «task»:

var taskValue = arrCookies["task"];
0 голосов
/ 24 ноября 2011

вместо использования ar [i] в ​​цикле, используйте ar [j] следующим образом:

j=0;
for(i=0;...) {
   if(...) {
      ar[j]=...;
      j = j + 1;
   }
}

Вы видите ошибку в своем коде?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...