Задать вопрос
Ответы пользователя по тегу JavaScript
  • Область видимости массивов. Как сохранить данные в fetch...then?

    neuotq
    @neuotq
    Прокрастинация
    Смотрите, во-первых вы немного нарушили логику потока данных у вас в приложении. С одной стороны, вы используете асинхронный fetch, с другой пытаетесь в синхронном режиме инициализировать ApexCharts. В момент создания options и ApexCharts да, там будет не то что вы ожидаете.
    Поэтому вам нужно либо асинхронно создавать всё: грубо говоря засунуть в то место, где у вас и цикл, либо немного иначе использовать ApexCharts.
    Инициализировать его с пустыми данными и текстом загрузка, а потом через updateSeries обновить график, тоже внутри того же .then (data => ...) после цикла, те асинхронно после того, как пришли данные.
    Читайте тут:
    https://apexcharts.com/docs/update-charts-from-jso...
    Ответ написан
    2 комментария
  • Как сохранить пользователя в БД, если пользователь совершил аутентификацию через ВК?

    neuotq
    @neuotq
    Прокрастинация
    0. В целом на уровне БД редко есть смысл запрещать пустой пароль.
    1. Инициируем создание объекта пользователя, заполняем поля, которые возможны (Имя, имейл если сетка отдает и тп)
    2. Сохраняем его куда-нить(ну допустим в локалсторе), создаем кукис, запоминаем что он незавершил регистрацию
    3. Пользователю показываем блокирующее любые другие штуки окошко/страницу с просьбой завершить регистрацию и ввести пароль.
    Ответ написан
    4 комментария
  • TypeError: Cannot read properties of null (reading 'role')?

    neuotq
    @neuotq
    Прокрастинация
    Оу, это печально известная ошибка на миллиард долларов, это если что не про конкретно вашу ошибку, а почему так можно делать.
    Здесь вы ищете роль
    const userRole = await Role.findOne({ role: 'user' });

    Если её нет, то соответвенно в userRole будет null, но далее вы без проверки обращаетесь userRole.role
    const user = new User({ username, hashPass, roles: [userRole.role] });

    Советую прямо сейчас начать использовать TypeScript, начните с простого пусть это будет проверка типов и отслеживание таких ситуации с возможным null.
    Это сэкономит кучу времени и кучу денег, значительно снизит непонятные ошибки на продакшене, которые сложно отловить.
    Ответ написан
  • Почему отрабатывает роут ошибки при сборке проекта, react-router-dom v6?

    neuotq
    @neuotq
    Прокрастинация
    Запускать нужно в веб сервере с соответствующими настройками.
    Когда вы разрабатывали приложение и запускали локальный сервер, который брал всё на себя.
    А так, допустим вы используете Apache там свои настройки, Nginx свои. Во множестве облачных сервисах нередко всё оптимизировано и почти ничего делать не нужно. Для условного Github Pages нужны свои небольшие манипуляции.
    Поэтому.
    1. Определитесь с веб сервером/площадкой где вы будете размещать проект
    2. Гуглите "Сервер/площадка react router settings" "Сервер/площадка react router deploymnet" и тп.
    Для локального у вас на компьютере нужно скачать какой-нибудь веб сервер(условный wamp или альтернативы), создать сайт там и тестировать.
    Ответ написан
    Комментировать
  • JS в качестве БД?

    neuotq
    @neuotq
    Прокрастинация
    Сразу отмечу: писать свой велосипед, кроме как для получения личной практики - не советую. Будет бесконечное число подводных камней, костылей и тп, которые разработчики различных БД уже прошли.
    А так, если нужно простое решение советую обратить внимание на SQLite. Там не требуется отдельный сервис/демон у вас должна быть реализация под ваш язык/фреймворк/среду и она будет работать.
    Достаточно надёжное решение.
    PS отдельно отмечу, возможно, вы имели ввиду совсем другое.
    Ответ написан
    1 комментарий
  • Как использовать AOS, если скролл реализован в div элементе на странице?

    neuotq
    @neuotq
    Прокрастинация
    Сложно сказать, так нет вашего кода (с допустим моком вызова апи и подгрузки.) но в AOS есть метод AOS.refreshHard который автоматом вызывается в таких случаях. Если у вас по каким-то причинам автоматика не срабатывает, делайте это сами программно.
    Ответ написан
    Комментировать
  • Как сделать что бы Swiper с одинаковыми классами работали от одного скрипта?

    neuotq
    @neuotq
    Прокрастинация
    Swiper и подобные обычно вешаются на уникальный DOM элемент и потом возвращают объект, который ему соответствует. Вам тогда нужно просто пройти по всем элементам класса и повесить на каждый Swiper.
    //Получим все ноды у которых есть класс swiper
    let swiperNodes = document.getElementsByClassName("swiper");
    //Пройдемся по ним и повесим свайпер
    for (let i = 0; i < swiperNodes.length; i++) {
       new Swiper(swiperNodes[i] , {
         speed: 400,
         spaceBetween: 100,})
    //...
    }

    Ну примерно так.
    Ответ написан
  • Что изучать первым после JS, TypeScript или React?

    neuotq
    @neuotq
    Прокрастинация
    Начни с базовых штук, но усилить можешь любимым языком программирования.
    В вашем случае это JS. TypeScript - это тот же JS но обернут некоторыми фичами, а React использует JS(и/или TypeScript) вы будете на нём писать, соответственно не зная языка, делать что-то больше простых реактивных кнопочек будет сложно.
    Советую глянуть сюда
    https://ru.hexlet.io/webinars (там проскролить чуть ниже к "Бесплатные курсы"), там годные указания и начало базового пути.
    Ну и конечно же сюда: https://roadmap.sh/frontend
    Крайне не советую тупо учить React, вы быстро упретесь в стеклянный потолок условного "скриптокидди", и ничего толкового в любой продуктовой или крупной компании сделать не сможете, да и не возьмут (впрочем такие встречаются чаще чем хотелось бы, так что как-то пролазят хех).
    Не бойтесь объёма, идит шажками.
    Ответ написан
  • Как сделать смену темы для js работающую при подключении в head?

    neuotq
    @neuotq
    Прокрастинация
    1. Используй prefers-color-scheme, который посторается взять тему выбранную пользователем в ОС или браузере.
    2. Храни настройки своего сайта в кукис и перед отправкой клиенту делай соответсвующие изменения, тогда не будет эффекта блика.
    ИЛИ
    2.1 Экран предзагрузки, который ничего не показывает и подгружает всё, применяет всё(допустим в локалсторадже ты сохранил), потом показывает уже сам сайт.
    Ответ написан
  • Как повторно очистить поле?

    neuotq
    @neuotq
    Прокрастинация
    Вы перемудрили с кодом. Зачем заного инициализируете маску через вызов функции и тп.
    Нужно проще:
    document.addEventListener("DOMContentLoaded", () => {  
       const phoneEl = document.getElementById("textInput");
       const phoneMask = IMask(phoneEl, {    
        mask: '{+7} (#00)-000-00-00',    
        definitions: {
          '#': /[01234569]/
        },    
        lazy: false,    
        placeholderChar: ' '  
      });  
    
    document.getElementById("clearButton").onclick = function(e) {
      phoneMask.value = ""; 
     //Вернём фокус
     phoneEl.focus(); 
    }
    
    });
    Ответ написан
  • Как вывести массив в html js?

    neuotq
    @neuotq
    Прокрастинация
    Код конечно же нужно переписать:
    использовать fetch API
    разделить немного логику.
    А так, у вас ошибка, вы в цикле каждый раз переписываете document.getElementById("tbody").innerHTML
    Создайте временную переменную для строки с html и document.getElementById("tbody").innerHTMLуже после цикла, либо добавляйте через insertAdjacentHTML
    Ответ написан
    Комментировать
  • Как записать мат. операцию в переменную, а потом использовать её?

    neuotq
    @neuotq
    Прокрастинация
    Вот так, только eval обоюдо-острое оружие, потенциально могут быть дыры, поэтому то что туда передаётся должно проходить все возможные проверки.
    let operation ='*'
    let firstNumber=2;
    let secondNumber =2;
    let mul= `${firstNumber} ${operation} ${secondNumber}`;
    console.log(eval(mul));
    Ответ написан
    Комментировать
  • Как создать исключительно React или Vue приложение?

    neuotq
    @neuotq
    Прокрастинация
    Будет как вы захотите. Сам React и Vue - это прежде всего библиотеки для построения интерфейса пользователя, что конечно же часть фронта.
    Для удобства разработчика и быстрого создания веб приложений хелперы генерируют удобную структуру папок.
    Отдельный момент папка node_modules, она содержит библиотеки которые нужны для разработки самого приложения и интерфейсов, обычно в продакшн не попадает сборщик проекта берёт оттуда всё что нужно при сборке проекта.
    На выходе, в классическом случае, у фронтендера будет код js/css и готовые шаблоны(может и без них).
    Так что, у вас по умолчанию фронт это независимая штука. Даже от бекенда. Если же нужно, разработчик внутри делате запросы к api и получает нужные данные(а на бекенде уже не важно что, php).
    В целом, советую начать с чтения официальной документации, там всё кратко и по делу расписано. Да и уроков в отрытом и бесплатном доступе много.
    Ответ написан
    Комментировать
  • Существует ли библиотека для трансляции php кода в node.js?

    neuotq
    @neuotq
    Прокрастинация
    Технически сам язык конечно же можно перевести в другой, я думаю даже простенькие функции будут работать.
    НО! Дальше будет куча но. Обычной трансляцией не обоёдешься, так как много подводных камней и особенностей самого API PHP, принципов работы многих встроенных библиотек, хаков, костылей и просто приёмов которые используют люди в своих проектах и тп.
    В таком огромном и сложном проекте как Wordpress этого всего просто нереальное количество.
    Вы же понимаете часто даже код больших проектов, в рамках одного языка(любого) тяжело переводить с версии на новую версию. А тут на другой язык/платформу исполнения кода.
    Это в любом случае ручной труд, а автоматический транслятор вам только будет помогать переводить конкретные конструкции, а так огромное количество ручного труда для каждого файла/класса/функций и тп.
    Технически это возможно, но займёт огромное количество человека-часов, легче с нуля написать.
    Второй вариант найти решение с условной виртуальной машиной, которая исполняет php код внутри js окружения. Были когда-то подобные пакеты, но спроса нет и всё заглохло. Это тоже трудоёмкий процесс, нужно бежать и развивать свою такую штуку.
    Поэтому сегодня есть только условные прокси на node.js, которые запускают php скрипты на php(тем или иным способом, но исполняет их именно php).
    Поэтому мы приходим к технологии WebAssembly, там есть например проект wasmer, с помощью которого можно запускать wasmer-php. Но снова таки, это не трансляция кода, а просто запуск php в среде браузера, js тут уже чисто для управления и запуска самого wasmer...
    Ответ написан
    Комментировать
  • Как отслеживать определенной свойство в объекте vue 3?

    neuotq
    @neuotq
    Прокрастинация
    Всё просто. Используй watch на реактивном объекте
    // ...
     const obj = reactive({
          prop1: 'prop1',
          prop2: 'prop2'
        })
    watch(
          () => obj.prop1,
          (prop1, prevProp1) => {
            console.log("#######");
            console.log("Lets watch:");
            console.group();
            console.log("obj.prop1: " + prop1);
            console.log("Old prop1: " + prevProp1);
            console.groupEnd();
            console.group();
            console.log("Prop2: " + obj.prop2);
            console.groupEnd();
            console.log("End watch.");
            console.log("#######");        
          }
        )
    //...

    Вот пример:
    Ответ написан
    1 комментарий
  • Ошибка javascript, как исправить?

    neuotq
    @neuotq
    Прокрастинация
    Ох...ну если есть доступ к глобальному window, те в браузере, то можно так:
    for(var i = 1; i < image_one_loaded; i++) {
           window['image_one_loaded_value_' + i] = '';
           window['image_one_loaded_value_format_' + i] = '';
    }
    Ответ написан
  • Как проверить, если ли в массиве объект со свойством, имеющим определённое значение?

    neuotq
    @neuotq
    Прокрастинация
    Можно написать функцию с такой логикой:
    const searchName = "Login2";
    const data= [
     {
          "id": "1",
          "login": "Login1",
       },
       {
          "id": "2",
          "login": "Login2",
       }
    ];
    const hasName = (el) => el.login === searchName ;
    //Просто проверка
    console.log(data.some(hasName));
    Ответ написан
    Комментировать
  • Альтернатива load() и get() Jquery на javascript?

    neuotq
    @neuotq
    Прокрастинация
    load() и get() это всего лишь обёртка над jquery axax(), те http запросы.
    Альтернатива XMLHttpRequest, либо использовать fetch API.
    Есть ещё очень популярная библиотека(многие современном мире js её используют) Axios.
    Отличие что вы сами разруливаете логику поведения. Те вначале запрос, потом проверяете что он случился и всё ок, тогда заполняете элемент(ну как в случае get).
    Ответ написан
    1 комментарий
  • Табы в JS. Почему не работает трансформация на втором изображении?

    neuotq
    @neuotq
    Прокрастинация
    Вы пишите в коде :
    let currentArrow = document.querySelector(".tab__arrow");

    Таким образом выбирая стрелку по слишком общему селектору, попадает первая.
    Ответ написан
    3 комментария
  • Как сделать такой графический индикатор?

    neuotq
    @neuotq
    Прокрастинация
    У них скорее всего на стороне сервера генерируется и потом кешируется для отдачи, так что это не супер проблема 1000+ картинок.
    А насчёт css, то сделать легко, но без регулирования либо через ручное изменения style на элементе или через js никак.
    Ну те так:
    Ответ написан
    Комментировать