Задать вопрос
  • Почему проблема с localStorage?

    Elaryks
    @Elaryks
    removeItem() удаляет элемент по ключу, а не по значению. В этот метод передаётся только один аргумент. Вам же нужно изменить массив и сохранить его обратно:
    function dele() {
        let x = prompt("Какую");
        let films = JSON.parse(localStorage.getItem("film")) || [];
    
        films = films.filter(elem => elem !== x);
    
        localStorage.setItem("film", JSON.stringify(films));
        rend();
    }

    Кроме того, при добавлении элемента вы не проверяете, существует ли массив перед добавлением в него элемента:
    function add() {
        let x = prompt("Название");
        let films = JSON.parse(localStorage.getItem("film")) || [];
    
        films.push(x);
        localStorage.setItem("film", JSON.stringify(films));
        rend();
    }
    Ответ написан
    Комментировать
  • Как отсортировать массив через forEach?

    Elaryks
    @Elaryks
    В первом случае вы в каждой итерации forEach перезаписываете значение b. Поэтому значение переменной будет равно значению, полученному в результате последней итерации. Должно быть что-то вроде такого:
    x.forEach(elem => {
        b.push(...a.filter((item) => item == elem));
    })

    Во втором случае b === undefined, поскольку вы ничего не возвращаете из forEach.
    Ответ написан
    4 комментария
  • Для чего нужны флаги: Read Aloud в браузере Google Chrome и как задействовать их в работе браузера?

    Elaryks
    @Elaryks
    В описании же написано, для чего это нужно. Например, первая настройка "Включает экспериментальную функцию 'Read aloud' в режиме чтения": в боковой панели, которая открывается через "Меню → Дополнительные инструменты → Режим чтения" или "ПКМ → Открыть в режиме чтения" появляется кнопка для озвучивания текста. Остальные функции так или иначе связаны с этой функциональностью и у них тоже есть описание.
    Ответ написан
    Комментировать
  • Как вывести правильный формат даты в JS?

    Elaryks
    @Elaryks
    В JS месяцы начинаются с 0, поэтому new Date (2001, 5, 5) — это июнь (06), это нужно учитывать. Кроме того, вы делаете проверку, если день меньше 10 и месяц меньше 10, при этом действие внутри блока бессмысленно — data далее не используется.

    Вариант с парсингом Date
    const getDateFormat = (date = new Date(2001, 4, 5), separator = '.') => {
      const days = String(date.getDate()).padStart(2, '0');
      const month = String(date.getMonth() + 1).padStart(2, '0');
      const year = date.getFullYear();
    
      return [days, month, year].join(separator);
    };

    Вариант с использованием Intl.DateTimeFormat
    const getDateFormat = (date = new Date(2001, 4, 5), separator = '.') => {
      const options = { day: '2-digit', month: '2-digit', year: 'numeric' };
      const formatter = new Intl.DateTimeFormat('ru-RU', options);
    
      return formatter.format(date).replace(/\./g, separator);
    };
    Ответ написан
    Комментировать
  • Как исправить "Undefined array key "login","password" в $_POST?

    Elaryks
    @Elaryks
    По умолчанию в теге <form /> используется метод GET, поэтому элементов в массиве $_POST не существует.
    В вашем случае должно быть так:
    <form action="src/registration.php" method="POST" />
    Ответ написан
    4 комментария
  • Как скачать книгу в pdf?

    Elaryks
    @Elaryks
    Самый простой вариант — открыть консоль браузера, туда вставить код и нажать Enter:
    PDFViewerApplication.pdfDocument.mAllowPrint = true;
    document.querySelector('.toolbarButton.print').click();

    После этого должно открыться окно печати, где можно выбрать сохранение в PDF.
    Ответ написан
    Комментировать
  • Как изменить стрелочки fancybox?

    Elaryks
    @Elaryks
    Согласно документации, Carousel в options не нужен:

    const container = document.getElementById('myProject');
    const options = {
        Navigation: {
            prevTpl: '',
            nextTpl: '',
        },
    };
    
    new Carousel(container, options);


    Если добавлять button, то она добавляется внутрь button плагина (получаются две вложенных кнопки, что не рекомендуется делать), поэтому я бы оставил просто svg. Кроме того, обратите внимание на viewBox="0 0 4 4" у левой кнопки и на лишний </ button> в обоих случаях.

    То есть итоговый код примерно такой:

    $(document).ready(function() {
        const container = document.getElementById("myProject");
        const options = {
            Navigation: {
                prevTpl: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" tabindex="-1"><path d="M15 3l-9 9 9 9"></path></svg>'
                nextTpl: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" tabindex="-1"><path d="M9 3l9 9-9 9"></path></svg>',
            },
        };
    
        new Carousel(container, options);
    });
    Ответ написан
    Комментировать
  • Как обновить codium plugin для PyCharm?

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

    Elaryks
    @Elaryks
    Можно пробросить RootStore внутрь необходимого стора:

    export class RootStore {
      constructor() {
        this.authStore = new AuthStore(this);
      }
    }
    
    export class AuthStore {
      private rootStore: RootStore;
    
      constructor(rootStore: RootStore) {
        this.rootStore = rootStore;
      }
    
      signIn = (email: string, password: string) => {
        // ...
        this.rootStore.profileStore.getObservables();
        // ...
      };
    }
    Ответ написан
    Комментировать
  • Как настроить размещение адресной строки android firefox внизу?

    Elaryks
    @Elaryks
    Меню (три точки) → Настройки → Персонализация → Расположение адресной строки → Снизу.
    Ответ написан
    3 комментария
  • Можно ли проверить было ли уже событие window.onload?

    Elaryks
    @Elaryks
    Можно через document.readyState проверить состояние страницы:

    if (document.readyState === 'complete') {
       someFunction();
    } else {
       window.addEventListener('load', someFunction);
    }
    Ответ написан
    1 комментарий
  • Как генерируется secret у приложения Vue?

    Elaryks
    @Elaryks
    В исходном коде есть обфусцированный участок, выглядящий примерно так:

    Обфусцированный код
    self[_=String.fromCharCode,p=parseInt,_(p(211,6)+false+p(30,0x6))+_(169-57)+_(p(104,5)+p(301,0x5))+_(p(1,7)+false+p(145,0x7))+_(101)+_(46+false+53)+_(/*_(72)*/)+_(/*_(16)*/)+_(/*_(15)*/)+_(1938/**\/*//17)+_(p(14142,6)/**\/*//p(34,0x6))+_(46+70)] = (_=String.fromCharCode,p=parseInt,_(p(312,4)+p(201,0x4))+_(/*_(87)*/)+
    []
    +_(/*_(62)*/)+_(85)+_(1620/18)+_(p(330,5)-p(2,0x5))+_(77)+_(52+false+18)+
    []
    +
    []
    +_(/*_(62)*/)+_(/*_(83)*/)+_(82)+_(77)+
    []
    +_(p(141,5)+p(111,0x5))+_(81)+_(1830/30)+_(61));

    И его слегка упрощённый вариант
    self[
      ((_ = String.fromCharCode),
      (p = parseInt),
      _(p(211, 6) + false + p(30, 6)) +
        _(112) +
        _(p(104, 5) + p(301, 5)) +
        _(p(1, 7) + false + p(145, 7)) +
        _(101) +
        _(46 + false + 53) +
        _(114) +
        _(p(14142, 6) / p(34, 6)) +
        _(116))
    ] =
      ((_ = String.fromCharCode),
      (p = parseInt),
        _(p(152, 7)) +
        _(48) +
        _(p(1032, 4)) +
        _(p(24003, 7) / p(131, 7)) +
        _(p(2002, 4) - p(310, 4)) +
        _(p(256, 7) - p(126, 7)) +
        _(66) +
        _(76) +
        _(p(152, 7)) +
        _(62 + false + 3) +
        _(p(-2, 4) + false + p(333, 4)) +
        _(61));

    В нём self['apiSecret'] присваивается определённое значение (self в данном случае — экземпляр Vue). При этом какой-то динамики я там не вижу, но, вероятно, эта часть кода генерируется на сервере. Вытащить ключ можно, выполнив в консоли вторую часть кода из исходника (после знака "="), либо просто взяв из экземпляра Vue: document.getElementById('app').__vue__.apiSecret. После нужно эту строку декодировать через atob():

    atob(document.getElementById('app').__vue__.apiSecret);
    Ответ написан
    2 комментария
  • Как корректно посчитать разницу в moment js?

    Elaryks
    @Elaryks
    Мало работал с Moment.js, но, вероятно, ошибка в том, что serverAndUserTimeDifference — разница в миллисекундах между датами, а при пробросе её в moment() она считается как дата в UNIX-формате.

    Вот примерный код, который работает:
    const now = moment();
    const serverTime = moment('2024-10-09 10:20:34.987');
    const duration = moment.duration(Math.abs(now.diff(serverTime)));
    const result = `${duration.days()} ${duration.hours().toString().padStart(2, '0')}:${duration.minutes().toString().padStart(2, '0')}:${duration.seconds().toString().padStart(2, '0')}`;
    Ответ написан
    Комментировать
  • Чем реализовать просмотри изображения на 360 градусов в ограниченном блоке?

    Elaryks
    @Elaryks
    Судя по исходному коду, там используется Pannellum.js.
    Ответ написан
    Комментировать
  • Как проверить соответствует ли value of input формату "фамилия имя отчество "?

    Elaryks
    @Elaryks
    Можно сразу удалить в строке лишние пробелы в начале и конце, после чего разбить её по пробелам:

    const nameParts = name.trim().split(/\s+/);
    if (nameParts.length !== 3) {
        errorDispatching('Введите фамилию, имя, отчество');
        return;
    }
    Ответ написан
    Комментировать
  • Какая почта у тех. поддержки Heroku?

    Elaryks
    @Elaryks
    Support Policy:
    Если вы не можете войти в систему или получить доступ к своей учётной записи, вы можете отправить заявку с помощью e-mail с адреса электронной почты вашей учетной записи Heroku по адресу support@heroku.com.
    Ответ написан
  • Почему выдает ошибку при попытке раскрыть код в VS code?

    Elaryks
    @Elaryks
    Вероятно, ошибка из-за некорректного синтаксиса. Попробуйте так:
    ul.menu__list>li.menu__list-item*6>a.menu__link
    Ответ написан
    Комментировать
  • Как убрать висячие слова на сайте?

    Elaryks
    @Elaryks
    Если я правильно понял суть, то задачу можно решить, используя \n и CSS-свойство white-space: pre.

    Ответ написан
    2 комментария
  • Как сбросить пароль window 11, если не знаю пароль и ключ BitLocker?

    Elaryks
    @Elaryks
    Если повезёт, ключ восстановления BitLocker может быть сохранён в Microsoft-аккаунте, который использовался в Windows: https://account.microsoft.com/devices/recoverykey.
    Ответ написан
    Комментировать
  • Почему не работает 90 герц на экране у смартфона Realme 11?

    Elaryks
    @Elaryks
    Попробуйте открыть Настройки → Дисплей → Частота обновления. Судя по 4PDA, там должна быть возможность выбрать 90 Гц. У вас, скорее всего, автоматический режим, когда телефон с целью экономии батареи сам выбирает необходимое значение в зависимости от приложения.
    Ответ написан