Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.04.2018, 07:08
Интересующийся
Отправить личное сообщение для MyNameIsCode Посмотреть профиль Найти все сообщения от MyNameIsCode
 
Регистрация: 19.04.2017
Сообщений: 15

Сократить код.
Привет, гуру js программирования!
Как можно сократить этот код? )
$(document).ready(function() {
    var url_string = window.location.href;
    function get_params_string() {
        var arr = url_string.split('?');
        var get_params = null;
        if (url_string.length > 1 && arr[1] !== '') {
            get_params = arr[1];
        }
        return get_params;
    }

    var url = new URL(url_string);

    var sort_params = [
        url.searchParams.get("start-date-sort"),
        url.searchParams.get("end-date-sort"),
        url.searchParams.get("start-sum-sort"),
        url.searchParams.get("end-sum-sort")
    ];
    console.log(get_params_string());
    if (get_params_string() === undefined || get_params_string() === null) {
        $('#start-date-sort').attr("href","?start-date-sort=DESC");
        $('#end-date-sort').attr("href","?end-date-sort=DESC");
        $('#start-sum-sort').attr("href","?start-sum-sort=DESC");
        $('#end-sum-sort').attr("href","?start-date-sort=DESC");
    } else {
        re = /[a-z-]*-sort=(desc|asc)/gi;
        str = get_params_string().replace(re, '');
        if (sort_params[0] !== null) {
            if (sort_params[0] === 'DESC') {
                $('#start-date-sort').attr("href",'?'+str+'&start-date-sort=ASC');
            } else if (sort_params[0] === 'ASC') {
                $('#start-date-sort').attr("href",'?'+str+'&start-date-sort=DESC');
            }
        } else if (sort_params[0] === null || sort_params[0] === undefined) {
            $('#start-date-sort').attr("href",'?'+str+'&start-date-sort=DESC');
        }

        if (sort_params[1] !== null) {
            if (sort_params[1] === 'DESC') {
                $('#end-date-sort').attr("href",'?'+str+'&end-date-sort=ASC');
            } else if (sort_params[1] === 'ASC') {
                $('#end-date-sort').attr("href",'?'+str+'&end-date-sort=DESC');
            }
        } else if (sort_params[1] === null || sort_params[1] === undefined) {
            $('#end-date-sort').attr("href",'?'+str+'&end-date-sort=DESC');
        }

        if (sort_params[2] !== null) {
            if (sort_params[2] === 'DESC') {
                $('#start-sum-sort').attr("href",'?'+str+'&start-sum-sort=ASC');
            } else if (sort_params[2] === 'ASC') {
                $('#start-sum-sort').attr("href",'?'+str+'&start-sum-sort=DESC');
            }
        } else if (sort_params[2] === null || sort_params[2] === undefined) {
            $('#start-sum-sort').attr("href",'?'+str+'&start-sum-sort=DESC');
        }

        if (sort_params[3] !== null) {
            if (sort_params[3] === 'DESC') {
                $('#end-sum-sort').attr("href",'?'+str+'&end-sum-sort=ASC');
            } else if (sort_params[3] === 'ASC') {
                $('#end-sum-sort').attr("href",'?'+str+'&end-sum-sort=DESC');
            }
        } else if (sort_params[3] === null || sort_params[3] === undefined) {
            $('#end-sum-sort').attr("href",'?'+str+'&end-sum-sort=DESC');
        }
    }
});
Ответить с цитированием
  #2 (permalink)  
Старый 28.04.2018, 09:52
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,723

Если не работает, то поправить, думаю, сможете.
$(function() {
    var get_param = location.href.split('#').shift().split('?').pop().trim(),
        $nodes = $("#start-date-sort, #end-date-sort, #start-sum-sort, #end-sum-sort");

    if (!get_param) {
        $nodes.each(function() {
            this.href = this.id + '=DESC';
        });

        return;
    };

    var Url = new URL(location.href),
        str = get_param.replace(/[a-z-]*-sort=(desc|asc)/gi, '');

    $nodes.each(function() {
        this.href = '?' + str + '&' + this.id + '=' + (
            Url.searchParams.get(this.id) == 'DESC' ? 'ASC' : 'DESC'
        );
    });
});

Последний раз редактировалось Nexus, 28.04.2018 в 10:50.
Ответить с цитированием
  #3 (permalink)  
Старый 28.04.2018, 10:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Nexus,
строки 3 - 6
$nodes = $("#start-date-sort, #end-date-sort, #start-sum-sort, #end-sum-sort")
Ответить с цитированием
  #4 (permalink)  
Старый 28.04.2018, 10:52
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,723

рони, благодарю.
Не удалил сразу вместе с sort_params.
Ответить с цитированием
  #5 (permalink)  
Старый 28.04.2018, 13:24
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,491

Ток Url.searchParams ни в каком ослике не заведётся.
__________________
29375, 35
Ответить с цитированием
  #6 (permalink)  
Старый 02.05.2018, 05:02
Интересующийся
Отправить личное сообщение для MyNameIsCode Посмотреть профиль Найти все сообщения от MyNameIsCode
 
Регистрация: 19.04.2017
Сообщений: 15

Сообщение от Nexus Посмотреть сообщение
Если не работает, то поправить, думаю, сможете.
$(function() {
    var get_param = location.href.split('#').shift().split('?').pop().trim(),
        $nodes = $("#start-date-sort, #end-date-sort, #start-sum-sort, #end-sum-sort");

    if (!get_param) {
        $nodes.each(function() {
            this.href = this.id + '=DESC';
        });

        return;
    };

    var Url = new URL(location.href),
        str = get_param.replace(/[a-z-]*-sort=(desc|asc)/gi, '');

    $nodes.each(function() {
        this.href = '?' + str + '&' + this.id + '=' + (
            Url.searchParams.get(this.id) == 'DESC' ? 'ASC' : 'DESC'
        );
    });
});
Спасибо большое! Все работает прекрасно без поправок!
Ответить с цитированием
  #7 (permalink)  
Старый 02.05.2018, 09:08
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Сообщение от MyNameIsCode
location.href.split('#').shift().split('?').pop(). trim()
location.search.slice(1)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать код CSS+HTML JamesMorgan Общие вопросы Javascript 2 11.08.2015 12:50
Код ответа сервера и обновление iframe alexdemi911 Общие вопросы Javascript 6 10.08.2015 22:30
Помогите к js коду, написать html код Modrih Элементы интерфейса 8 16.06.2015 18:08
Требуется выводить код рекламного блока Adsense из файла JavaScript??? speedflow Элементы интерфейса 0 26.05.2012 15:50
Получить код js-скрипта, находящегося в файле на сервере RomanA Общие вопросы Javascript 4 04.04.2012 09:53