Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 12.11.2015, 20:11
Интересующийся
Отправить личное сообщение для Ruslan_Berebnev Посмотреть профиль Найти все сообщения от Ruslan_Berebnev
 
Регистрация: 12.11.2015
Сообщений: 10

Если в конце написать console.log(obj), то он выведет массив со значениями, которые как раз нужны. getCookie() точно работает. Но всё равно, вот его код.
function setCookie(name, value, options) {
  options = options || {};

  var expires = options.expires;

  if (typeof expires == "number" && expires) {
    var d = new Date();
    d.setTime(d.getTime() + expires * 1000);
    expires = options.expires = d;
  }
  if (expires && expires.toUTCString) {
    options.expires = expires.toUTCString();
  }

  value = encodeURIComponent(value);

  var updatedCookie = name + "=" + value;

  for (var propName in options) {
    updatedCookie += "; " + propName;
    var propValue = options[propName];
    if (propValue !== true) {
      updatedCookie += "=" + propValue;
    }
  }

  document.cookie = updatedCookie;
}
Ответить с цитированием
  #12 (permalink)  
Старый 12.11.2015, 20:13
Интересующийся
Отправить личное сообщение для Ruslan_Berebnev Посмотреть профиль Найти все сообщения от Ruslan_Berebnev
 
Регистрация: 12.11.2015
Сообщений: 10

Вот полный скрипт
if (!navigator.cookieEnabled) {
  alert('Включите cookie для комфортной работы с этим сайтом');
} else {
  var arrQuantity = [], quantity = [];

  function unique(arr) {
    nextVal: for (var i = 0; i < arr.length; i++) {
      var str = arr[i];
      for (var j = 0; j < quantity.length; j++) {
        if (quantity[j] == str) continue nextVal;
      }
      quantity.push(str);
    }
    return quantity;
  }

  function groupArray(arr, val) {
    var object = [];
    for (var i = 0; i < arr.length; i++) {
      if (arr[i] !== val) continue;
      object.push(arr[i]);
    }
    return object;
  }

  setInterval(function() {
    for (var i = getCookie('COUNT'); i >= 1; i--) arrQuantity.push(getCookie('ITEM_NAME_' + i));
    var qua = unique(arrQuantity).length;
    qua > 0 ? $('#count-of-cookie').text('Количество наименований: ' + qua) :
              $('#count-of-cookie').text('Количество наименований: 0');
  }, 300);

  var table, deleteAll, getName, obj = [];

  table = document.querySelector('#table-item');

  deleteAll = function (e) {
    if (e.target.className !== 'delete-all') return;
    getName = e.target.parentElement.querySelector('.val-names').innerHTML;
    for (var i = 1; i <= getCookie('COUNT'); i++) obj.push(getCookie('ITEM_NAME_' + i));
    console.log(obj);
  }

  //e.target.parentElement.innerHTML = '';
  window.addEventListener('click', deleteAll);
}
Ответить с цитированием
  #13 (permalink)  
Старый 12.11.2015, 20:17
Профессор
Отправить личное сообщение для Mess4me Посмотреть профиль Найти все сообщения от Mess4me
 
Регистрация: 03.11.2014
Сообщений: 263

Ruslan_Berebnev,
а функцию getCookie() можно посмотреть ?
Вы вставили setCookie
Ответить с цитированием
  #14 (permalink)  
Старый 12.11.2015, 20:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,081

Ruslan_Berebnev,
в коде нет установки 'COUNT'
Ответить с цитированием
  #15 (permalink)  
Старый 13.11.2015, 11:15
Интересующийся
Отправить личное сообщение для Ruslan_Berebnev Посмотреть профиль Найти все сообщения от Ruslan_Berebnev
 
Регистрация: 12.11.2015
Сообщений: 10

Значение COUNT берётся из куков.
Ответить с цитированием
  #16 (permalink)  
Старый 13.11.2015, 11:18
Интересующийся
Отправить личное сообщение для Ruslan_Berebnev Посмотреть профиль Найти все сообщения от Ruslan_Berebnev
 
Регистрация: 12.11.2015
Сообщений: 10

function getCookie(name) {
  var matches = document.cookie.match(new RegExp(
    "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
  ));
  return matches ? decodeURIComponent(matches[1]) : undefined;
}
Ответить с цитированием
  #17 (permalink)  
Старый 13.11.2015, 11:48
Профессор
Отправить личное сообщение для Mess4me Посмотреть профиль Найти все сообщения от Mess4me
 
Регистрация: 03.11.2014
Сообщений: 263

Ruslan_Berebnev,
и при выполнении функции оно равно числу? Вы проверяли?
Ответить с цитированием
  #18 (permalink)  
Старый 13.11.2015, 12:14
Интересующийся
Отправить личное сообщение для Ruslan_Berebnev Посмотреть профиль Найти все сообщения от Ruslan_Berebnev
 
Регистрация: 12.11.2015
Сообщений: 10

Да, это число. Я специально для этих целей использовал parseInt()
Ответить с цитированием
  #19 (permalink)  
Старый 13.11.2015, 12:23
Профессор
Отправить личное сообщение для Mess4me Посмотреть профиль Найти все сообщения от Mess4me
 
Регистрация: 03.11.2014
Сообщений: 263

Ruslan_Berebnev,
попробуйте так :
//функция вытащит нужное значение массива и перезапишет его  
function groupArray(arr, val) {
    var object = [];
    for (var i = 0; i < arr.length; i++) {
      if (arr[i] !== val) continue;
      object.push(arr[i]);
    }
    return object;
  }

  var objects, deleteAll, getName, obj = [];
//по событию создаётся массив, а потом используется выборка для создания
//ещё одного массива с одинаковыми значениями
  deleteAll = function (e) {
    if (e.target.className !== 'delete-all') return;
    getName = e.target.parentElement.querySelector('.val-names').innerHTML;
    for (var i = 1; i <= parseInt(getCookie('COUNT')); i++) obj.push(getCookie('ITEM_NAME_' + i));
    objects = groupArray(obj, getName);
    console.log(objects); // результат []
  }

  window.addEventListener('click', deleteAll);
Ответить с цитированием
  #20 (permalink)  
Старый 13.11.2015, 12:27
Интересующийся
Отправить личное сообщение для Ruslan_Berebnev Посмотреть профиль Найти все сообщения от Ruslan_Berebnev
 
Регистрация: 12.11.2015
Сообщений: 10

Минут 30 назад так попробовал. Не получилось. Всё равно не могу понять почему не записывается в массив.
Вот мой последний не рабочий вариант.
if (!navigator.cookieEnabled) {
  alert('Включите cookie для комфортной работы с этим сайтом');
} else {
  var arrQuantity = [], quantity = [], count;

  function unique(arr) {
    nextVal: for (var i = 0; i < arr.length; i++) {
      var str = arr[i];
      for (var j = 0; j < quantity.length; j++) {
        if (quantity[j] == str) continue nextVal;
      }
      quantity.push(str);
    }
    return quantity;
  }

  // преобразование к числу
  count = parseInt(getCookie('COUNT'), 10);

  setInterval(function() {
    for (var i = count; i >= 1; i--) arrQuantity.push(getCookie('ITEM_NAME_' + i));
    var qua = unique(arrQuantity).length;
    qua > 0 ? $('#count-of-cookie').text('Количество наименований: ' + qua) :
              $('#count-of-cookie').text('Количество наименований: 0');
  }, 300);

  var table, deleteAll, getName;

  table = document.querySelector('#table-item');

  deleteAll = function (e) {
    var obj = [], groupObj = [];
    if (e.target.className !== 'delete-all') return;
    getName = e.target.parentElement.querySelector('.val-names').innerHTML;
    for (var i = 1; i <= count; i++) obj.push(getCookie('ITEM_NAME_' + i));

    // проверка по типу
    for (var k = 0; k < obj.length; k++) console.log(typeof(obj[k]));
    console.log(typeof(getName));

    if (obj.length <= 0 || obj == undefined) {
      console.log("Массив пустой");
    } else {
      for (var j = 0; j < obj.length; j++) {
        if (obj[j] !== getName) continue;
        groupObj.push(obj[j]);
      }
      console.log(groupObj);
    }

  }

  //e.target.parentElement.innerHTML = '';
  window.addEventListener('click', deleteAll);
}

Мне кажется что-то не так с if (obj[j] !== getName) continue; на 44 строкe

Последний раз редактировалось Ruslan_Berebnev, 13.11.2015 в 12:41.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сделать все элементы массива уникальными exec Общие вопросы Javascript 43 25.12.2015 01:14
Загрузить элементы документа с другой страницы alexrussia Events/DOM/Window 10 25.03.2011 10:17
Пустые элементы массива lammeR Общие вопросы Javascript 5 25.05.2010 02:59
Как удалить повторные элементы из массива? YISHIMITSY Общие вопросы Javascript 1 04.05.2010 00:04
добавить элементы в ассоциативный массив noer Элементы интерфейса 7 14.05.2009 10:41