Задать вопрос
  • Как заменить теги при использовании clone()?

    @DanKud
    Если отталкиваться только от записанных id в localStorage то при постоянном наличии нужного HTML-кода на странице можно реализовать так:
    /* добавляем функцию получения HTML-кода исходя из текущих id записанных в localStorage */
    function getHTML() {
        const checkedName = 'checked';
        const current = localStorage.getItem(checkedName);
    
        if (current !== null) {
            const arrCurrent = JSON.parse(current);
            let mHTML = '';
            arrCurrent.forEach(id => {
                let replace = '';
                $('#' + id).parent().nextAll('p').each(function() {
                    replace += this.outerHTML.replace(/(<|<\/)p/g, '$1span');
                });
                mHTML += '<div class="item">' + replace + '</div>';
            })
            return mHTML;
        } else return;
    }
    
    /* убираем лишнее из обработчика события и оставляем так */
    $('body').on('change', '.check', function(){
        var modal = $('.modal');
    
        if ($('input').is(':checked')) {
            if (!modal.children().is('.item')) modal.html('');
        } else {
            modal.removeClass('modal-show').text('Здесь ничего нет');
        }
        
        if ($(this).prop('checked')) {
    			modal.addClass('modal-show');
            }
    
        actChecked($(this).attr('id'));
        modal.html(getHTML()); /* в самом конце добавляем HTML-код в модальное окно */
    });
    
    /* так же прописываем, чтобы код добавлялся при загрузке страницы */
    $('.modal').html(getHTML());
    actChecked('ready');

    Это будет работать, но это не универсальный код, он работает только на тот пример, который мы с вами обсуждаем.
  • Как узнать в каком блоке произошло нажатие?

    @DanKud
    doppelgangerz, имеете ввиду, чтобы на каждый элемент повешать событие? Через forEach можно:
    document.querySelectorAll('.class').forEach(em => {
        em.addEventListener('click', function() {
            /* событие, которое нужно повешать на клик по элементу */
        })
    })

    Вообще, повторюсь, если вы напишите разметку блоков и часть своего скрипта, который отвечает за обработку события, вам будет проще помочь в этом вопросе.
  • Как узнать в каком блоке произошло нажатие?

    @DanKud
    Покажите пример разметки блоков и скрипт. Ну а так скорей всего вам нужно это реализовать через текущий контекст объекта на котором произошел клик:
    document.querySelector('.class').addEventListener('click', function() => {
        console.log(this); /* this - текущий объект на котором произошел клик */
    })
  • Почему во время keypress в JQuery, не обрабатывается последний символ?

    @DanKud
    Drovosek01, для разных задач используются разные обработчики событий. В данном случае keydown и keypress вообще не совсем корректно использовать. Эти события используются в других задачах. По-этому рассуждать как было бы очевиднее или логичнее не стоит. Для получения значения из input, если не нужно обрабатывать нажатые клавиши, вообще лучше всего использовать событие input
  • Поиск по JSON PHP?

    @DanKud
    Ernest Faizullin, вы не заметили, что он пытался дважды декодировать JSON?

    $curs_url = json_decode(file_get_contents(""), TRUE);
    
    $decodedBody = json_decode($curs_url, true);

    естественно второй раз выкидывало ошибку, потому что это уже был массив :)
  • Почему во время keypress в JQuery, не обрабатывается последний символ?

    @DanKud
    Ведь keypress - это когда мы нажимаем и отпускаем клавишу

    Нет, событие keypress срабатывает сразу же при нажатии клавиши. А в момент нажатия клавиши у вас еще не добавлен новый символ в поле input и соответственно передается именно то значение, которые было в момент нажатия клавиши. Событие keyup срабатывает когда вы отпускаете клавишу, следовательно новый символ уже будет добавлен в input и успешно передается в событии.
  • Поиск по JSON PHP?

    @DanKud
    $curs_url = json_decode(file_get_contents(""), TRUE);
    echo $curs_url['ratesForExchange']['BTCQIWI']['rate'];
  • Как отловить изменение в input?

    @DanKud
    Вместо onkeyup= обрабатывайте событие onchange=
  • Как решить проблему с "CORS policy" при работе с API?

    @DanKud
    OstapO, как правило для запросов к API достаточно дефолтного file_get_contents()
  • Как регулярно отправлять HTTP-запросы?

    @DanKud
    Роман, а что решит? Если исходить из решения вопроса с помощь AJAX-запросов, то это самый оптимальный вариант. Нагрузка на клиента - один запрос в определенном интервале. Вся остальная нагрузка по запросам к API через сервер. Оптимальнее только веб-сокеты, но еще не факт есть ли смысл их использовать в данном случае.
  • Как регулярно отправлять HTTP-запросы?

    @DanKud
    Jintsuu, создайте PHP-скрипт и отправляйте запросы к API из него. Тем самым вы сможете отправить несколько запросов к API без лишней нагрузки на клиента. А из JS соответственно отправляйте запрос к этому скрипту.
  • Допустимо ли инициализировать функцию внутри другой?

    @DanKud
    Max Ba, все подключения через require это просто вставка кода в указанное место из другого файла. Если вы вставляете его внутри функции, то и вставляется он непосредственно внутрь функции с соответствующей областью видимости.
  • Больше или равно PHP?

    @DanKud
    GRO24, что такое QU? Не может быть просто parseerror в PHP. Ошибка должна быть более информативной.
  • Больше или равно PHP?

    @DanKud
    Ну так, что за ошибку то "выбивает". Ваша фраза parseerror вообще ни о чем не говорит. Пишите полный текст ошибки.
  • Сортировка выводимых данных?

    @DanKud
    ImVeryStupid, я понял, что вы перебираете массив циклом. Так покажите структуру самого массива, который вы перебираете в цикле и по какому значению вам нужно его отсортировать. Как у вас выглядит массив $arr?
  • Сортировка выводимых данных?

    @DanKud
    Покажите пример массива из которого выводите переменные. Есть стандартные функции сортировки, которые могут подойти, или не подойти, в зависимости от вашего массива.
  • Как заменить теги при использовании clone()?

    @DanKud
    Genri_Rus, так id мы и так уже сохраняем, только как бы отдельно для чекбоксов. Можно эти же сохраненные id использовать и для других действий. Вообще в целом можно реализовать так:

    - сохраняем в localStorage только id
    - при чеке по чекбоксу подхватываем id из localStorage и на основе него подхватываем HTML-код непосредственно с самой страницы

    Таким образом нам не нужно будет хранить сам HTML-код в localStorage. Но нужно понимать, что если на странице не будет нужного нам кода, то ничего в итоге не подхватится. Все зависит от самой задачи, что, как и где нужно. Просто на том примере, что мы разбираем, как видите почти с каждым новым вашим дополнением приходится что-то дописывать, потому что изначально все пишется на упрощенном примере.
  • Как заменить теги при использовании clone()?

    @DanKud
    Genri_Rus, const это константа, значение, которое не будет изменяться в дальнейшем. let это переменная, которая будет изменяться в дальнейшем. Область видимости (локальная, глобальная) явным способом никак не задается и зависит от того в каком месте кода объявлена переменная. Можно везде записывать let или var (если имена переменных не пересекаются), не используя const вообще. Просто указывать конкретное назначение переменной, изменяемое или нет, все-таки более правильно.

    На счет проверки чекбоксов отдельной записью. Конкретно в вашем коде это самый оптимальный вариант. Чтобы можно было и заполнять модальное окно и проверять чекбоксы из одной записи нужно полностью переписывать код. В целом ничего плохого в том, что вы имеете несколько записей в localStorage нет. Это вполне нормальная практика.
  • Почему cURL выводит в строку?

    @DanKud
    Как страница отдает ответ, так вы его и получаете. Если нет переносов, значит страница именно так и отдает вам код.
  • Как заменить теги при использовании clone()?

    @DanKud
    Genri_Rus, функцию escapeRegExp можно прописать в любом месте кода, хоть в конце. JS код сначала полностью считывается, а только потом выполняется. По-этому разницы нет.