Как спарсить utm-метки в переменные?

Почему выдает undefined в переменные utm1 и utm2?

Ссылка к примеру http://жк-зеленоградский.рф/?utm1=test1&utm2=test2

var x = location.search,
    y = x.slice(1),
    z = y.split('&');

$(z).each(function(index){
    var t = z[index] = z[index].split('=');
    return t;
});

var utmName = function(utmName) {
    $(z).each(function(index, utmName){
        if (z[index][0] == utmName) {
            var uName = z[index][1];
            return uName;
        } else {
            var uName;
            return uName;
        }
    });
}

var utm1 = utmName('utm1'),
    utm2 = utmName('utm2');
  • Вопрос задан
  • 590 просмотров
Решения вопроса 1
Arris
@Arris
Сапиенсы учатся, играя.
Передаваемая в each функция - callback, который будет вызываться для каждого элемента коллекции, и в который будут передаваться два параметра - индекс и значение элемента в коллекции.

Это у вас первая ошибка.
А вторая ошибка - из замыкания $(z).each(function(){})); ничего не возвращается. То есть функция сама по себе результат возвращает, но он нигде не сохраняется.

Я сделал так:
var utmName = function(utmName) {
                var result = '';
                $(z).each(function(index){
                    if (z[index][0] == utmName) {
                        result = z[index][1];
                    }
                });
                return result;
            }

Это работает, но я не уверен, что это абсолютно синтаксически корректно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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