@romanu4

Растолкуйте код js?

Растолкуйте код, желательно с комментариями
function getCookie(cname) {
  var name = cname + "=";
  var ca = document.cookie.split(';');
  for(var i=0; i<ca.length; i++) 
    {
    var c = ca[i].trim();
    if (c.indexOf(name)==0) return c.substring(name.length,c.length);
    }
  return "";
};
  • Вопрос задан
  • 2402 просмотра
Решения вопроса 1
mlnkv
@mlnkv
JavaScript Developer
кстати, вот нормальная ф-ция для работы с куками

function cookie(key, value, days, path, domain) {
  var expires = new Date(),
    pattern = "(?:; )?" + arguments[0] + "=([^;]*);?",
    regexp = new RegExp(pattern);
  if (key && value !== undefined) {
    var str = key + '=' + encodeURIComponent(value);
    if (days) {
        expires.setTime(expires.getTime() + (days * 24 * 60 * 60 * 1000));
        str += '; expires=' + expires.toGMTString();
    }
    if (path)    str += '; path=' + path;
    if (domain)  str += '; domain=' + domain;
    return document.cookie = str;
  }
  else if (regexp.test(document.cookie)) return decodeURIComponent(RegExp["$1"]);
  return false;
}


cookie("user", "John Doe"); //установить куку user
cookie("user"); // получить куку user
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
learn.javascript.ru/cookie
javascript.ru/String/split
javascript.ru/String/indexOf
www.w3schools.com/jsref/jsref_trim_string.asp
javascript.ru/string/substring

Я бы не использовал функцию trim так как её нет в ie8, и чистил бы пробелы регулярным выражением.
Ответ написан
@vrn_ehot
Функция выводит значение заданной куки
function getCookie(cname) {
  var name = cname + "=";
  var ca = document.cookie.split(';'); // получаем массив переменных куков в виде строк "ключ=значение"
  for(var i=0; i<ca.length; i++) 
    {
    var c = ca[i].trim(); // удаляем лишние пробелы
    if (c.indexOf(name)==0) // если очередная строка начинается на искомый ключ
       return c.substring(name.length,c.length); // возвращаем часть строки после ключа (т.е. значение)
    }
  return "";
};
Ответ написан
Комментировать
Передаваемую переменную cname конкатенируем с '=' и записываем в name.
Разбиваем содержимое cookie (которые хранятся строкой) на массив по разделителю и записываем в ca.
Далее перебираем массив ca. Если находим элемент, который начинается с заданного имени, значит мы нашли искомый элемент и возвращаем подстроку со значением этого элемента.
После цикла возвращаем пустую строку на случай, если элемент не найден и выход из функции не произошел.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы